Edukacja

Co to jest algorytm? »Jego definicja i znaczenie

Spisu treści:

Anonim

W matematyce, informatyce i innych pokrewnych doktrynach algorytm definiuje się jako zbiór ustalonych i jednoznacznych zasad, znalezionych metodycznie i w sposób ograniczony, które pozwalają na wykonywanie obliczeń, przetwarzanie określonych informacji, rozwiązywanie problemów i wykonywanie różnych czynności.. Po rozpoczęciu od stanu początkowego i wpisu, zgodnie z wymaganymi procedurami, osiągany jest stan końcowy i otrzymywany jest wynik. Algorytmy są przedmiotem badań algorytmów i chociaż wielu może w to nie wierzyć, można je również stosować we wszystkich aspektach życia codziennego.

Co to jest algorytm

Spis treści

W informatyce jest zwykle definiowany jako ciąg sekwencyjnych instrukcji, w których pewne procesy są wykonywane w celu odpowiedzi na określone decyzje lub potrzeby. W ten sam sposób algorytmy są często wykorzystywane w logice i matematyce, a także są podstawą do opracowywania m.in. instrukcji obsługi, broszur poglądowych. Jednym z najbardziej wyróżniających się w matematyce jest ten, który przypisuje się geometrystowi Euklidesowi, aby uzyskać największy wspólny dzielnik dwóch liczb całkowitych, które są dodatnie, oraz dobrze znaną „metodę Gaussa” do wyznaczania układów równań liniowych.

W odniesieniu do informatyki obliczenia te można nazwać sekwencją wskazówek, których należy przestrzegać, aby określić problem za pomocą komputera.

Dlatego algorytmika jest rozumiana jako dyscyplina skupiająca się na analizie i projektowaniu algorytmów. Uwzględniając pierwszą, stara się zbadać właściwości, takie jak poprawność i skuteczność w odniesieniu do czasu i przestrzeni, aby zrozumieć problemy, które można rozwiązać algorytmicznie. Jeśli chodzi o drugi, to stara się zbadać już ustalone paradygmaty i proponuje nowe przykłady.

Algorytm znajduje się w centrum postępu obliczeń i jest ważny w różnych jego obszarach. W ten sposób usługi tak skuteczne, jak Facebook i Google, nie byłyby w stanie poradzić sobie z ogromną ilością posiadanych informacji bez współpracy algorytmów lub wyspecjalizowanych struktur danych. Jednak w życiu codziennym wykorzystywane są również algorytmy, czego przykładem jest zapłon pieca, gdyż zaczyna się on w momencie, gdy osoba idzie do kuchni, obserwuje ją i ma swój koniec, gdy przystępuje do jej rozpalenia.

Charakterystyka algorytmu

Pomimo faktu, że algorytm jest znany jako uporządkowany i skończony zbiór różnych kroków, które prowadzą do rozwiązania problemu, mówi się, że charakter tych trudności różni się w zależności od kontekstu, w którym występują, w ten sposób pojawiają się problemy chemiczne, matematyczne, filozoficzne m.in. Można więc powiedzieć, że ma zróżnicowany charakter i nie jest konieczne jego wykonanie przez komputer. Oprócz wszystkiego, co zostało wcześniej wyjaśnione, algorytmy mają podstawowe cechy pozwalające określić, czym są dzisiaj i zostaną omówione poniżej.

  • Wytyczne zawarte w algorytmie muszą być szczegółowe, aby nie pozostawiać miejsca na jakiekolwiek pomyłki, co oznacza, że ​​należy postępować zgodnie z odpowiednimi instrukcjami lub wręcz przeciwnie, graficzne przedstawienie przepływu, w którym się rejestrujesz, nie ułatwi rozwiązania. poprawny.
  • Musi być w doskonałej definicji, starając się jak najbardziej podążać za nim tyle razy, ile potrzeba, aby uzyskać ten sam wynik, aw przypadku odwrotnej sytuacji algorytm nie będzie wiarygodny i nie będzie służył jako przewodnik przy podejmowaniu decyzji.
  • Są znane z tego, że są skończone, zwykle kończą się w pewnym momencie, a później rzucają wynik na koniec każdego kroku. Jeśli algorytm rozciąga się w nieskończoność, wracając do jakiegoś punktu początkowego, którego nigdy nie można rozwiązać, pojawia się paradoks lub dobrze znana „pętla” powtórzeń.
  • Wreszcie mówi się, że czytelność algorytmów jest kluczowym elementem, ponieważ jeśli ich argument jest niezrozumiały, to nie można było zastosować się do odpowiednich instrukcji, a ponadto pociąga za sobą bezpośrednie, jasne i lakoniczne sformułowanie tekstu znajdującego się w każdym z nich.

