FANDOM


Przenosimy się na nonsa.pl!

Po ponad trzynastu latach na serwerach Wikii, otrzymaliśmy niespodziewaną wiadomość – Wikia/Fandom zdecydowała o całkowitym usunięciu Nonsensopedii.
Czas na wyniesienie się stąd mamy do 21 kwietnia. Tego dnia strona nonsensopedia.wikia.com przestanie działać. Administracji nie zostało w takiej sytuacji zbyt wiele opcji. Doszliśmy do wniosku, że jedynym sensownym wyjściem jest przeniesienie się na nowy, niezależny hosting.

Ten artykuł znajdziesz na nowej Nonsensopedii tutaj.
Przenosimy się na nonsa.pl!

Po ponad trzynastu latach na serwerach Wikii, otrzymaliśmy niespodziewaną wiadomość – Wikia/Fandom zdecydowała o całkowitym usunięciu Nonsensopedii.
Czas na wyniesienie się stąd mamy do 21 kwietnia. Tego dnia strona nonsensopedia.wikia.com przestanie działać. Administracji nie zostało w takiej sytuacji zbyt wiele opcji. Doszliśmy do wniosku, że jedynym sensownym wyjściem jest przeniesienie się na nowy, niezależny hosting.
Ten artykuł znajdziesz na nowej Nonsensopedii tutaj.


Czytelny algorytm

Przykład czytelnie opisanego algorytmu w formie pseudokodu

Algorytm(nie)skończony ciąg niejasno zdefiniowanych czynności, które w pokrętny i zawiły sposób prowadzą do kompletnej frustracji programisty, użytkownika i procesora. Według niepotwierdzonych teorii algorytmy mają służyć rozwiązywaniu problemów.

Rodzaje edytuj

Żeby się nie nudzić, matematycy i informatycy wymyślili całą masę rodzajów algorytmów.

  • Dziel i zwyciężaj – technika ta polega na dzieleniu zadania na wiele malutkich części. Następnie owe części rozdaje się praktykantom do rozwiązania. Dzięki temu możemy mieć pewność, że każda z części zostanie źle rozwiązana i po połączeniu błędy te się zniwelują[1].
  • Programowanie dynamiczne – podobnie jak w poprzedniej metodzie dzielimy zadanie na kilka mniejszych i łatwe części dajemy rozwiązać komuś innemu. Następnie na podstawie tych rozwiązań zgadujemy wynik.
  • Metoda zachłanna – czyli metoda na pałę. Rozwiązujemy problem jak popadnie, a na koniec zabieramy zachłannie wypłatę dla całego zespołu dla siebie.
  • Programowanie liniowe – łączymy wszystkie literki, kropeczki, krówki czy co tam mamy linią. Po tym zabiegu wystarczy rzucić okiem na kartkę, a rozwiązanie samo się ujawni.
  • Brute force – metoda na zastraszanie. Do jej przeprowadzenia niezbędna jest jakaś broń, nada się np. bejsbol albo wałek kuchenny. Rozkazujemy komputerowi rozwiązać problem pod groźbą pobicia wyżej wymienioną bronią[2]. Gdy to nie da oczekiwanego rezultatu, naCenzura2my w komputer do skutku. Efekt gwarantowany, aczkolwiek metoda ta może być nieco czasochłonna.
  • Heurystyka – piszemy algorytm, który działa dla jakichś danych byleby działał. Następnie modlimy się[3] żeby wykonywało się to poprawnie.
  • Rekurencja – tę metodę da się wyjaśnić tylko przy pomocy rekursji.
  • Praca równoległa – ta metoda polega na wzmaganiu ducha sportu i rywalizacji w komputerach. Dajemy to samo zadanie kilku komputerom i każemy im je rozwiązać na czas. Komputer który wygra w nagrodę dostaje nowy dysk twardy/RAM/procesor[4].
  • Sztuczna inteligencja – czyli zrzucanie całej roboty na komputer.
Info Główny artykuł: Sztuczna inteligencja
  • Algorytmy ewolucyjne – tworzymy kilka byle jakich algorytmów, zostawiamy je w ciepełku i czekamy aż zaczną się rozmnażać. Po kilku pokoleniach powinny się pojawić jakieś sensowne programy. Jedyną wadą tej metody jest możliwość narażenia się lokalnemu guślarzowi za stosowanie niezgodnych z Biblią praktyk ewolucyjnych.
  • Algorytmy kwantowe – (bardzo) teoretyczne metody oparte na splątywaniu ze sobą kwantów i skwarków. Dokładnie nie wiadomo jak to niby ma działać, ale według niekoniecznie trzeźwych fizyków algorytmy kwantowe zrewolucjonizują kryptografię.

Przykłady algorytmów edytuj

  • Sortowanie bąbelkowe – bardzo intuicyjny algorytm, aby go należycie wykonać należy wrzucić wszystkie liczby do garnka z wodą (koniecznie posolić!) i wstawić na gaz. Podczas gotowania na powierzchni wody zaczną się pojawiać bąbelki z liczbami w środku. Należy wtedy wyjmować liczby z garnka w kolejności, w jakiej wypływały na wierzch.
  • Sortowanie szybkie – w gruncie rzeczy działa tak samo jak poprzedni algorytm, tyle że trzeba to robić szybciej. Można sporo czasu zaoszczędzić poprzez zatrudnienie kilku murzynów do wyciągania pierogów liczb i dokupienie większej ilości garnków.
  • Algorytm Dijkstry – metoda opracowana przez wkCenzura1ego korkami Holendra Edsgera Dijkstrę. Pozwala znaleźć najdłuższą i najbardziej pokrętną drogę z punktu A do punktu B przez punkty H, W, D i oczywiście P.
  • Stacja rozrządowa Dijkstry – bardzo polski algorytm, mimo że jest autorstwa Holendra. Pozwala zamienić normalne działanie matematyczne – na przykład $ x\frac{a}{b-c} $ na jakże czytelną odwrotną notację polską czyli $ a b c - / x * $.
  • Eliminacja Gaussa – właściwie to jest zabawa polegająca na znalezieniu i zabiciu Gaussa ukrytego w układzie równań liniowych. Ulubiona rozrywka znudzonych studentów matematyki.

Złożoność obliczeniowa edytuj

Znudzeni problemami codziennego życia, informatycy obmyślili pewnego dnia zabawę – zawody gdzie zadaniem jest zaprojektować jak najwolniejszy algorytm. Na sędziów wybrali matematyków, którzy w przypływie inwencji wymyślili nawet sposób oceniania – notację O[5]. Można w ten sposób wiarygodnie[potrzebne źródło] oceniać szybkość zżerania RAMu i cykli procesora przez algorytm.

  • $ O(1) $ – podejrzałeś wynik, przyznaj się draniu!
  • $ O(log_n(n)) $ – to przecież to samo, weź się wreszcie do roboty;
  • $ O(log (n)) $ – albo jesteś algorytmicznym geniuszem, albo się pomyliłeś przy szacowaniu;
  • $ O(n) $ – no, wreszcie jakiś sensowny wynik;
  • $ O(n log(n)) $ – zazwyczaj tyle wychodzi dla skomplikowanych algorytmów[6], w praktyce okazuje się, że to jednak $ O(n^2) $;
  • $ O(n^{1.001}log(log(n)) $ – żebyś nie wiem jak się spinał, nie wyjdzie ci z tego $ O(n log(n)) $;
  • $ O(n^2) $ – słabo, próbuj dalej!
  • $ O(n^3) $ – toż to zwykły, chCenzura2wy brute-force!
  • $ O(n!) $ – chyba przesadziłeś z tą rekurencją;
  • $ O(n^n) $ – tak zwane $ O(kurwa!) $;
  • $ O\left(n^{n^n}\right) $ – zaraz, ty chyba nie…
  • $ O\left(n^{n^{n^{n^{n^{n^nn}n}n}n}n}_{n_{n_{n_{n_{n_nn}n}n}n}n}n\right) $ – co… Co to w ogóle, kCenzura1a, ma być?!

Przypisy

  1. Przynajmniej w teorii
  2. Spokojnie, groźby wobec komputerów nie są karalne w Polsce. Chyba.
  3. Najlepiej do św. Turinga, może być też bł. Knuth
  4. Najłatwiej zabrać te części z jakiegoś przegranego komputera
  5. Nie mieli lepszego pomysłu na nazwę, a dalej indagowani wydawali z siebie tylko przeciągłe Ooooooo
  6. Bo nikomu się tego nie chce liczyć