-
Data: 2012-11-24 12:36:55
Temat: Re: Potyczki
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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-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?
- 2025-12-22 Unijne KOOOORWY mówią że WYCOFUJĄ się z zakazu rejestracji elektryków
- 2025-12-22 Białystok => ERP Microsoft Dynamics 365 Commerce Consultant <=
- 2025-12-22 Lublin => Project Manager <=
- 2025-12-22 Warszawa => Project Manager (AI and innovation) <=
- 2025-12-22 TVN oczekuje: Za Ziobrem BĘDZIE czerwona nota Interpolu! Czy może Interpol da drugi raz (w) dupę? ;-)
- 2025-12-21 Norweski przepis na pozbywanie się uchodźców odwiedzających kraj z którego "uciekli"




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