Części algorytmu

Każda operacja algorytmiczna składa się z trzech różnych części, które podlegają podstawowej strukturze systemu, a są to:

  • Dane wejściowe: zwane także nagłówkiem lub punktem początkowym, jest to instrukcja początkowa, która reprezentuje genezę algorytmu i motywuje do jego czytania.
  • Proces: zwany także deklaracją, jest dokładnym opracowaniem oferowanym przez algorytm i jest zasadniczo pniem jego kluczy do formułowania instrukcji.
  • Dane wyjściowe: w tej ostatniej fazie są określone instrukcje określone przez algorytm, na przykład jego polecenia lub rozdzielczości.

Przykłady algorytmów

Typowe przykłady obliczeń matematycznych to 2 + 3 = 5 dla dodawania i 15-9 = 6 dla odejmowania. Innym sposobem wizualizacji prostych algorytmów są przepisy kuchenne, ponieważ opisują one konkretny i uporządkowany proces, na przykład „najpierw należy włożyć pół garnka wody do podgrzania, następnie dodać szczyptę soli i na koniec pieprz zostanie podzielony w celu wydobycia nasion i żył ”. W modelu tym prezentowany jest początek, proces i koniec, które w zasadzie definiują algorytmy.

Typy algorytmów

Wśród różnych typów algorytmów istniejących na całym świecie nacisk kładzie się na te, które są klasyfikowane według systemu znaków, a inne na podstawie ich funkcji. Algorytm jest w zasadzie najbardziej znanym rozwiązaniem do rozwiązania dowolnego konkretnego problemu i zgodnie z jego strategiami i funkcjami wyróżnia się ich różne typy, wśród których wyróżnia się dynamiczna, odwrotna, brutalna, oportunistyczna, znakowanie. losowe itp. Oprócz wyżej wymienionych algorytmów istnieją tysiące takich, które nadają się do rozwiązywania problemów w dowolnym obszarze.

Zgodnie z twoim systemem znaków

W tej kategorii znajdują się jakościowe i ilościowe.

  • Algorytmy jakościowe charakteryzują się posiadaniem elementów werbalnych, czego przykładem są instrukcje lub rozpoznawane „krok po kroku” nadawane ustnie, takie jak przepisy kulinarne czy procedury wykonywania prac ręcznych.
  • Algorytmy ilościowe są całkowitym przeciwieństwem algorytmów jakościowych, ze względu na obecność pewnych elementów numerycznych i wykorzystanie matematyki do wykonywania obliczeń, na przykład w przypadku znalezienia pierwiastka kwadratowego lub rozwiązania równań.

W ramach tej klasyfikacji znajdują się również algorytmy obliczeniowe i nieobliczeniowe. Obliczeniowe wykonywane są za pomocą komputera i charakteryzują się złożonością do tego stopnia, że ​​wymagają obsługi maszyny, a ponadto są to algorytmy ilościowe, które można optymalizować. Te nieobliczeniowe nie muszą być wykonywane przy pomocy maszyny lub komputera; Dobrym tego przykładem jest program telewizyjny.

