-
Data: 2013-05-12 00:31:50
Temat: Re: Zabawy w algorytmikę.
Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 2013-05-11 18:12, Vax pisze:
> W dniu 2013-05-11 12:28, bartekltg pisze: [...]
>
> Zgoda w miejscach w których mowa o kolejności i parzystości, bo tak
> naprawdę wykonujemy serię XOR, które są naprzemienne i odwracalne.
>
> Haczyk polega na tym, że już wstępnie maksymalna liczbę iteracji
> możemy ograniczyć do 2^(min(M,N)) gdzie min() zwraca mniejszy z
> argumentów.
> Dlaczego? Ano dlatego, że aby zadanie w ogóle zostało spełnione to
> obraz zapalonych/zgaszonych komórek po wykonaniu "klików" na
> pierwszym rzędzie determinuje wymagane "kliki" rzędu 2, ten zaś
> narzuca kolejny rząd i tak dalej. A w ostatnim rzędzie przekonujemy
> się o ewentualnym sukcesie lub jego braku.
Opisany ponizej algorytm dla n*m>64 jest jednak O((2^n)*m) (dla m>=n)
na współczesnych maszynach.
Dla samego znalezienia rozwiązania moj algorytm
jest znacznie lepszy, działa wialomianowo.
Dla znalezienia rozwiązania optymalnego jest ciut gorzej,
trzeba dołożyć do tego xorowanie z jądrem (każdą kombinacją),
które może być duże. Ale jak duże?
Łatwo pokazać, że wymiar jądra jest mniejszy niż min(n,m).
Na dzień dobry mamy więc taką samą złożoność.
Ale to górne ograniczenie, może być znacznie lepiej.
Pierwsza tabelka z ostatniej strony pokazuje, że
w co drugim przypadku w ogole nie ma jądra, całą
wykładnicza zabawa odpada! W pozostałych przypadkach <22
tylko raz dobijamy do granicy (dla n=4).
Co więcej, stwierdzenie niemożności rozwiązania danej konfiguracji
jest wialomianowe. Jeśli rozwiązania nie ma, wiemy to przed
uruchomieniem wykładniczej części.
Twoj algorytm będzie szybszy w przypadku, gdy jedna z liczb
jest bardzo małą.
Algorytm zmatematyzowany może się z nim ścigać, jeśli macierze
i ich rozkład zostaną wyznaczone w czasie kompilacji.
Dla m,n rzedu kilkanaście, mniejsze kilkadziesiąt, nie jest
to problem techniczny ani pamięciowy.
> Następnie możemy się bawić w pomijanie układów symetrycznych, np.
> 11000 został już przetworzony jako 00011 itd. itp. - to póki co bez
> zaprzęgania "aparatu matematycznego" ;)
Jednak aparat dał nam nieco;>
Sztuczkę z "xor" == "+" (w Z_2) da się stosować w obu wersjach.
> do zapisania każdej serii "kliknięć" to mi zazwyczaj wystarczy INT o
> długości tylu bitów, ile pól liczy krótszy z boków, i nawet nie muszę
> mieć w pamięci miejsca na całą kopię tablicy wejściowej
Oczywista oczywistość. Tylko pamiętaj, żę jeden 64 bitowy int starcza
na m=n <=8. Mało.
pzdr
bartekltg
Następne wpisy z tego wątku
- 12.05.13 01:59 M.M.
- 12.05.13 15:31 Vax
- 12.05.13 16:15 Vax
- 12.05.13 16:44 bartekltg
- 12.05.13 17:14 Vax
- 12.05.13 18:23 A.L.
- 12.05.13 18:40 bartekltg
- 12.05.13 18:44 A.L.
- 12.05.13 19:24 bartekltg
- 12.05.13 19:48 A.L.
- 12.05.13 20:02 bartekltg
- 12.05.13 21:21 Vax
- 12.05.13 22:49 bartekltg
- 12.05.13 22:51 bartekltg
- 12.05.13 23:01 Vax
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-01 Rambo 2024. Co z radio-stopem
- 2024-12-01 Pijani kierowcy
- 2024-12-01 "Chciałem zamówić kurs tym"
- 2024-11-30 Windykatorzy ścigają spadkobierców z mandat nieboszczyka za przekroczenie prędkości???
- 2024-11-30 Łódź => Technical Artist <=
- 2024-11-30 Lublin => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-30 Warszawa => Microsoft Dynamics 365 Business Central Developer <=
- 2024-11-30 Bieruń => Team Lead / Tribe Lead FrontEnd <=
- 2024-11-30 Zielona Góra => Senior PHP Symfony Developer <=
- 2024-11-30 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-30 Lublin => Spedytor międzynarodowy <=
- 2024-11-30 Warszawa => Mid IT Recruiter <=
- 2024-11-30 Warszawa => Fullstack Developer <=
- 2024-11-30 Żerniki => Dyspozytor Międzynarodowy <=
- 2024-11-30 Warszawa => System Architect (background deweloperski w Java) <=