[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

jak to wszystko upchnac w 30 GB

Subversor

3/24/2007 3:45:00 PM

Witam

Problem wydawalo by sie jest prosty, otoz jest pewna sytuacja:

- sa wyscigi samochodow
- rodzaji samochodow jest np 65 //pomiajamy ich parametry itd.
- do wyscigu staja po 4 samochody

wyscigow jest.. tyle ile kombinacji mozliwych samochodow czyli np. (1 2 3 4)
(1 2 3 5) ale tez (4 4 3 3)) i tych kombinacji jest ponad 800 000 (to
jeszcze nie duzo)
glownym problemem ze te wyscigi od bywaja sie na roznych torach i tych torow
jest dosyc DUZO ( ponad 2 miliony) i kazdy ma swoja specyfike

moim celem jest zapamietanie wszystkich wynikow (lub prawie wszystkich)
wyscigow, jako ze 800 tys x 2 miliony daje dosyc duza liczbe a na dysku mam
"troche" mniej wolnego miejsca
(chcialbym sie zmiescic w okolo 30 GB, 50 jeszcze bym przebolal).

Problem polega tez na tym ze nie mam zbytnio czasu na testy (gdyz bedzie
tylko prawdopodobnie jedna proba i marze o tym zeby ta proba zajela rosadny
czas )
i nie wiem jakie wyniki beda wychodzily (nie potrafie ich nawet
przewidziec) - (byc moze zawsze bedzie wygrywal samochod nr 13 :P, nastepnie
17 itd.)
ale musze zalozyc bardziej pesymistycznie ze wyniki beda rozne (ale nie
przypadkowe)

Byc moze niektorzy zastanawiaja sie dlaczego np. nie wygrywa kazdego wyscigu
np. 13 skoro jest najlepsza,
otoz (pomijam cala specyfike wyscigu) w syscigu np. 13 1 2 3 wygrywa 13 w 13
4 5 6 tez 13 (no bo jest statystycznie najlepsza)
ale w wyscigach np. 13 1 2 6 wygrywa 1 (dlaczego? otoz zachodza pewne
interakcje miedzy pojazdami i 6 dla pewna moc 1 bo 6 nie lubi 13 tak w
uproszeniu)

aha ,zapomnialem o w sumie malo waznym szczegole wyscig moze skonczyc sie
porazka wszystkich 4 samochodow (wypadek)

Moja wyobrazenie o zapisie tego.
jest kalasa:

Class Tor{
string nazwa:
inne duperele...
Wyscigi wscigi;
}

i to ja zapisuje na dysk (czyli cos kolo 2 miliony plikow ;) )
przeznaczam 30 GB na te pliki czyli na plik przypada 15kb

czyli musze upchnac w objekcie wyscigi (15kb) 800 tys wynikow, jezeli to nie
mozliwe
chce upchnac jak najwiecej. (reszte na oko :P czy jak to mowia
statystycznie)


Moja wstepna idea
mam 800 000 wynikow

int[] statystycznie najlepsze[66] ->poukladane wg. liczby wygranych (czyli
nasza 13 jest na poczatku)

boolean[][] przegrane=new boolean[65][66];->zapisane z kim wygrywa dany
rodzaj.czyli prawdopodobnie 13 bedzie miala ze wygrywala z wszystkimi
rodzajami
ale
niestety druga (17) z kolei tez bedzie miala wszystkie 66 true nawet byc
moze 13 (bo w jakism wyscigu byc moze z nia wygra)
(wiec
dla pierwszych ilus bedzie to to samo co tablica "statystycznie najlepsze"

tablica wyjatkow - w niej beda trzymane wyjatki (bedzie ich tyle ile mi sie
zmiesci w tych 15 kb) i np. te wyscigi 17 w ktorych wygrala ona z 13,
w tablicy tej beda wg. ilosci wygranych, czyli
wyjatki najzadziej wygrywajacego samochodu(ale jednak czasem wygrywajacego)
zostana niestety
prawodpodobnie pominiete.


na razie tylko tyle
zasada rozstrzygania wyniku jest prosta biezemy nasza 4 sprawdzamy czy nie
jest na liscie wyjatkow, jezeli nie, to badamy jatablicca "pzegrane", a
nastepnie ostatecznie tablica "statystycznie najlepsze"


jak tak na to wszystko patrze to dochodze do wniosku ze tych wyjatkow za
duzo sie nie zmiesci (troche pewnei ponad 1000 a to malo)
i mysle ze dalo by sie cos tu jeszcze wrzucic jaks pomocnicza tabele czy cos
zeby pomoglo przy selekcji wygrnego. (odbycie wyscigu jest nie mozliwe z
przyczyn technicznych, gdyz wyscigi z poprzednich
wplywaja na parametry samochodow w danym torze, wiec musial bym odbyc duzo
wiecej wyscigow)




macie moze jakies pomysly, sugestie, cokolwiek.
prawde mowiac kazda uwaga bedzie milie widziana


Pozdrawiam
Subversor


5 Answers

Rafal Dabrowa

3/25/2007 9:43:00 AM

0

Subversor wrote:
> Problem wydawalo by sie jest prosty, otoz jest pewna sytuacja:
>
> - sa wyscigi samochodow
> - rodzaji samochodow jest np 65 //pomiajamy ich parametry itd.
> - do wyscigu staja po 4 samochody
>
> wyscigow jest.. tyle ile kombinacji mozliwych samochodow czyli np. (1 2 3 4)
> (1 2 3 5) ale tez (4 4 3 3)) i tych kombinacji jest ponad 800 000 (to
> jeszcze nie duzo)