Zgodnie z jego funkcją

W tej klasyfikacji znajdują się następujące pozycje.

1. Algorytm znakowania

Charakteryzuje się to wykorzystaniem automatyzacji do sumiennego ustalania cen, skupiając się na czynnikach takich jak zachowanie użytkowników, a także jest znane jako możliwość automatycznego ustalania cen dewaluacji komponentów w celu zwiększenia zysków użytkowników. sprzedawców. Odegrała ważną rolę we wspólnych praktyk w lotniczych przemysłu od początku lat 1990..

Algorytm znakowania wyróżnia się tym, że jest jedną z najczęstszych praktyk w wysoce konkurencyjnych branżach, odnosząc się do biur podróży lub placówek internetowych. Ten rodzaj algorytmu może być niezwykle złożony lub stosunkowo prosty, ponieważ w wielu przypadkach zauważa się, że są one optymalizowane lub samouczące się z ciągłością niektórych testów. Poza tym algorytmy tagowania mogą również stać się niepopularne wśród klientów, ponieważ jednostki cenią zarówno stabilność, jak i uczciwość.

2. Algorytmy probabilistyczne

Są to takie, w których sposób uzyskiwania wyników zależy od prawdopodobieństw, są to powszechnie znane jako algorytmy losowe.

W niektórych zastosowaniach obsługa tego typu operacji jest powszechna, na przykład podczas symulacji zachowania dowolnego istniejącego lub opracowanego systemu w czasie, w wyniku czego uzyskuje się przypadkowe rozwiązanie. W innych okolicznościach problem, który należy rozwiązać, jest zwykle deterministyczny, ale istnieje możliwość przekształcenia go w przypadkowy, aby rozwiązać go za pomocą algorytmu prawdopodobieństwa. Zaletą losowości jest to, że jej zastosowanie nie wymaga bardzo zaawansowanych badań matematycznych.

Ponadto w tej grupie istnieją trzy główne typy, które są znane jako numeryczne, Monte Carlo i Las Vegas.

  • Algorytmy numeryczne mogą dostarczyć przybliżonego wyniku problemu i są powszechnie stosowane w inżynierii.
  • Algorytmy Monte Carlo mogą dać dobre lub złe rozwiązanie i mieć pewien margines błędu i wreszcie.
  • Algorytmy Las Vegas wyróżniają się tym, że nigdy nie pozostawiają błędnej odpowiedzi, w rzeczywistości znajdują właściwe rozwiązanie lub po prostu informują o możliwej awarii.

Programowanie dynamiczne odnosi się do metody, w której algorytm oblicza wyniki. Czasami rozwiązania pewnych elementów, które mają problemy, zależą od wyników innych mniejszych problemów. Tak więc, aby je rozwiązać, te same wartości muszą zostać ponownie obliczone, aby rozwiązać najmniejsze podproblemy, jednak może to spowodować stratę cykli. Aby to naprawić, można zastosować programowanie dynamiczne iw tym przypadku zapamiętuje się rozwiązanie każdego podproblemu, aby użyć tej samej wartości zamiast kilkukrotnego jej powtarzania.

3. Algorytmy heurystyczne

Wyróżnia je znajdowanie rozwiązań, a mimo to nie gwarantuje znalezienia najlepszej odpowiedzi, dlatego można je traktować jako algorytmy przybliżone. Można ich użyć, gdy znalezienie rozwiązania normalną trasą jest uważane za niemożliwe. Heurystyka zapewnia zastosowania, które zostaną wyjaśnione poniżej. W planowaniu służą do planowania czynności w krótkim okresie czasu, w projektowaniu służą do wyznaczania układów elektrycznych lub cyfrowych, aw symulacji służą do weryfikacji określonych procedur.

4. Algorytmy cofania

