https://github.com/andreip/t1-ml
https://github.com/andreip/t1-ml
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/andreip/t1-ml
- Owner: andreip
- Created: 2014-03-29T00:28:29.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2014-04-01T11:06:30.000Z (about 12 years ago)
- Last Synced: 2025-02-12T12:57:00.556Z (over 1 year ago)
- Language: D
- Size: 750 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
Awesome Lists containing this project
README
# Petre Andrei, 342 C3
Idei reprezentari stari
=======================
L - #linii
C - #coloane
Am inclus si simetria ca potential de utilizare insa n-am folosit-o fiindca era
mai dificil de programat.
Folodind idei din [1], am decis sa aleg urmatoarele strategii (calcule facute
pentru o tabla generica de L x C):
- folosind Skyline, voi retine doar o lista de diferente intre coloane adiacente
e.g. fie hi, hj doua coloane adiacente, atunci D = |hi - hj|
- folosind Resolution, voi considera ca de la un prag in colo ales, Prag, nu mai
conteaza diferenta D din Skyline, astfel ea devine
D = min(Prag, |hi - hj|), unde Prag e hardcodat la o valoare, e.g. Prag = 7.
- folosind Simetria starilor voi putea reduce numarul de stari retinute la
jumatate (foarte importanta!).
Stari tabla, general
====================
* numarul maxim de stari ar fi 2^(L*C), fiindca fiecare celula poate fi ocupata
sau goala.
* folosind Skyline, retinem doar D = |hi - hj|, deci vom avea maxim
L^(C-1) stari, rationand ca pentru doua hi,hj coloane adiacente avem maxim L
valori
* folosind Prag, reducem la cel mult 7^(C-1) stari, pentru ca L nu poate depasii
acel Prag (nu consideram utila informatia dincolo de un prag).
* folosind Simetria, rezulta 7^(C-1) / 2 stari pe tabla.
Concret, numar stari, inclusiv piese
====================================
Pentru ca in implementare folosesc numai prima tehnica (Skyline),
pentru maxim LxC = 10x6, avem un numar de stari 10^5 ~ 2^16-2^17 maxim stari.
Avem 7 piese (A-G):
=> o piesa are 2^2 miscari stanga (medie) x 2^2 rotiri = 2^4 miscari
=> maxim 2^3 piese x 2^4 miscari fiecare = 2^7 stari piese
Total
-----
=> Maxim stari folosind ideile prezentate este:
2^7 stari piese * 2^17 stari tabla = 2^24 stari totale
, reprezentabil intr-un calculator modern fara prea mari batai de cap.
Grafic, plot octave
===================
Fisierele implicate sunt in directorul grafice/.
Am folosit myfun.m si urmatoarele comenzi:
>>> load score2
>>> length(score2)
ans = 100000
>>> plot(1:length(score2), score2, 'bx')
>>> hold on
>>> avgs_line = myfun(score2);
>>> length(avgs_line)
ans = 1000
>>> plot(linspace(1,length(score2),length(avgs_line)), avgs_line, 'r-')
Am reusit sa rulez pentru 100k date doar pentru dist2 si am adaugat un grafic
in directorul grafice/.
Voi mai adauga un fisier score3 cu 100k date sau mai mult la adresa[2], cu
aceeasi arhiva trimisa acum, aceiasi parametri alpha,gamma,delta.
[1]: http://www.cs.huji.ac.il/~lirchi/AIP/Tetris3.pdf
[2]: http://swarm.cs.pub.ro/~anpetre/.ml-t1/