🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27201

Re: Python a hashmapa

#27201
From: Sebastian Kaliszewski
Date: Wed, 13 Jan 2010 16:38
56 lines
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!news
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>

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