Są one znane jako strategie rekurencyjne, które rozwiązują problemy, takie jak łamigłówki, labirynty lub podobne elementy, w których przeprowadza się głębokie wyszukiwanie w celu znalezienia możliwego rozwiązania. Jego nazwa odnosi się do faktu, że w zapytaniach prowadzonych w celu znalezienia wyniku zawsze wraca do poprzedniego punktu, aby móc przetestować alternatywy. Są one zwykle odwoływane, aby obserwować ich wpływ na gospodarkę, rynki, wycenę, niektóre operacje, a nawet samo społeczeństwo.

5. Algorytm chciwości

Jest znany jako niszczyciel lub słodycze i ma zastosowanie w problemach optymalizacji, na każdym etapie tego algorytmu dokonywany jest logiczny i optymalny wybór, aby uzyskać najlepsze z globalnych rozwiązań. Należy jednak wziąć pod uwagę, że po wydaniu orzeczenia absolutnie nic nie można zrobić, aby go poprawić lub zmienić w przyszłości. Ta operacja nosi tę nazwę, ponieważ na każdym kroku wybierana jest najlepsza frakcja, która jest w stanie „przełknąć”, bez martwienia się o to, co stanie się później.

Właściwości algorytmu

Wielu autorów próbowało zdefiniować algorytmy w sposób formalny, korzystając z modeli matematycznych. Jednak te okazy są ściśle powiązane ze szczególnym rodzajem informacji, które obejmują liczby, symbole i niektóre wykresy, podczas gdy operują na ogromnej ilości dystrybucji danych. Ogólnie rzecz biorąc, wspólny udział każdej z definicji jest podsumowany w następujących trzech właściwościach:

Opis problemu

Rozwiązywanie problemów za pomocą komputera może składać się z tego procesu, w którym problem jest opisany i dopuszcza się opracowanie programu zdolnego do jego rozwiązania. Proces ten wymaga analizy problemu, zaprojektowania algorytmu i jego przekształcenia w program, a także jego wykonania i walidacji. Pierwsze dwa kroki są najbardziej złożone w tym procesie, ale po zbadaniu problemu i uzyskaniu algorytmu, który może go rozwiązać, twoje zadanie polega głównie na przetłumaczeniu go na żądany język programowania.

Analiza rozwiązania ogólnego

Po zdefiniowaniu problemu nadszedł czas, aby przeanalizować następujące kwestie:

  • Informacje o biletach, które świadczą nam.
  • Pożądane rezultaty.
  • Dziedzina pracy, wypowiedzi lub innych niezbędnych elementów.

Analiza algorytmów jest znana jako najważniejsza część szerszej teorii złożoności obliczeniowej, ponieważ zapewnia obliczenia teoretyczne dla zasobów, których każdy algorytm wymaga do rozwiązania danego problemu obliczeniowego. Wykonując badanie teoretyczne, często oblicza się jego komplikacje w sensie asymptotycznym, aby uzyskać wystarczająco duży rozmiar danych wejściowych. W tym celu stosuje się asymptotyczną granicę górną wraz z notacją theta i omega i należy zauważyć, że pomiar nieasymptotyczny można skomputeryzować.

Dokładne miary wydajności są naprawdę przydatne dla tych, którzy faktycznie używają algorytmów, ponieważ mają większą precyzję, a to pozwala im określić czas potrzebny do wykonania. Dla niektórych osób, takich jak twórcy gier wideo, ukryta stała może oznaczać dużą różnicę między sukcesem a porażką. Oceny czasu mogą zależeć od tego, jak określony jest określony krok, a aby analiza miała sens, należy zagwarantować, że czas jest wyraźnie ograniczony przez stałą.

Opracowanie algorytmu

Aby przeprowadzić opracowanie operacji, ważne jest, aby przeprowadzić szereg procedur w celu dostosowania się do rozwiązania samego problemu. Na początek należy przeprowadzić wcześniejszą analizę trudności, a to jest zrobione poprzez badanie, które pokazuje prawdziwe działanie problemu na długo przed wykonaniem jakiegokolwiek algorytmu. Dlatego oceniana jest definicja wymagań, na tym etapie musisz mieć jasne wyobrażenie o problemach do rozwiązania, czy to suma dwóch liczb, kolejność listy liczb itp.

