Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

Funkcja hash() - ryzyko kolizji



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Python
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
Luke



Doczy: 17 Cze 2007
Posty: 1893
Skd: Szczecin

PostWysany: Czw Gru 17, 2015 10:16 am  OP    Temat postu: Funkcja hash() - ryzyko kolizji Odpowiedz z cytatem Pisownia

W programie potrzebuj przechowywa informacje powizane z wieloma (setkami tysicy, milionami) stanami planszy. Do tego celu wykorzystuj sownik (dict).

Kod:
class BoardState(object):
    def __init__(self, ...):
        # ...
        self.board = [ [ None ] * self.cols for _ in xrange(self.rows) ]

    def __hash__(self):
        board_tuple = tuple([ tuple(row) for row in self.board ])
        return hash(board_tuple)

    # ...


Pierwszym pomysem byo indeksowanie sownika obiekami BoardState. Jednak obiektw BoardState przechowywanych w sowniku nie wykorzystuj do innych celw, ni pniejsze wycignicie danych. Doszedem wic do wniosku, e mog oszczdzi pami indeksujc sownik za pomoc hasha z obiektu BoardState hash(board_state) (tworzonego wyej zdefiniowan metod __hash__).

Ta druga wersja zuywa 4 razy mniej pamici, jednak zastanawiam si, jakie jest ryzyko wystpienia kolizji - e dwa rne obiekty BoardState (z rnymi planszami w rodku) otrzymaj ten sam hasz.

_________________
Moje projekty | Endless Horse Run game
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora
hurgadion



Doczy: 06 Kwi 2011
Posty: 853
Skd: Web :)

PostWysany: Czw Sty 07, 2016 10:58 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ja chyba bym zrobi inaczej, o ile to moliwe (pomys rzucam ot tak, nie znam dobrze Twojego zagadnienia)... Skoro tych stanw jest duo tak jak piszesz, to moe lepiej przechowywa stany (lub pewn ich cz) w jakiej lokalnej (a moe nawet mniej lokalnej) bazie danych wsppracujcej z Pythonem, z tego co wiem, to Python ma modu umoliwiajcy czenie z SQlite... Pracuje to cakiem niele... Testowaem to nawet, ale tylko na niewielkiej iloci danych... Miaem testowa na wikszej, ale udao mi si rozwiza problem prociej... :) Pozdrawiam :)
_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Luke



Doczy: 17 Cze 2007
Posty: 1893
Skd: Szczecin

PostWysany: Sro Sty 13, 2016 12:44 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Dawno i nie prawda, ale komu moe si przyda informacja, jak to, przynajmniej czciowo, rozwizaem.
A mianowicie - skorzystaem z ZODB, obiektowej bazy danych dla Pythona.
Ostatecznie i tak okazaa si zbyt mao wydajna (operacje zwalniay przy jeszcze wikszej iloci danych, ale prosz sobie nie myle, e to wina bazy - moliwe, e to np. dysk twardy by wskim gardem albo sama ogromna ilo danych).
Zdecydowaem si wic na aproksymacj sieci neuronow.

_________________
Moje projekty | Endless Horse Run game
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora
hurgadion



Doczy: 06 Kwi 2011
Posty: 853
Skd: Web :)

PostWysany: Sro Sty 13, 2016 5:25 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ciekawe :) Miaem co nieco wsplnego z AI, najbardziej ciekawi mnie logika rozmyta (ciut te algorytmy genetyczne i systemy hybrydowe), widz w niej potencja... logika zerojedynkowa mnie niestety nie przekonuje, w yciu nie ma logiki zerojedynkowej, w logice standardowej nie ma kluczowego pojcia "nie wiem" oraz innych porednich stanw PRAWDY i FASZU... :) nawet kiedy miaem pomys implementacji pewnych rozmytych ukadw, ale poszed do kosza... na razie ucz si programowa i implementowa algorytmy w rnych jzykach... :)
_________________
miasto nauki praktycznej
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo Odwied stron autora Numer GG
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Python Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.17233 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |