-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: bartekltg <b...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Potyczki
Date: Sat, 24 Nov 2012 12:36:55 +0100
Organization: ATMAN - ATM S.A.
Lines: 73
Message-ID: <k8qbgp$ls0$1@node1.news.atman.pl>
References: <k8frhm$5pg$1@node1.news.atman.pl>
<50abbc9e$0$1214$65785112@news.neostrada.pl>
<k8p9ei$h43$1@mx1.internetia.pl>
NNTP-Posting-Host: 144-mi3-6.acn.waw.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1353757017 22400 85.222.69.144 (24 Nov 2012 11:36:57
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sat, 24 Nov 2012 11:36:57 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121026
Thunderbird/16.0.2
In-Reply-To: <k8p9ei$h43$1@mx1.internetia.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:201166
[ ukryj nagłówki ]W dniu 2012-11-24 02:49, Michoo pisze:
> On 20.11.2012 18:23, slawek wrote:
>
>> Aby nie być posądzanym o niekonstruktywną krytykę zapodam przykład (ktoś
>> chciał informatycznych wyzwań, żeby coś ciekawego było itd.) - to takie
>> zadanko:
>
> W ten sposób usunąłeś z zadanka jeden z ciekawych elementów, czyli "o co
> tu chodzi".
>
>>
>> "Dany jest plik długości 2 gigabajtów (tj. 2*1024*1024*1024). Wśród
>> wszystkich możliwych podciągów 16-bajtowych (których jest 2**31 - 2^4 +
>> 1, bo wybieramy kolejne bajty) znaleźć taki, który najczęściej występuje
>> w tym pliku. Uwaga: dane w pliku /mogą/ być zupełnie przypadkowe, może
>> też cały plik być wypełniony zerami itd. itp. - wszystkie złośliwe
>> przypadki dozwolone - tzn. nie wolno zgadywać, trzeba sprawdzić.
>> Premiowane będą rozwiązania szybkie i oszczędzające pamięć (zakładamy że
>> mamy tylko 512 MB RAM do dyspozycji)."
>
> Mamy problem znalezienia dominanty w zbiorze liczb 16 bajtowych. Jeżeli
> dobrze szacuję (a nie chce mi się poświęcać na to zadanko za dużo czasu):
> - dla działania w miejscu mamy O(n^2)
> - dla dodatkowej pamięci na dysku w rozmiarze 16*n schodzimy do
> O(n*log(n)) (Ale z uwzględnieniem losowych odwołań do dysku)
> - dla dodatkowej pamięci na dysku w rozmiarze 2*16*n schodzimy do
> O(n*log(n)) (Z sekwencyjnym dostępem, więc wielokrotnie szybciej niż w
> poprzednim przypadku.)
> n to oczywiście liczba liczb w ciągu
Być może opisuje to samo, co Ty w ostatnim punkcie.
Mając dodatkową pamięć dysku równo pierwotnej tablicy
(a tak naprawdę 0.5) możemy posortować tablicę
w 4 przebiegach _sekwencyjnego_ odczytu/zapisu.
Dominantę w posortowanej tablicy znajdujemy już
liniowo i szybko.
Jak sortujemy: pobieramy paczki po 512MB (albo mnijsze,
jeśli nasze 512MB jest sztywne i nie możemy dodać tym
czegoś lon(n)), sortujemy w RAM czymkolwiek sprawnym.
Mamy 8 posortowanych fragmentów pliku. Łączymy je mergesortem.
w 4, w 2, i w końcu w posortowany.
Co istotne, merga robimy nie bezpośrednio na dysku, ale na
buforach w ramie. Pobieramy odcinki po jakies 100MB,
kręcimy procedurą w mergesort, jak któryś bufor się wyczerpie,
napełniamy go ponownie kolejnymi danymi z dysku.
Dzięki temu czytamy sekwencyjnie, dysk nie lata ciągle np między
początkiem a środkiem pliku.
Niestety, nadal n log (n) i n*log(n/|RAM|) operacji (Sekwencyjnych)
na dysku, ale równoważnych przesłaniu tych kilkudziesięciu GB
- robialne.
BTW. w Cormenie chyba były algorytmy 'sortowanie zewnętrznego'.
Może warto zajrzeć, bo będzie coś sprytniejszego.
Kołaczą mi się sztuczki ze statystyką i nie jestem pewien,
czy nie da się tego zrobić lepiej. Ale ciężko będzie,
5 przbiegów po dysku to podejrzewam minimum.
W koncu nawet log(n) jest większe.
pzdr
bartek
Następne wpisy z tego wątku
- 24.11.12 12:53 bartekltg
- 24.11.12 12:54 PK
- 24.11.12 13:02 Roman W
- 24.11.12 13:04 bartekltg
- 24.11.12 13:08 Roman W
- 24.11.12 13:09 Roman W
- 24.11.12 13:09 e...@g...com
- 24.11.12 13:11 Roman W
- 24.11.12 13:11 Michoo
- 24.11.12 13:14 Michoo
- 24.11.12 13:16 e...@g...com
- 24.11.12 13:18 bartekltg
- 24.11.12 13:37 slawek
- 24.11.12 13:39 Michoo
- 24.11.12 13:40 slawek
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-25 Finlandia przywraca swastykę
- 2025-12-25 Skuteczność wymiaru sprawiedliwości
- 2025-12-24 Felgi
- 2025-12-24 2,5 x więcej niż Li-Ion
- 2025-12-24 No i kolejny ograniczony
- 2025-12-24 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=
- 2025-12-24 New York Times zagrożeniem bezpieczeństwa narodowego USA - POTUS D. Trump
- 2025-12-24 Podżeganie?
- 2025-12-24 => Senior Algorithm Developer (Java/Kotlin) <=
- 2025-12-24 otwarcie drugiej obwodnicy Trójmiasta
- 2025-12-24 Tfu! Przeklety prostokąt (czyli UPS i "sinus modyfikowany")
- 2025-12-23 Prezent dla kierowców od prezydenta Nawrockiego
- 2025-12-23 Warszawa => Asystent ds. Sprzedaży i Rozwoju Klienta <=
- 2025-12-23 Warszawa => Senior IT Recruitment Consultant <=
- 2025-12-22 czy wiedziałeś że?




7 pułapek i okazji - zobacz co cię czeka podczas kupna mieszkania na wynajem