Na pewno 800 000 ? 65^4 to oko3o 17 mln.

> glownym problemem ze te wyscigi od bywaja sie na roznych torach i tych torow
> jest dosyc DUZO ( ponad 2 miliony) i kazdy ma swoja specyfike
>
> moim celem jest zapamietanie wszystkich wynikow (lub prawie wszystkich)
> wyscigow, jako ze 800 tys x 2 miliony daje dosyc duza liczbe a na dysku mam
> "troche" mniej wolnego miejsca
> (chcialbym sie zmiescic w okolo 30 GB, 50 jeszcze bym przebolal).
>
> Problem polega tez na tym ze nie mam zbytnio czasu na testy (gdyz bedzie
> tylko prawdopodobnie jedna proba i marze o tym zeby ta proba zajela rosadny
> czas )
> i nie wiem jakie wyniki beda wychodzily (nie potrafie ich nawet
> przewidziec) - (byc moze zawsze bedzie wygrywal samochod nr 13 :P, nastepnie
> 17 itd.)
> ale musze zalozyc bardziej pesymistycznie ze wyniki beda rozne (ale nie
> przypadkowe)

A gdyby? kompresowa3 te wyniki ? Np. deflate (http://www...)
Je?li wyniki s? mocno powtarzalne, wspó3czynnik kompresji powinien
bya do?a du?y.


--
Rafal

Jacek Czerwinski

3/25/2007 9:57:00 AM

0

Dnia Sun, 25 Mar 2007 11:42:43 +0200, Rafal Dabrowa napisa3(a):


>> i nie wiem jakie wyniki beda wychodzily (nie potrafie ich nawet
>> przewidziec) - (byc moze zawsze bedzie wygrywal samochod nr 13 :P, nastepnie
>> 17 itd.)
Jak nie wiesz jakie bed? wynikki, powine? wynaj?a sedziego pi3karskiego.

>
> A gdyby? kompresowa3 te wyniki ? Np. deflate (http://www...)
> Je?li wyniki s? mocno powtarzalne, wspó3czynnik kompresji powinien
> bya do?a du?y.

Przy dostepie sekwencyjnym, dodaj?c do tego filozofie skompresowanego
strumienia (w locie) nie zje za du?o RAM-u.
Gorzej, gdyby skakaa po zbiorze - trzeba by de facto wymy?lea plikow? baze
danych z m?dr? (pasujac? do problemu) definicj? bloku/rekordu

Subversor

3/25/2007 9:57:00 AM

0


"Rafal Dabrowa" <rdsbrows@poczts.onet.pl> wrote in message
news:eu5g7t$o7p$1@atlantis.news.tpi.pl...

>> wyscigow jest.. tyle ile kombinacji mozliwych samochodow czyli np. (1 2 3
>> 4)
>> (1 2 3 5) ale tez (4 4 3 3)) i tych kombinacji jest ponad 800 000 (to
>> jeszcze nie duzo)
>
> Na pewno 800 000 ? 65^4 to oko³o 17 mln.

na pewno 800 000, to nie jest 65 ^4 gdyz, jezeli jest wyscig 1 2 3 4 , to
nie ma juz wyscigu 4 3 2 1 , to jest ten sam wyscig



> A gdyby¶ kompresowa³ te wyniki ? Np. deflate (http://www...)
> Je¶li wyniki s± mocno powtarzalne, wspó³czynnik kompresji powinien
> byæ do¶æ du¿y.
>

hm...to jest pewna mysl, prawde mowiac nie zastanawialem sie jakie
wspolczynnikikompresji sa osiagalne,
bo jesli by chciec kompresowac cale dane (bez trikow) to musialby wynoscic
cos okolo 53
a z drugiej strony mysle ze powtarzalnosc bedzie duza, gdyz moge zapisac po
koleji nie numer wygranego np. z wyscigu 54 34 32 12 np. 54
tylko to moze byc tablica 0-4, 0 nikt nie wygral, 1-54, itd.

Poczytam o tym
Dzieki za sugestie

Pozdrawiam
Subversor


Subversor

3/25/2007 10:07:00 AM

0


"Jacek Czerwinski" <x@y.z.pl> wrote in message
news:1ah9577u3tvmo.123z9erzzkxx3.dlg@40tude.net...
> Dnia Sun, 25 Mar 2007 11:42:43 +0200, Rafal Dabrowa napisa³(a):
>


>>> i nie wiem jakie wyniki beda wychodzily (nie potrafie ich nawet
>>> przewidziec) - (byc moze zawsze bedzie wygrywal samochod nr 13 :P,
>>> nastepnie
>>> 17 itd.)
> Jak nie wiesz jakie bêd± wynikki, powine¶ wynaj±æ sêdziego pi³karskiego.
>

albo powinien odbyc sie mecz, poznam wtedy wynik ;)


> Przy dostêpie sekwencyjnym, dodaj±c do tego filozofiê skompresowanego
> strumienia (w locie) nie zje za du¿o RAM-u.
> Gorzej, gdyby skakaæ po zbiorze - trzeba by de facto wymy¶leæ plikow± bazê
> danych z m±dr± (pasujac± do problemu) definicj± bloku/rekordu

hm...przy zapisie na pewno nie bedzie skokow, przy odczycie na pewno.
kompresje sobie zostawie na koniec, juz jestem bliski rozwiazania tego :)
uzywajac tylko sprytnie zapisane wyniki, gdyz jak mowilem tak na prawde nie
musze w bazie miec zapisanyc 100% wynikow
biorac pod uwage ze jest 2mln torow, i 800 000 wyscigow na torze, jezeli
sproboje wziac 1 mln. losowych wyscigow i jezeli mam zapisane 90% wynikow
moj blad nie bedzie taki duzy.(chyba:P)

