Czym dokładnie jest algorytm, co oznacza algorytm? Trochę rozumiem to słowo, ponieważ nie jest ono specyficzne dla określonego języka lub wzoru, a raczej jedna z podstawowych zasad (więc myślę, że to pytanie sprawia, że wyglądam głupio).
Jedną z „opcji”, które rozumiem, jest to, że oznacza to sposób wykonania czegoś, co można zapisać jako listę w pseudokodzie.
Kiedy piszę bardziej skomplikowany kod, myślę, co należy zrobić, z czym i jak się tam dostanę (nie w języku programowania), a następnie napiszę to w kodzie. Czy to dobry sposób, aby to zrobić i czy ma to coś wspólnego z algorytmami?
(Chciałem zapytać tutaj raczej o Stackoverflow, ponieważ nie chodzi o konkretny problem / język plus mam wrażenie, że większość ludzi tutaj wie „dlaczego”, a przynajmniej odpowiedzi tutaj są bardziej szczegółowe, niż o Stackoverflow gdzie jest inaczej, przepraszam, że powinienem był zapytać)
źródło
Odpowiedzi:
Algorytm jest skończoną sekwencją dobrze zdefiniowanych instrukcji do obliczania funkcji (lub wykonywania procedury), która kończy się w dobrze zdefiniowanym stanie końcowym.
źródło
To jest naprawdę interesujące pytanie, a właściwie wciąż otwarte pytanie badawcze.
Jurij Gurewicz, jeden z gigantów teorii algorytmów, prowadzi obecnie serię wykładów wideo na stronie społeczności Microsoft Microsoftu Channel9:
Jak widać, twoje pytanie jest tak naprawdę tytułem drugiego wykładu. Jednak zdecydowanie zalecam obejrzenie wszystkich trzech.
W szczególności pierwszy zawiera kilka przykładów algorytmów, które unieważniają prawie wszystkie definicje podane w większości innych odpowiedzi tutaj.
źródło
Algorytm jest jak dobry przepis na gotowanie . Masz jakieś dane wejściowe, pewne dobrze zdefiniowane etapy pośrednie i uzyskasz końcowy wynik.
W odniesieniu do programowania jest to jednoznaczny opis kroków, które należy wykonać, aby rozwiązać konkretny problem. Wszystko, co możesz zapisać w wybranym przez siebie języku programowania, może być postrzegane jako algorytm - ale zazwyczaj termin ten jest używany tylko do typowych zadań logicznych lub matematycznych, takich jak sortowanie lub wyszukiwanie.
źródło
Algorytm to zestaw reguł lub procesów (w obliczeniach) używanych do rozwiązywania problemów. Zasadniczo istnieje problem, potrzebujesz rozwiązania, a proces tego rozwiązania jest algorytmem. Algorytm ma skończone zestawy reguł / procesów pozwalających dotrzeć do rozwiązania.
Jeśli jesteś jak Edsger W. Dijkstra , napiszesz swój algorytm na kartce papieru i opracujesz / poprawisz algorytm na papierze, aż będziesz zadowolony z algorytmów. W przeciwnym razie (szczególnie przy pisaniu dokumentacji) schemat blokowy służy do schematycznego przedstawienia przepływu algorytmu / procesu. Umożliwia to innym krytykowanie schematu blokowego i poprawianie w razie potrzeby (bez obawy o to, jaki język programowania jest potrzebny).
Nie wiem czy to odpowiada na twoje pytanie.
źródło
Algorytm: dobrze uporządkowany zestaw operacji, które są 1) jednoznaczne i 2) efektywnie obliczalne, dzięki czemu wykonywanie operacji od pierwszego daje wynik po skończonej liczbie operacji.
źródło
Algorytm Jest to kombinacja etapów sekwencyjnych (etapami tymi mogą być obliczenia, przetwarzanie danych i zadania wnioskowania) wykorzystywanych do rozwiązania problemu w bardzo prosty i wydajny sposób.
Jest zaprojektowany najskuteczniej, aby można go wyrazić w skończonej przestrzeni i czasie. możemy go wdrożyć w dowolnym języku programowania.
Właściwości algorytmu: następujące są główne właściwości algorytmu: -
Algorytm musi mieć unikalną nazwę. Powinien mieć wyraźnie zdefiniowane zestawy danych wejściowych i wyjściowych. Algorytm musi być w kolejności sekwencyjnej z jednoznacznymi operacjami. Musi mieć jakiś punkt końcowy, tzn. Zatrzymuje się w określonym czasie. kliknij tutaj, aby uzyskać informacje na temat projektowania i analizy algorytmu
źródło
Używam tego terminu, aby opisać formułę rozwiązania konkretnego problemu. Formuła niekoniecznie musi być napisana z matematyki lub mieć związek 1: 1 z metodą. W szkole algorytmy i struktury danych są ze sobą ściśle powiązane i mogą być zapisywane jako wzory matematyczne lub sprawdzane przy użyciu dowodów.
źródło
Algorytm jest abstrakcją programu komputerowego i składa się z zestawu instrukcji umożliwiających wykonanie dobrze określonego zadania w skończonej liczbie kroków, chociaż ograniczenie liczby kroków może być bardzo duże, a poszczególne kroki mogą być złożone ( skończone) zadania same w sobie. Chociaż istnieją (poprawne) programy, które są ogólnie znane - nie algorytmiczne, wszystkie one działają poprzez powtarzanie elementów algorytmicznych w pewnym wzorze. (Bardziej interesujące są programy, których status zakończenia nie jest znany, ale większość programistów tak naprawdę nie zajmuje się takimi rzeczami; wiem, że nie!)
źródło
IMO nikt do końca nie wie :) Widziałem termin stosowany tylko do matematycznych funkcji obliczeniowych, do każdej funkcji, która pobiera dane wejściowe i generuje dane wyjściowe oraz do wszystkiego , co pobiera dane wejściowe i wykonuje na nich jakąś operację.
Czy uważasz, że którykolwiek z poniższych elementów jest algorytmem?
finder
Funkcja, która wysyła zapytanie do bazy danych dla obiektu użytkownikaźródło
Algorytm jest idea, metoda, technika, „mądrość” do kalkulacji lub wykonanie zadania, które ma charakter abstrakcyjny, ale jak to działa na komputerach w realnym świecie, dążą do jej używać jako mało zasobów, jak to możliwe , które w świecie komputerowym to czas i pamięć.
źródło
Algorytm jest sekwencją dobrze zdefiniowanych kroków, które dają wynik w skończonym czasie.
Dobrze zdefiniowany krok: To jest coś, co możesz zrobić lub obliczyć, co jest dokładnie zdefiniowane. Już po przeczytaniu kroku wiesz, co musisz zrobić i jak to zrobić. W szczególności możesz napisać go w znanym języku programowania i upewnić się, że fragment programu dokładnie pasuje do kroku.
Sekwencja: Kroki są wykonywane w określonej kolejności. Kroki mogą być wykonywane więcej niż jeden raz w zależności od danych (pętle) lub mogą nie być wcale wykonywane w zależności od danych (jeśli instrukcje). Algorytmy równoległe nakładają tylko częściowy porządek na kroki, więc upraszczam tutaj. Bardziej poprawne byłoby opisanie go jako zbioru częściowo uporządkowanego niż sekwencji, ale chciałem, aby słowa były nieco prostsze. Poza tym łatwo jest osadzić częściowo zamówiony zestaw w pełnej kolejności.
Wynik: stan końcowy lub wartość. Nie musi to być z góry przewidywalne, ale musi być określonym celem spełniającym pewien warunek. Oznacza to, że system operacyjny nie jest algorytmem, chociaż używa ich dużo.
Skończone: algorytm może się kiedyś zatrzymać, przynajmniej na maszynie, która może działać wystarczająco długo. Nie zawsze jest gwarantowane, że zatrzyma się w przewidywalnym czasie i nie ma gwarancji, że zatrzyma się, zanim słońce rozszerzy się i zmieni kolor na czerwony na dowolnej istniejącej maszynie. Oznacza to również, że system operacyjny nie jest algorytmem, ponieważ idealnie będzie działał wiecznie. Widziałem słowo „procedura” używane do opisania czegoś, co byłoby algorytmem, gdybyśmy byli pewni, że kiedyś się zatrzyma. (Możliwe jest posiadanie algorytmu, który zatrzyma się w nieznanym czasie. Załóżmy, że powiedzmy, że hipoteza Goldbacha okazała się matematycznie nieprawdziwa, co nie jest konstruktywnym dowodem, więc liczba parzysta> 2 nie była sumą dwóch liczb pierwszych Algorytm, który po prostu testował liczby parzyste, ostatecznie zostałby zakończony,
Algorytm jest celowo abstrakcyjnym rodzajem rzeczy, więc nie zastanawiamy się nad pytaniami typu: „Czy jest to fizycznie możliwe do wykonania przed śmiercią Wszechświata?”. Zbyt trudno byłoby na nie odpowiedzieć. Jeśli odnosi się do operacji na komputerze, łatwo go zaimplementować w języku programowania.
źródło
Gdybym musiał podać ogólną definicję, powiedziałbym, że algorytm jest formułą do rozwiązania problemu obliczeniowego, który jest bardziej złożony niż i ostatecznie jest bardziej wydajny niż rozwiązanie oczywiste / brutalne.
Należy również zauważyć, że algorytm nie jest żadnym konkretnym kodem źródłowym; to samo obliczenie. Oznacza to między innymi, że każdy język kompletny Turinga może implementować dowolny algorytm, który może implementować każdy inny język kompletny Turinga.
źródło