Później wykonywana jest odpowiednia identyfikacja modułów, ponieważ od tego zależy poprawna implementacja algorytmów w celu zapewnienia możliwych rozwiązań dla zidentyfikowanych powyżej wymagań.

Wreszcie obliczenia są realizowane w języku programowania, który jest zrozumiały dla komputera, tak aby był w stanie zrozumieć instrukcje, które modeluje, a tym samym może je wykonać, osiągając oczekiwany rezultat. W tej ostatniej procedurze można już mówić o programie, który składa się z szeregu instrukcji, które są uporządkowane jedna po drugiej i potrafią rozwiązać ustalone wymagania.

Należy wspomnieć, że w czasie sekwencyjnym algorytmy pełnią swoją funkcję w dyskretyzowanym czasie i starają się zdefiniować sekwencje stanów obliczeniowych w każdym uznanym za ważny wejściu. W stanie abstrakcyjnym operacje te są elementami niezależnymi i uważa się, że w nich pierwotne struktury porządkowe mogą stać się niezmienne pod wpływem izomorfizmu. W eksploracji ograniczonej przejścia z jednego stanu do drugiego są w pełni ustalane przez trwałe i skończone wyjaśnienie, w którym między jednym stanem a następnym brana jest pod uwagę tylko ograniczona liczba terminów w stanie bieżącym.

Nie należy też zapominać, że algorytmy są zwykle wyrażane za pomocą „pseudokodowych” języków programowania, zwykłego języka, a nawet dobrze znanych schematów blokowych. Podobnie, należy wspomnieć, że algorytmy odgrywają podstawową rolę w obliczeniach ze względu na ich reprezentację danych jako ciągi bitów. Z innego punktu widzenia program definiuje się jako algorytm, który przekazuje komputerowi te określone kroki, które musi wykonać, aby odpowiednio wykonać określone czynności. Z drugiej strony, nauka pisania pseudokodów ułatwia programowanie i dlatego zostanie wyjaśniona później.

Języki programowania nazywane są językiem formalnym lub sztucznym, ponieważ mają dobrze zdefiniowane reguły gramatyczne, ma możliwość zapewnienia programiście możliwości tekstalizowania szeregu instrukcji lub sekwencji przepisów w postaci algorytmów w celu aby zachować kontrolę nad fizycznym i logicznym zachowaniem komputera, w ten sposób można uzyskać dostęp do różnych typów informacji. Ten zestaw wskazówek zapisanych w języku programowania nazywa się programem.

Języki programowania składają się zwykle z zestawu symboli oraz reguł gramatycznych i semantycznych, które określają aktualne struktury języka i ich znaczenie. Z innej perspektywy języki komputerowe obejmują również języki programowania, czego wyraźnym przykładem jest HTML, który jest tym, który spełnia określone instrukcje, aby wykonać zawartość różnych dokumentów. Język programowania może pozwolić na precyzyjne określenie tych danych, które muszą być obsługiwane przez określone oprogramowanie w wielu różnych okolicznościach.

Z drugiej strony, pseudokod jest algorytmicznym językiem opisu, który wykorzystuje podstawowe konwencje prawdziwego języka programowania, ale jest przeznaczony do czytania przez ludzi zamiast czytania przez maszynę, zachowując niezależność od wszelkich innych typów język programowania. Pseudokod ignoruje szczegóły, które nie są uważane za niezbędne dla zrozumienia algorytmu przez człowieka, takie jak kody systemowe, deklaracje zmiennych, a nawet niektóre podprogramy. W ten sposób język programowania dąży do uzupełnienia się dokładnymi opisami w języku naturalnym lub zwartymi zapisami matematycznymi.