Article View: pl.comp.lang.python
Article #27201Re: Python a hashmapa
From: Sebastian Kaliszewski
Date: Wed, 13 Jan 2010 16:38
Date: Wed, 13 Jan 2010 16:38
56 lines
3734 bytes
3734 bytes
wodzik wrote: > On 2010-01-09 23:24, Stachu 'Dozzie' K. wrote: > >> To ze szkoły powinieneś wiedzieć że to nie do końca daje złożoność O(1). > > Powiedz to moim wykładowcom, albo chociaż by Thomasowi Cormenowi. > Cytując z książki "Wprowadzenie do algorytmów": > -"Przy rozsądnych założeniach można wykazać, że oczekiwany czas > wyszukiwania elementu z tablicy z haszowaniem wynosi O(1)." > czy: > -"średni czas działania podstawowych operacji słownikowych na tablicy z > haszowaniem wynosi O(1)." Co jest w ogólności kłamstwem. Choć w realnych sytuacjach jest OK (choć w realnych sytuacjach można by formalnie poprawnie napisać że dostęp do dowolnego elementu do realnej listy to O(1) tylko stała czasowa duża :) (Pamięć komputerów jest ograniczona przez stałą, przeszukanie jest jest więc formalnie O(1) -- oczywiście mało to przydatne do czegokolwiek, ale formalnie jest OK. :) ) Wszystkie te O(1) działają tylko i wyłącznie dzięki temu, że pamięć jest skończona, więc długość reprezentacji dowolnego indeksu / hasha itp jest twardo ograniczona z góry niewielką stałą (w dzisiejszych czasach stałą to jest 64). Bo tan ka prawdę to zarówno odwołanie do tablicy hashującej czy nawet do dowlonej pozycji w zwykłej tablicy to ma koszt nie O(1) tylko O(log n). Bo nie ma cudów i zapis dowolnego indeksu do struktury długości n musi mieć zająć log n. A że sięgnięcie pod dany indeks w większości przypadków wymaga "obejrzenia" całości jego zapisu to jest ograniczone z dołu przez O(log n). W dzisiejszych komputerach korzystamy z tego, że podstawa tego log jest duża (2**32 lub 2**64) i dlatego w praktyce zwija się to do O(1). > Oczywiście można czepiać się, że czasami w przypadku kilku elementów o 2 > takich samych kluczach będzie trzeba wykonać jakąś dodatkową operacje, > jednak w porównaniu z złożonością liniową O(n) dla większej ilości > elementów jest to na tyle nieistotne, że przyjmuje się, że złożoność > jest O(1), a nie np. O(1.3) Jak już inni napisali, O(1) == O(1.3) == O(103453123) Nawet i przy rozsądnych założeniach można mieć pecha i dostać O(n). To O(1) o jakim pisze Cormen to koszt zamortyzowany pzdr \SK -- "Never underestimate the power of human stupidity" -- L. Lang -- http://www.tajga.org -- (some photos from my travels)
Technical Details
Message-ID:
<ag6127-2bm.ln1@bozon.softax.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!bozon.softax.pl!newsReferences:
<hi9a48$c1b$1@zeus.man.szczecin.pl> <20100109102348.d563af8e.natural-born-killer@dontmailme.com> <hi9nmc$iqv$1@zeus.man.szczecin.pl> <hi9rbf$1ke$2@solani.org> <hiapsg$4mg$1@zeus.man.szczecin.pl> <hiavmd$i2o$1@solani.org> <hib2ff$96o$1@zeus.man.szczecin.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.belwue.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!bozon.softax.pl!news From: Sebastian Kaliszewski <s.bez_spamu@remove.this.informa.and.that.pl> Newsgroups: pl.comp.lang.python Subject: Re: Python a hashmapa Date: Wed, 13 Jan 2010 17:38:25 +0100 Organization: TP - http://www.tp.pl/ Lines: 56 Message-ID: <ag6127-2bm.ln1@bozon.softax.pl> References: <hi9a48$c1b$1@zeus.man.szczecin.pl> <20100109102348.d563af8e.natural-born-killer@dontmailme.com> <hi9nmc$iqv$1@zeus.man.szczecin.pl> <hi9rbf$1ke$2@solani.org> <hiapsg$4mg$1@zeus.man.szczecin.pl> <hiavmd$i2o$1@solani.org> <hib2ff$96o$1@zeus.man.szczecin.pl> NNTP-Posting-Host: 83.18.189.42 Mime-Version: 1.0 X-Trace: atlantis.news.neostrada.pl 1263398552 21357 83.18.189.42 (13 Jan 2010 16:02:32 GMT) X-Complaints-To: usenet@news.neostrada.pl NNTP-Posting-Date: Wed, 13 Jan 2010 16:02:32 +0000 (UTC) User-Agent: Thunderbird 2.0.0.23 (X11/20090817) In-Reply-To: <hib2ff$96o$1@zeus.man.szczecin.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit