Dyskusja:Algorytm

Najnowszy komentarz napisał 6 miesięcy temu Snoflaxe w wątku Liczne wandalizmy

Literatura uzupełniająca

Sekcja wskazuje pozycje niewykorzystane przy tworzeniu artykułu, które mogą być wykorzystane do jego rozbudowy.

Książki

Czasopisma

  • Neil Gershenfeld i Isaac L. Chuang, „Molekularne komputery kwantowe”; Świat Nauki, sierpień 1998
  • Nadrian C. Seeman, „Na granicy życia i nanotechnologii”; Świat Nauki, lipiec 2004 Dymek

uwagi do wstępu

Ten nowy wstęp był straszny. Ja rozumiem, że autor chciał był precyzyjny, ale nie można pisać w sposób tak hermetyczny we wstępie do artykułu. Na początku w kilku zdaniach należy przedstawić temat. Dopiero potem w treści artykułu można rozpisywać się, co jest, a co nie jest algorytmem. Zachęćmy czytelnika do poznania tematu, zamiast strzelać do niego od razu z grubej rury.

Po tej małej dygresji trochę merytorycznych zarzutów:


Algorytm to skończony zbiór jasno zdefiniowanych, możliwie elementarnych kroków koniecznych do wykonania pewnego zadania w skończonym czasie.
Algorytmami nie są:
Podać liczbę o 1 większą od najmniejszej 1000000 cyfrowej liczby pierwszej
*krok 1: podaj najmniejsza 1000000 cyfrowa liczb pierwsza
*krok 2: dodaj do niej 1
Nie jest to algorytm gdyż nie składa się z możliwie elementarnych kroków.

Kroki wcale nie muszą być elementarne, wszystko zależy od poziomu abstrakcji języka zapisu. Dla przykładu mamy trzy metody obliczania iloczynu 3 i 3:

Metoda 1:

wynik=3*3 

Metoda 2:

wynik=3+3+3

Metoda 3:

move acc, 0                  #kopiuje 0 do akumulatoraadd acc, 3                   #dodaje 3 do akumulatoraadd acc, 3                     add acc, 3                     move EF21A29C, acc           #kopiuje zawartość akumulatora do komórki pamięci – adres w hex

Czy pierwsza metoda jest algorytmem skoro działanie mnożenia da się rozpisać na bardziej elementarne operacje w drugim i trzecim przykładzie? Wszystkie te metody obliczania iloczynu są algorytmami. Dla pierwszej zdefiniowano wcześniej operacje mnożenia. Druga została zapisana w języku pozbawionym tej operacji. Trzecia metoda nie opiera się na zmiennych, tylko operacjach procesora. Tak prosty algorytm da się rozpisywać jeszcze dużo dalej, aż do granicy mikroświata. Algorytmem jest każdy zestaw kroków, które są jasno zdefiniowane, czyli zapisane w języku sformalizowanym.


Podać największą liczbę naturalna (przy założeniu, że taka istnieje, ale nie jest to ważne dla rozpatrywanego przykładu)
*krok 1: przypisz pewnej zmiennej x wartość 0
*krok 2: sprawdź czy istnieje liczba większa od x przez sprawdzenie czy po dodaniu do x liczby 1
*otrzymany wynik będzie większy niż x
*krok 3: jeśli x + 1 > x, przypisz x wartość x + 1 i skocz do kroku 1
Nie jest to algorytm gdyż nie poda największej liczby naturalnej w skończonym czasie.

Ten przykład jest nawet ciekawy. Każdy komputer, na którym puścimy taki algorytm skończy swoją pracę dosyć szybko. Liczby zawsze są reprezentowane ze skończoną precyzją. Kiedy licznik się zapełni, to kolejna liczba nie będzie już większa. Większość programów nada liczbie wartość nieskończoności i zwróci błąd przepełnienia.

Każdy przykład algorytmu musi mieć jakiś sens. Takie wymyślanie algorytmów z sufitu nic nie wznosi i tylko ogłupia czytelnika.

Superborsuk 00:02, 26 lis 2004 (CET)

elementaność kroków też jest sprawą pewnej (zdrwoworosądkowej) umowy, gdyż na dobrą sprawę jedyną, prawdziwie elementarną operacją w kompach jest rzucanie zerem lub jedynką.... Rnm 07:33, 11 kwi 2006 (CEST)

Dodałem 'w skończonej liczbie kroków', bo tak mnie uczyli na Politechnice.--Piotr Dembiński (http://illx.org/~pdemb) 20:10, 18 cze 2007 (CEST)

--zolv 5 lip 2005 19:11 (CEST) Ale co to są "jasno zdefiniowane" czynności? Czy będzie jasno zdefiniowaną czynnością coś takiego:

Zadanie: Wyznaczyć algorytm rozkładu liczby na czynniki pierwsze (wiemy, że zadanie nie jest banalne)
Algorytm: krok 1. Wyznacz rozkład liczby na czynniki pierwsze.

Określenie czy coś można rozbić jescze na mniejsze kawałki czy nie zależy od interpretacji człowieka (tak jak podane wyżej 3 metody zadania 3*3). Stąd też uważam, że powinno być coś takiego (improwizacja) "zbiór możliwie elementarnych czynności..." lub coś podobnego. ale nie "jasno zdefiniowanych". W zasadzie to słowo "jasno" jest tutaj zbędne i chaczy o NPW, bo to czy coś jest jasne dla kogoś czy nie to kwestia indywidualna, a jeśli coś jest zdefiniowane to chyba wystarczy.

Dodatkowo skończona liczba kroków nie determinuje skończonego czasu, natomiast odwrotnie jest poprawnie. stąd też zamieniłbym skończoną liczbę kroków na skończony czas.

W efekcie podtrzymałbym swoją poprzednią wersję: Algorytm to skończony zbiór zdefiniowanych, możliwie elementarnych kroków koniecznych do wykonania pewnego zdania w skończonym czasie.

Złożoność obliczeniowa

"Gdy kryterium braku obliczalności jest spełnione dla implementacji algorytmu na maszynę Turinga, to wtedy określa się go jako problem NP-zupełny." - tak absolutnie nie jest. Poza tym brakuje źródeł do stwierdzenia, że "Wiele problemów związanych z codziennym życiem to problemy NP-zupełne. Przykłady to odnajdywanie składanie układanki, czy odnajdywanie błędów w programach", więc je usunęłam. ksoltys 18:14, 21 kwietnia 2007 (CET)

Pierwsze zdanie

Właściwie powinno być 'Algorytm to uporządkowany i skończony zbiór jasno zdefiniowanych czynności'. W gruncie rzeczy jeśli zbiór jest skończony, to nie trzeba by pisać 'w skończonej liczbie kroków'. Ale że zbiór jest uporządkowany, to na pewno.--Pdemb (dyskusja) 29 stycznia 2005

NP

Ogromna większość problemów związanych z codziennym życiem jest rozwiązywana przez algorytmy N-P zupełne a nie czasem problemy są NP zupełne a nie algorytmy? -zolv 16:49, 10 listopad 2005 (CET)

jasne, że to problemy są N-Pzupełne

otwaty source

"Ratunkiem jest tutaj stosowanie jawnych implementacji algorytmów, których kod źródłowy jest otwarty dla każdego. W ten sposób zwiększa się szansa na odnalezienie błędów i ich szybką naprawę"

to niewiem czy nie jest to łamanie świętej poprawności politycznej, err. neutralności - open source to broń obusieczna, ponieważ faktycznie może być wykorzystana do ZNALEźIENIA I POPRAWIENIA BłęDU ale równie dobrze do ZNALEZIENIA I WYKORZYSTANIA BłęDU, pozatym to nie jest żaden ratunek (błędy w programch będą zawsze)... a dlaczego łamie IMO neutralność? bo istnieje silne lobby promujące "idee" wolnego oprogramowania chaciałniechciał, która de facto odbiera prawo koderów do swobodnego dysponowania efektami ich pracy!, przyczym jest tak sformułowane, iz nie oddaje zagrożeńze strony opensource

Wikipedysta:Rnm

Przecież ruch open source powstał dlatego właśnie, że koderzy chcieli mieć prawo do swobodnego dysponowania efektami własnej pracy... :)
Ale nie, fakt faktem - czy cały ten fragment jest tu w ogóle potrzebny? Moim zdaniem jest nie na temat. Squeal 01:49, 9 kwi 2006 (CEST)

jest potrzebny, gdyż opensource jest jakoś tam powiązany z algorytmami, tylko że o tym powinno być w programowaniu a nie w haśle o algorytmie (no bo jawny algorytm to nie to samo co open source)

": Przecież ruch open source powstał dlatego właśnie, że koderzy chcieli mieć prawo do swobodnego dysponowania efektami własnej pracy... :)"

nie do końca, jak wspomniałem istnieje silne lobby na rzecz open source, swoją drogą bardzo lewicowe (typowe dla nich "poświęcanie praw jednostki dla dobra ogółu", brak poszanowania dla własności prywatnej, nazywanie firm koderskich nie chętnych o.s. "faszystowskimi" (a wiadomo, że lewicowcy faszystów widzą na każdym kroku)). Nie jest nic wspomniane, że kod jest efektem ciężkiej pracy kodera, i że ma on prawo swojej pracy chronić, tak jak muzyk czy malarz, a tzw. ruch na rzecz open source, na dobrą sprawę sprowadza się do odebrania koderom ich prywatnej własności, którą są napisane przez nich programy ale i wymyślone przez nich algorytmyRnm 07:19, 11 kwi 2006 (CEST)

kucharze a komputery

Argumenty, że przepis kulinarny nie jest algorytmem, wybaczcie (tu zwracam się do autora/ów tego akapitu), dość marne. Np. podane jako przykład "dopraw do smaku" oznacza mniej więcej "doprawiaj, aż będzie smaczne", a więc np. "do { dodaj przyprawę } until { smak odpowiedni }". W ten sposób można wszystko przekonwertować na kod. Algorytmy mat-inf też często zapisuje się w języku naturalnym, którego żaden komputer nie zrozumie (i to jeszcze długo), a mimo to algorytmami pozostają. Zaraz śmiało zedytuję, żeby nie straszyło. Squeal 01:49, 9 kwi 2006 (CEST)OK, chyba trochę nie zrozumiałem idei akapitu, chodziło o pokazanie (domniemanych) różnic, a nie o udowodnienie, że przepis nie jest algorytmem. Ale argumentacja zostaje taka sama, jak wyżej - różnicy faktycznie nie ma. To tak gwoli ścisłości. Squeal 02:08, 9 kwi 2006 (CEST)

A czy nie uważasz, że postępując ściśle według przepisu na bigos można zrobić zły bigos z dobrych danych? Np. znam wariatów dla których "dosól do smaku" sprawodza się do zrobienia z zupy/czegoinnego zawiesiny soli w wodzie - dla nich warunek smak odpowiedni nie będzie spełniony wtedy co dla przeciętnego usera. Bo podstawowym wymaganiem algorytmu (po dawaniu "dobrego wyniku") jest jednoznaczność, tj. pewność, że dla tych asmych danych zawsze otrzymamy dobry wynik... może dopadne dzisiaj prof. Sysłe i się go podpytam co o tym sądzi. Odwzorowanie elementarne musi być jednoznaczne, więc IMO przepis na bigos odpada jako algorymt Rnm 07:25, 11 kwi 2006 (CEST). Sprawdziłem, jeden z polskich autorytetów wśrod znawców algorytmów też nie uważa przepisu za algorytm ~(w ścisłym tego słowa znaczeniu) Rnm 15:12, 11 kwi 2006 (CEST)

implementacja będąca abstrakcyjnym przedstawieniem idei

"Należy zdawać sobie sprawę z różnicy między algorytmem, będącym "niezależnym" przepisem od jego implementacji, będącej tylko abstrakcyjnym przedstawieniem ideei samego algorytmu." - implementacja jest "abstrakcyjnym przedstawieniem idei"? "różnica między x od y"? To jakiś bełkot... Poprawiłbym to, ale zupełnie nie wiem, o co chodziło autorowi. Squeal 02:08, 9 kwi 2006 (CEST)

"Należy zdawać sobie sprawę z różnicy między algorytmem, będącym "niezależnym" od jego implementacji przepisem, a programem będącej tylko abstrakcyjnym przedstawieniem ideei samego algorytmu."

teraz już rozumiesz ? :)

chodzi o to, że algorytm (Euklidesa, Eulera, FFF czy kompresji mp3) jest tym samym algorytmem, niezależnie od tego czy jest napisany w c++,haskellu czy czystym asemblerze. Jest to dość istotne, gdyż pojęcia algorytmu i opisującego go programu są często mylone.

Możesz powiedzieć : "zaknij morde!", albo "czy byłbyś tak łaskaw, i dał odpocząć żuchwie, gdyż strasznie boli mnie głowa, a i twa żuchwa będzie zadowolona" , są po rózne rozkazy (programy) ale opisują te samo zadanie (algorytm zamknięcia się :)Rnm 07:08, 11 kwi 2006 (CEST)

No tak, ale to, co powiesz, będzie konkretnym zdaniem. Konkretnym przedstawieniem abstrakcyjnej prośby o zamknięcie się. Squeal 17:26, 11 kwi 2006 (CEST)

O jezu, doczytałem! Jest dobrze, tylko szyk zdania był mylący! Zmienię to, pozwolisz. Squeal 17:29, 11 kwi 2006 (CEST)

Zdanie ze wstępu

Zdanie ze wstępu jest nieprawdziwe i nieścisłe:

Podstawowe własności poprawnego algorytmu to jednoznaczność oraz gwarancja otrzymania dobrego wyniku dla każdego poprawnego zestawu danych. 

Co do jednoznaczności, to można się zgodzić, niemniej jest to powtórzenie treści z początku, mówiącej o jasnej definicji, z której jednoznaczność daje się jednoznacznie wywnioskować. Co ma znaczyć dobry wynik i poprawny zestaw danych?

Oznacza to, że dla identycznego zestawu danych początkowych, algorytm zawsze zwróci identyczny wynik, oraz dla prawidłowych danych działanie algorytmu zawsze zakończy się w skończonym czasie.

Tu jest spory błąd. W praktyce wykorzystuje się wiele algorytmów, które mają charakter probabilistyczny - wynik może być za każdym razem inny, ale prawie zawsze spełnia określone założenia. Wiele implementacji algorytmów nie spełnia powyższych wymagań, a mimo to się je wykorzystuje, bo ich niezawodność jest wystarczająca w praktyce.

Moim zdaniem należy wyrzucić ze wstępu te sformuowania. Superborsuk Ω 18:58, 11 kwi 2006 (CEST)

Ktoś tutaj zdrowo namieszał:

W sensie matematycznym przepis na potrawę nie jest algorytmem, gdyż nigdy nie uda się na podstawie tego samego przepisu uzyskać identycznej z poprzednimi potrawy.

A jeżeli zbuduję robota, który gotuje i zdefinuję wszystkie czynności z książki kucharskiej, aby były jednoznaczne, to czy wtedy przepis na bigos nagle stanie się algorytmem? Co więcej wiele algorytmów absolutnie nie powoduje uzyskiwanie stale tego samego wyniku przy tych samym danych. Wynik ma spełniać tylko i wyłącznie pewne założenia. Na przykład problem, który rozwiązuje algorytm może być, roztrzygany na wiele sposobów, a algorytm zwraca losowo jeden z nich. Superborsuk Ω 19:05, 11 kwi 2006 (CEST)

Niestety autorzy ostatni modyfikacji artykułu sądzą najwyraźniej, że każdy algorytm da się sprowadzić do programu dla maszyny Turinga. Turing z pewnością by się z nimi nie zgodził. Prawdą jest, to wyłącznie dla komputerów, które są tej maszyny potomkami. W innych obszarach stosowania algorytmów np. sieci neuronowe już nie da się zrobić czegoś takiego, a jednak wciąż mówimy o algorytmach.

Definicja matematyczna algorytmu podana poniżej jest na tyle ogólna, że również obejmuje algorytmy nie dające się przenieść na maszynę Turinga. Wartości zmiennych mają charakter rzeczywisty, co oznacza, że są nieobliczalne w skończonym czasie.

Co więcej sama definicja matematyczna, też jest nie do końca poprawna. Najbardziej ogólna postać takiej definicji musi mówić nie o obliczaniu wyniku, ale o przeprowadzania systemu z pewnego stanu początkowego do pożądanego stanu końcowego. Proste wyliczanie y z x absolutnie nie obejmuje tego typu algorytmów. Czy w takim ujęciu program zarządzający pamięcią komputera można uznać, można uznać za implementację algorytmu? Jego zadaniem nie jest wyliczenie czegokolwiek, tylko utrzymywanie komputera w stanie pożądanym czyli takim, aby użyteczne programy dostawały potrzebną im pamięć i mogły na niej bezpiecznie operować.

Proszę kolegów o zastanowienie się nad terminem algorytm. Pojęcia to ma charakter interdyscyplinarny i należy uważać, aby nie zawężać go do definicji z jednej dziedziny wiedzy, gdzie się algorytmy pojawiają. Superborsuk Ω 19:22, 11 kwi 2006 (CEST)

Rzeczywiście obliczanie nie jest dobrym słowem, pozatym definicja jest poprawna. Jak wspomniałem należy zdać sobie sprawę z systemu którego dany algorytm dotyczy - jeżeli mówimy o algorytmach w sensie ich matematycznej definicji, to niemal ad hoc możemy zapomnieć o wszystkich systemach analogowych. Robot kuchenny nic nie zmieni, gdyż zawsze znajdą się czynniki (ułożenie się czasteczek sera w cieście? cyrkulacja powietrza w pierarniku powodowana odległością księżyca od ziemi? itp.) wprowadzające niejednoznaczność, podobnie jak nigdy nie znajdzie się dwóch identycznych jajek - po prostu, jest to system analogowy... Sprawa algorytmów probalistycznych - tak naprawdę są to algorytmy wyznaczania przybliżonego wyniku, więc z definicji nie może być to wynik dokładny (a więc i jednoznaczny).

"algorytm zwraca losowo wynik" (sic!) - NIE ISTNIEJE COś TAKIEGO JAK LOSOWA WATOść WYZNACZONA PRZEZ KOMPUTER - ona nigdy nie będzie losowa (chociaż w przypadku dobrych algorytmów randomizacyjnych możliwość przewidzenia wyniku jest równoważna z możliwością łamania RSA - mało prawdopodobne, ale prędzej czy później możliwe) Rnm 21:06, 11 kwi 2006 (CEST)

Ale kto powiedział, że liczba LOSOWA ma być wyznaczana przez KOMPUTER?! Jeżeli generator pseudolosowy jest inicjowany z zegara systemowego w trakcie uruchamiania programu, to oczywiście sekwencja uzyskana z generatora jest deterministyczna – ale losowo wybrana z pewnej puli sekwencji (bo wybór zależy od momentu uruchomienia programu, a moment uruchomienia nijak nie wiąże się z algorytmem realizowanym przez ten program). Tym samym liczba losowa (przynajmniej pierwsza, ale poniekąd również nastepne) wyznaczona jest nie przez alogrytm, lecz przez czynnik zewnętrzny, który spowodował uruchomienie przetwarzania w tej, a nie innej chwili.
A poza tym świat nie kończy się na komputerze. Istnieją fizyczne generatory wartości losowych (np. szumowe). Jeśli przyłączysz takie urządzenie do systemu cyfrowego, a w program wbudujesz instrukcje odczytujące stan takiego urządzenia, to algorytm będzie miał dane prawdziwie losowe. I co mu zrobisz?
Oczywiście taki system nie jest już opisywany modelem deterministycznym, w rodzaju maszyny Turinga. I z formalnego punktu widzenia to byłby dostateczny powód do odrzucenia określenia algorytm na sekwencję działań przepisaną w programie wykonywanym przez taki system. Czy jednak również z punktu widzenia praktycznego...?
CiaPan (Odp.) 22:20, 11 kwi 2006 (CEST)

W teorii sterowania algorytm jest definiowany zupełnie inaczej. Prawie każdy fizyczny system można opisać zestawem równań (w szczególności równań różniczkowych). W oparciu o te równania można wymyślić algorytm mający zwykle postać zestawu równań różniczkowych liniowych, który będzie w stanie kontrolowany system przeprowadzić z pewnego podzbioru stanów niepożądanych do stanu pożądanego.

Dla przykładu wyobraźmy sobie silnik, który ma napędzać wiatrak w komputerze kolegi Rnm. Jeżeli w tym systemie umieścimy termometr oraz regulator o algorytmie PID podając mu na wejście temperaturę, a jego wyjście podłączymy do systemu zasilania silnika, to komputer kolegi Rnm będzie utrzymywać stałą temperaturę, co jest stanem pożądanym. Jeżeli algorytm w regulatorze się nie sprawdzi, to komputer kolegi Rnm zacznie się kopcić. Z pewnością nie będzie, to stan pożądany przez Wikipedystę, co przekona go, że regulator też ma w sobie algorytm.

Algorytmów opisanych równaniami różniczkowymi nie da się sprowadzić do definicji matematycznej podanej w artykule. Moim zdaniem ścisła definicja algorytmu nie może zostać podana, bo musiałaby zostać napisana w jakimś formalnym języku. Algorytm może być zdefiniowany w dowolnym formalnym języku, a podając taką definicję zawężamy się do podzbioru formalnego języka, który użyjemy w definicji.

Matematyka zna bardzo wiele systemów pojęć, które są od siebie niezależnie. Nie ma żadnego takiego języka formalnego, w którym można by zapisać wszystkie inne języki formalne. Algorytm komputerowy będzie definiowany w algebrze boola, algorytm z teorii sterowania będzie opisany równaniami różniczkowymi, a algorytm komputerów kwantowych będzie opisany językiem fizyki kwantowej. Wszystkich tych języków formalnych nie da się sprowadzić do jednego bardziej ogólnego. Superborsuk Ω 23:32, 11 kwi 2006 (CEST) PS. Czy kolega Rnm sądzi, że algorytmy genetyczne czy sieci neuronowe nie odnoszą się do pojęcia algorytmu?

Musimy więc zadecydować czy piszemy o algorytmie w klasycznym pojęciu skończonego i jednoznacznego wyszczególnienia postępowania zmierzającego do określonego celu, czy robimy ogólny art. alogorytm z wprowadzeniem do poddziałów algorytm (formalny), algorytm (aproksymacyjny), algorytm (ewolucyjny), algorytm (pseudolosowy). W głównym artykule można napisać "Algorytm to jednoznacznie opisany sposób rozwiązania danego problemu". Przydało by się też więcej napisać o systemach w jakich mogą być rozważane algorytmy, i połączyć to wszystko np. z Dowód poprawności algorytmu , złożoność obliczeniowa, Algorytm rekurencyjny itd. robiąc solidny dział o algorytmice.Cóż, studiuję bardzo "formalną" informatykę, więc może się czepiam, ale niestety definicja matematyczna algorytmu jest nieubłagana Rnm 12:12, 12 kwi 2006 (CEST)

Niestety definicja którą podałeś jest bardzo zawężająca i nawet wielu informatyków by się z tobą nie zgodziło. Rzuć okiem na angielskie hasła en:Algorithm, en:Functional programming, en:Logic programming, en:Procedural programming. Definicja którą podałeś jest kłamstwem dla studentów, które mogą zakuć na egzamin. Niewiele ma wspólnego z niesamowitym bogactwem algorytmów, które stosuje się w różnych dziedzinach.

Złożoność obliczeniowa jest pojęcięm zdefiniowanym tylko dla algorytmów na maszynę Turinga. Samo hasło nie wyklucza istnienia innych algorytmów. Dowód poprawności algorytmu też dotyczy wyłącznie pewnego wąskiego podzbioru algorytmów. Nawet w informatyce większość algorytmów nie jest poddawana analizie w tych kategoriach, bo dla złożonych systemów jest to niepraktyczne. Superborsuk Ω 13:55, 12 kwi 2006 (CEST)

Superborsuk Ω 13:55, 12 kwi 2006 (CEST)

Polecam przeczytanie artykułu o probabilistycznej maszynie Turinga. Superborsuk Ω 03:38, 13 kwi 2006 (CEST)

Przydałaby się wzmianka o sposobach prezentacji algorytmów lub odnośnik do artykułu na ten temat. Współczesna informatyka, elektronika, zarządzanie są zagadnieniami tak skomplikowanymi, że algorytm bez bardziej zrozumiałej dla człowieka jego prezentacji (różnego typu schematy, pseudokod) jest w sumie niewiele wart. 83.22.41.203 20:26, 2 gru 2006 (CET)

Podział

Podzielić tekst? Superborsuk Ω 04:42, 17 kwi 2006 (CEST)

Przydałoby się. Jak na to patrzę, to nie wiem od czego zacząć poprawianie, chyba kawałkami byłoby łatwiej. A może przetłumaczyć z en wiki, tam jest medal? Kuszi 01:00, 23 kwi 2007 (CEST).

Algorytmy kwantowe

Małe uwaga, do sekcji związanej z algorytmami kwantowymi, w której wkradły sie błędy związane z NP-zupełnoscią:Jesli potrafimy rozwiązać jeden dowolny problem NP-zupełny w czasie wielomianowym to potrafimy rozwiazać każdy problem NP-zupełny w czasie wielomianowym. W ogóle wtedy P=NP.

W tekście o alg. kwantowych jest napisane, że potrafimy rozwiązać niektóre problemy NP-zupełne w czasie stałym. Jak niektóre, to wszystkie. Błąd lezy tutaj w stwierdzeniu, że kodowania (szyfrowania) są oparte na problemach NP-zupełnych - a nie są. Przynajmniej tego nie wiemy. Faktoryzacja liczb pierwszych, oraz dyskretny logarytm nie zostały wykazane jako problemy NP-zupełne, ale nie wiemy czy mają algorytm wielomianowy - i dlatego nadal sa stosowane...

Literatura:

Algorytmy kwantowe - Hirvensalo Mika;

polecam tez poczytać dokładniej Cormena w sekcji NP-zup.

(jakby cos, jestem studentem Informatyki Teoretycznej na Wydziale Matematyki i Informatyki UJ 4 rok... )
149.156.65.204, 12:23, 5 lut 2009

Ocena artykułu

Artykuł jest napisany słabo, algorytm to pojęcie teoretyczne tymczasem artykuł rozwodzi się o patentach, hackerach, kodzie maszynowym, błędach w implementacji, sieci neuronowej w mózgu ptaka itp. Mało napisane o istocie sprawy - analizie algorytmów, złożoności, strukturach danych, brakuje dobrych przykładów.

Mieszane jest pojęcie algorytmu oraz programu. Słabym przykładem jest "algorytm obliczania pola kwadratu" składający się z 3 kroków - wczytania, podniesienia do kwadratu i wypisywania. W algorytmice zwykle nie zapisuje się "wczytania" i "wypisywania" danych. Zakłada się że dane są dostępne od pierwszego kroku i należy tylko zwrócić wynik. Seperacja między wykonywaniem obliczeń i interfejsem użytkownika jest zresztą dobrą praktyką w inżynierii. "Algorytm" sumujący trzy trójki jest zbyt trywialny. Normalny algorytm powinien brać jakieś wejście.