Pozdrawiam
Subversor


Jacek Czerwinski

3/25/2007 10:39:00 AM

0

Dnia Sun, 25 Mar 2007 11:07:15 +0100, Subversor napisa3(a):

> "Jacek Czerwinski" <x@y.z.pl> wrote in message
> news:1ah9577u3tvmo.123z9erzzkxx3.dlg@40tude.net...
>> Dnia Sun, 25 Mar 2007 11:42:43 +0200, Rafal Dabrowa napisa3(a):
>>
>
>
>>>> i nie wiem jakie wyniki beda wychodzily (nie potrafie ich nawet
>>>> przewidziec) - (byc moze zawsze bedzie wygrywal samochod nr 13 :P,
>>>> nastepnie
>>>> 17 itd.)
>> Jak nie wiesz jakie bed? wynikki, powine? wynaj?a sedziego pi3karskiego.
>>
>
> albo powinien odbyc sie mecz, poznam wtedy wynik ;)
>
>
>> Przy dostepie sekwencyjnym, dodaj?c do tego filozofie skompresowanego
>> strumienia (w locie) nie zje za du?o RAM-u.
>> Gorzej, gdyby skakaa po zbiorze - trzeba by de facto wymy?lea plikow? baze
>> danych z m?dr? (pasujac? do problemu) definicj? bloku/rekordu
>
> hm...przy zapisie na pewno nie bedzie skokow, przy odczycie na pewno.
> kompresje sobie zostawie na koniec, juz jestem bliski rozwiazania tego :)
> uzywajac tylko sprytnie zapisane wyniki, gdyz jak mowilem tak na prawde nie
> musze w bazie miec zapisanyc 100% wynikow
> biorac pod uwage ze jest 2mln torow, i 800 000 wyscigow na torze, jezeli
> sproboje wziac 1 mln. losowych wyscigow i jezeli mam zapisane 90% wynikow
> moj blad nie bedzie taki duzy.(chyba:P)
To sie nazywa heurystyka (algorytmy heurystyczne) i w optymalizacji czesto
wystepuje. |wiadomie traci sie cze?a drzewa roziw??an (bo jest wielkie),
maj? uzasadnione prawdopodobnienstwo, ?e nie traci sie optymalnych
rozwi?zan.

Pytanie testowe: czy stracia/odrzucia na ka?dym poziomie drzewa rozwi?zan
10% wyników, to du?o czy ma3o ?

Jest na to odpowiednia teoria, papierowe ksi??aki (równie? po polsku) itd.
jest to kolejny obszar, gdzie warto poczytaa zamiast bic mur g3ow?. To
twoje <b>chyba</b> dookre?lisz sobie do bólu.

Wybacz, na?cie lat po studiach to ju? szczegó3ów nie wy3o?e ;-)