-
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: Zabawy w algorytmikę.
Date: Sun, 12 May 2013 00:31:50 +0200
Organization: ATMAN - ATM S.A.
Lines: 67
Message-ID: <kmmgso$jnh$1@node1.news.atman.pl>
References: <kmg41t$iuu$1@node2.news.atman.pl> <kmjdfe$lt2$1@speranza.aioe.org>
<4...@g...com>
<kml6fm$7ev$1@node1.news.atman.pl> <kmlqks$cgl$1@speranza.aioe.org>
NNTP-Posting-Host: 89-73-65-59.dynamic.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node1.news.atman.pl 1368311512 20209 89.73.65.59 (11 May 2013 22:31:52 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sat, 11 May 2013 22:31:52 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130328
Thunderbird/17.0.5
In-Reply-To: <kmlqks$cgl$1@speranza.aioe.org>
Xref: news-archive.icm.edu.pl pl.comp.programming:203313
[ ukryj 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
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 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
Najnowsze wątki
- 2025-01-17 Warszawa => Inżynier oprogramowania .Net <=
- 2025-01-17 Natalia z Andrychowa
- 2025-01-17 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-17 Warszawa => System Architect (Java background) <=
- 2025-01-17 Warszawa => Full Stack .Net Engineer <=
- 2025-01-17 Gliwice => IT Expert (Network Systems area) <=
- 2025-01-17 Lublin => Programista Delphi <=
- 2025-01-17 Warszawa => Developer .NET (mid) <=
- 2025-01-17 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-17 Katowice => Senior Field Sales (system ERP) <=
- 2025-01-17 Wróblewo => Analityk finansowy <=
- 2025-01-17 Żerniki => Specjalista ds. Employer Brandingu <=
- 2025-01-17 pradnica krokowa
- 2025-01-17 Warszawa => International Freight Forwarder <=
- 2025-01-17 Warszawa => Helpdesk Specialist <=