Usunąłem "znaczkową" definicję z wektorami, nie dopuszczała rozgałęzień. Usunąłem nagłówek "przyszłość". Algorytmy genetyczne i równoległe to żadna przyszłość. Algorytmy kwantowe istnieją od dawna, przyszłością jest ich implementacja.--129.104.247.2 (dyskusja) 21 września 2011

Algorytmy równoległe - do poprawy

Przekazuję kilka uwag dot. tej sekcji.

"Jednym ze sposobów rozwiązywania złożonych problemów jest zastosowanie algorytmów równoległych. Oznacza to, że program nie jest wykonywany tylko jeden raz na jednym procesorze, ale wielokrotnie równolegle na wielu różnych maszynach."

  • to jest nieprecyzyjne/błędne, brzmi jakby ten sam program był uruchamiany wiele razy, nie ma tu mowy o tym że procesory współpracują

"Podejście takie jest stosowane od lat w superkomputerach, jednak w takiej realizacji jest ono bardzo kosztowne."

  • nie wiadomo o co chodzi z "jest...kosztowne" (superkomputer czy to podejście?)

"Nowym pomysłem jest tutaj zastosowanie sieci zwykłych komputerów tworzących klaster."

  • zła sugestia, że zwykłe komputery tworzą klaster i mylne jest pisanie w kontrze do superkomputerów...
  • przecież właśnie superkomputery to klastry obliczeniowe
  • zwykłe komputery połączone ze sobą to nie jest klaster, to raczej "crowd computing";

"Całe zadanie jest wtedy rozdzielane na wiele maszyn i obliczane równolegle przy pomocy tysięcy procesorów."

  • dokładnie to jest robione w superkomputerach / klastrach obliczeniowych!
  • w tym układzie, wydaje się że superkomputery robią co innego (i do tego kosztownie), a zwykłe komputery umieją sobie coś razem liczyć...

Podsumowując - całą sekcję trzeba przepisać w odpowiedni sposób. 31.60.14.190 (dyskusja) 10:34, 4 wrz 2023 (CEST)

Liczne wandalizmy

W ciągu około roku (wrzesień 2022 – listopad 2023) artykuł doznał ok. 50 edycji:

https:https://www.search.com.vn/wiki/index.php?lang=pl&q=Algorytm&diff=71868215&oldid=68325199

z czego tylko dwie były konstruktywne:

Pozostałe to były naprzemienne wandalizmy i rewerty.

W poprzednich 50 edycjach około połowa edycji to były wandalizmy i rewerty, zaś połowa była konstruktywna.Z pobieżnego przeglądu wynika mi, że wszystkie użyteczne edycje wykonali użytkownicy zalogowani.Może więc warto wprowadzić blokadę edycji anonimowych? Nic nie wskazuje, żeby taka blokada istotnie wpłynęła na tempo faktycznych prac nad hasłem. --CiaPan (dyskusja) 14:53, 16 lis 2023 (CET)

Regularność wandalizowania tego artykułu od lat jest dla mnie zagadką... Temat ani nie jest jakiś wyjątkowo popularny, ani kontrowersyjny, a głupoty się w nim pojawiają co trochę. Raz to nawet poruszałem w kawiarence, najbardziej sensowną hipotezą jest odwiedzanie tego hasła przez młodzież szkolną w trakcie zajęć lub odrabiania pracy domowej. ;-) Co jakiś czas artykuł jest blokowany na najniższym poziomie (przykładowo, sam to sugerowałem... w 2017 roku), ale po wygaśnięciu blokady problem powraca. Również uważam, że zablokowanie tego hasła dla niezalogowanych na stałe byłoby dobrym wyjściem. Pozdrawiam (dyskusja) 18:44, 16 lis 2023 (CET)
Wandalizmy występują przede wszystkim na początku roku szkolnego i nowego semestru, a później przez kilka miesięcy jest spokój. Wg mnie nie ma podstaw do bezterminowego zabezpieczenia, a jeśli już koniecznie to na 1-2 miesiące na początku semestrów. → Snoflaxe (dyskusja) 18:50, 16 lis 2023 (CET)
Powrót do strony „Algorytm”.