Definicja algorytmu
Słowo Algorytm oznacza Zbiór skończonych reguł lub instrukcji, których należy przestrzegać podczas obliczeń lub innych operacji rozwiązywania problemów
Lub
Procedura rozwiązywania problemu matematycznego w skończonej liczbie kroków, która często obejmuje operacje rekurencyjne .
Dlatego algorytm odnosi się do sekwencji skończonych kroków prowadzących do rozwiązania konkretnego problemu.

Zastosowanie algorytmów:
Algorytmy odgrywają kluczową rolę w różnych dziedzinach i mają wiele zastosowań. Niektóre z kluczowych obszarów, w których stosowane są algorytmy, obejmują:
- Informatyka: Algorytmy stanowią podstawę programowania komputerów i służą do rozwiązywania problemów, od prostego sortowania i wyszukiwania po złożone zadania, takie jak sztuczna inteligencja i uczenie maszynowe.
- Matematyka: Algorytmy służą do rozwiązywania problemów matematycznych, takich jak znalezienie optymalnego rozwiązania układu równań liniowych lub znalezienie najkrótszej ścieżki na wykresie.
- Badania operacyjne : Algorytmy służą do optymalizacji i podejmowania decyzji w takich dziedzinach, jak transport, logistyka i alokacja zasobów.
- Sztuczna inteligencja: Algorytmy stanowią podstawę sztucznej inteligencji i uczenia maszynowego i służą do opracowywania inteligentnych systemów, które mogą wykonywać zadania, takie jak rozpoznawanie obrazów, przetwarzanie języka naturalnego i podejmowanie decyzji.
- Nauka o danych: Algorytmy służą do analizowania, przetwarzania i wydobywania wniosków z dużych ilości danych w takich dziedzinach, jak marketing, finanse i opieka zdrowotna.
To tylko kilka przykładów z wielu zastosowań algorytmów. Zastosowanie algorytmów stale się rozszerza wraz z pojawieniem się nowych technologii i dziedzin, co czyni je istotnym elementem współczesnego społeczeństwa.
Algorytmy mogą być proste i złożone, w zależności od tego, co chcesz osiągnąć.
Można to zrozumieć na przykładzie gotowania nowego przepisu. Aby ugotować nowy przepis, należy przeczytać instrukcje i kroki, a następnie wykonać je jeden po drugim, w podanej kolejności. Uzyskany w ten sposób wynik oznacza, że nowe danie jest doskonale ugotowane. Za każdym razem, gdy korzystasz z telefonu, komputera, laptopa lub kalkulatora, korzystasz z algorytmów. Podobnie algorytmy pomagają wykonać zadanie w programowaniu, aby uzyskać oczekiwany wynik.
Zaprojektowane algorytmy są niezależne od języka, tj. są po prostu prostymi instrukcjami, które można zaimplementować w dowolnym języku, a mimo to wynik będzie taki sam, jak oczekiwano.
Jakie jest zapotrzebowanie na algorytmy?
- Algorytmy są niezbędne do sprawnego i skutecznego rozwiązywania złożonych problemów.
- Pomagają automatyzować procesy i czynią je bardziej niezawodnymi, szybszymi i łatwiejszymi w realizacji.
- Algorytmy umożliwiają także komputerom wykonywanie zadań, które byłyby trudne lub niemożliwe do wykonania przez człowieka ręcznie.
- Są wykorzystywane w różnych dziedzinach, takich jak matematyka, informatyka, inżynieria, finanse i wiele innych, do optymalizacji procesów, analizowania danych, przewidywania i zapewniania rozwiązań problemów.
Jakie są cechy algorytmu?
Ponieważ nie stosuje się żadnych pisemnych instrukcji gotowania według przepisu, a jedynie standardowy. Podobnie nie wszystkie pisemne instrukcje programowania są algorytmem. Aby niektóre instrukcje mogły być algorytmem, muszą posiadać następujące cechy:
- Jasne i jednoznaczne : Algorytm powinien być jednoznaczny. Każdy z jego etapów powinien być jasny we wszystkich aspektach i musi prowadzić tylko do jednego znaczenia.
- Dobrze zdefiniowane wejścia : Jeśli algorytm nakazuje pobieranie danych wejściowych, powinny to być dobrze zdefiniowane dane wejściowe. Może, ale nie musi, wymagać wprowadzenia danych.
- Dobrze zdefiniowane wyniki: Algorytm musi jasno określać, jaki wynik zostanie uzyskany, i powinien być również dobrze zdefiniowany. Powinien generować co najmniej 1 wynik.
- Skończoność: Algorytm musi być skończony, tzn. powinien zakończyć się po skończonym czasie.
- Wykonalny: Algorytm musi być prosty, ogólny i praktyczny, aby można go było wykonać przy dostępnych zasobach. Nie może zawierać żadnej przyszłej technologii ani niczego takiego.
- Niezależny od języka: Zaprojektowany algorytm musi być niezależny od języka, tj. musi to być po prostu zwykła instrukcja, którą można zaimplementować w dowolnym języku, a mimo to wynik będzie taki sam, jak oczekiwano.
- Wejście : Algorytm ma zero lub więcej danych wejściowych. Każdy zawierający operator podstawowy musi akceptować zero lub więcej danych wejściowych.
- Wyjście : Algorytm generuje co najmniej jedno wyjście. Każda instrukcja zawierająca operator podstawowy musi akceptować zero lub więcej danych wejściowych.
- Definitywność: Wszystkie instrukcje w algorytmie muszą być jednoznaczne, precyzyjne i łatwe do interpretacji. Odnosząc się do dowolnej instrukcji algorytmu, można jasno zrozumieć, co należy zrobić. Każdy podstawowy operator w instrukcji musi być zdefiniowany bez żadnych dwuznaczności.
- Skończoność: We wszystkich przypadkach testowych algorytm musi zakończyć się po skończonej liczbie kroków. Każda instrukcja zawierająca operator podstawowy musi zostać zakończona w skończonym czasie. Nieskończone pętle lub funkcje rekurencyjne bez warunków podstawowych nie mają skończoności.
- Skuteczność: Algorytm musi zostać opracowany przy użyciu bardzo prostych, prostych i wykonalnych operacji, aby można go było prześledzić przy użyciu samego papieru i ołówka.
Właściwości algorytmu:
- Powinien zakończyć się po upływie określonego czasu.
- Powinien generować co najmniej jedno wyjście.
- Powinno zająć zero lub więcej danych wejściowych.
- Powinien to być środek deterministyczny dający ten sam wynik dla tego samego przypadku wejściowego.
- Każdy krok algorytmu musi być skuteczny, czyli każdy krok powinien wykonać jakąś pracę.
Rodzaje algorytmów:
Dostępnych jest kilka rodzajów algorytmów. Niektóre ważne algorytmy to:
1. Algorytm brutalnej siły :
To najprostsze podejście do problemu. Algorytm brutalnej siły to pierwsze podejście do znalezienia problemu, gdy widzimy problem.
2. Algorytm rekurencyjny :
Algorytm rekurencyjny opiera się na rekurencja . W tym przypadku problem jest dzielony na kilka podczęści i wielokrotnie wywoływany tą samą funkcją.
3. Algorytm cofania :
Algorytm cofania buduje rozwiązanie przeszukując wszystkie możliwe rozwiązania. Korzystając z tego algorytmu, kontynuujemy budowanie rozwiązania według kryteriów. Ilekroć rozwiązanie zawiedzie, wracamy do punktu awarii, opierając się na następnym rozwiązaniu i kontynuujemy ten proces, aż znajdziemy rozwiązanie lub zajmiemy się wszystkimi możliwymi rozwiązaniami.
4. Algorytm wyszukiwania :
Algorytmy wyszukiwania to te, które służą do wyszukiwania elementów lub grup elementów z określonej struktury danych. Mogą być różnych typów w zależności od podejścia lub struktury danych, w której element powinien się znaleźć.
5. Algorytm sortowania :
Sortowanie to uporządkowanie grupy danych w określony sposób, zgodnie z wymaganiami. Algorytmy pomagające w realizacji tej funkcji nazywane są algorytmami sortowania. Ogólnie algorytmy sortowania służą do sortowania grup danych w sposób rosnący lub malejący.
6. Algorytm mieszający :
Algorytmy mieszające działają podobnie do algorytmu wyszukiwania. Zawierają jednak indeks z identyfikatorem klucza. W hashowaniu klucz jest przypisywany do konkretnych danych.
7. Algorytm dziel i zwyciężaj :
Algorytm ten dzieli problem na podproblemy, rozwiązuje pojedynczy podproblem i łączy rozwiązania, aby uzyskać rozwiązanie końcowe. Składa się z trzech następujących kroków:
- Dzielić
- Rozwiązywać
- Łączyć
8. Chciwy algorytm :
W tego typu algorytmach rozwiązanie jest budowane część po części. Rozwiązanie następnej części opiera się na bezpośrednich korzyściach płynących z następnej części. Rozwiązanie, które przyniesie największe korzyści, zostanie wybrane jako rozwiązanie w następnej części.
co to jest mapa skrótu Java
9. Algorytm programowania dynamicznego :
Algorytm ten wykorzystuje koncepcję wykorzystania już znalezionego rozwiązania, aby uniknąć powtarzania obliczeń tej samej części problemu. Dzieli problem na mniejsze, nakładające się na siebie podproblemy i rozwiązuje je.
10. Randomizowany algorytm :
W algorytmie randomizowanym posługujemy się liczbą losową, dzięki czemu daje to natychmiastową korzyść. Liczba losowa pomaga w podjęciu decyzji o oczekiwanym wyniku.
Więcej informacji na temat rodzajów algorytmów można znaleźć w artykule nt Rodzaje algorytmów .
Zalety algorytmów:
- Łatwo to zrozumieć.
- Algorytm to stopniowa reprezentacja rozwiązania danego problemu.
- W algorytmie problem jest podzielony na mniejsze części lub kroki, dlatego programiście łatwiej jest przekonwertować go na rzeczywisty program.
Wady algorytmów:
- Napisanie algorytmu zajmuje dużo czasu, więc jest czasochłonne.
- Zrozumienie złożonej logiki za pomocą algorytmów może być bardzo trudne.
- Instrukcje rozgałęziające i pętlowe są trudne do pokazania w algorytmach (chochlik) .
Jak zaprojektować algorytm?
Aby napisać algorytm, wymagane są następujące elementy:
- The problem który ma zostać rozwiązany przez ten algorytm, czyli jasna definicja problemu.
- The ograniczenia problemu należy wziąć pod uwagę przy jego rozwiązywaniu.
- The wejście należy podjąć, aby rozwiązać problem.
- The wyjście należy się spodziewać, gdy problem zostanie rozwiązany.
- The rozwiązanie tego problemu mieści się w zadanych ograniczeniach.
Następnie za pomocą powyższych parametrów pisze się algorytm tak, aby rozwiązał problem.
Przykład: Rozważmy przykład dodania trzech liczb i wydrukowania sumy.
Krok 1: Spełnienie wymagań wstępnych
Jak omówiono powyżej, aby napisać algorytm, muszą zostać spełnione jego warunki wstępne.
- Problem, który ma zostać rozwiązany przez ten algorytm : Dodaj 3 liczby i wydrukuj ich sumę.
- Ograniczenia problemu, które należy wziąć pod uwagę podczas rozwiązywania problemu : Liczby mogą zawierać tylko cyfry i nie mogą zawierać żadnych innych znaków.
- Dane wejściowe, które należy zastosować, aby rozwiązać problem: Trzy liczby do dodania.
- Wynik, którego można się spodziewać po rozwiązaniu problemu: Suma trzech liczb przyjętych jako dane wejściowe, tj. pojedyncza wartość całkowita.
- Rozwiązanie tego problemu przy danych ograniczeniach: Rozwiązanie polega na dodaniu 3 liczb. Można to zrobić za pomocą operatora „+”, bitowo lub dowolną inną metodą.
Krok 2: Zaprojektowanie algorytmu
Zaprojektujmy teraz algorytm, korzystając z powyższych warunków wstępnych:
Algorytm dodawania 3 liczb i drukowania ich sumy:
- POCZĄTEK
- Zadeklaruj 3 zmienne całkowite num1, num2 i num3.
- Weź trzy liczby, które mają zostać dodane, jako dane wejściowe odpowiednio zmiennych num1, num2 i num3.
- Zadeklaruj sumę zmiennej całkowitej, w której będzie przechowywana wynikowa suma 3 liczb.
- Dodaj 3 liczby i zapisz wynik w sumie zmiennej.
- Wydrukuj wartość sumy zmiennej
- KONIEC
Krok 3: Testowanie algorytmu poprzez jego implementację.
Aby przetestować algorytm, zaimplementujmy go w języku C.
stosy Java
Program:
C++ // C++ program to add three numbers // with the help of above designed // algorithm #include using namespace std; int main() { // Variables to take the input of // the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input cout << 'Enter the 1st number: '; cin>> liczba1; cout<< ' ' << num1 << endl; cout << 'Enter the 2nd number: '; cin>> liczba2; cout<< ' ' << num2 << endl; cout << 'Enter the 3rd number: '; cin>> liczba3; cout<< ' ' << num3; // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum cout << '
Sum of the 3 numbers is: ' << sum; return 0; } // This code is contributed by shivanisinghss2110>
C // C program to add three numbers // with the help of above designed algorithm #include int main() { // Variables to take the input of the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input printf('Enter the 1st number: '); scanf('%d', &num1); printf('%d
', num1); printf('Enter the 2nd number: '); scanf('%d', &num2); printf('%d
', num2); printf('Enter the 3rd number: '); scanf('%d', &num3); printf('%d
', num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum printf('
Sum of the 3 numbers is: %d', sum); return 0; }>
Jawa // Java program to add the three numbers // with the help of above designed // algorithm import java.util.*; class GFG { public static void main(String[] args) { // Variable to store the resultant sum int sum = 0; // Declare the object and initialize with // predefined standard input object Scanner sc = new Scanner(System.in); // Scanner definition // Variables to take the input of // the 3 numbers System.out.println('Enter the 1st number: '); int num1 = sc.nextInt(); // input is an Integer // read by nextInt() function System.out.println(' ' + num1); System.out.println('Enter the 2nd number: '); int num2 = sc.nextInt(); System.out.println(' ' + num2); System.out.println('Enter the 3rd number: '); int num3 = sc.nextInt(); System.out.println(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; System.out.println('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Rishab Dugar*/>
Pyton # Python3 program to add three numbers # with the help of above designed # algorithm if __name__ == '__main__': # Variables to take the input of # the 3 numbers num1 = num2 = num3 = 0 # Variable to store the resultant sum sum = 0 # Take the 3 numbers as input num1 = int(input('Enter the 1st number: ')) num2 = int(input('Enter the 2nd number: ')) num3 = int(input('Enter the 3rd number: ')) # Calculate the sum using + operator # and store it in variable sum sum = num1 + num2 + num3 # Print the sum print('
Sum of the 3 numbers is:', sum)>
C# // C# program to add the three numbers // with the help of above designed // algorithm using System; class GFG { static public void Main () { // Variable to store the resultant sum int sum = 0; // Variables to take the input of // the 3 numbers Console.Write('Enter the 1st number: '); int num1 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num1); Console.Write('Enter the 2nd number: '); int num2 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num2); Console.Write('Enter the 3rd number: '); int num3 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; Console.WriteLine('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Pushpesh Raj*/>
JavaScript // Javascript program to add three numbers // with the help of above designed // algorithm // Variables to take the input of // the 3 numbers let num1 = 0, num2 = 0, num3 = 0; // Variable to store the resultant sum let sum = 0; // Take the 3 numbers as input console.log('Enter the 1st number: '); num1 = parseInt(prompt()); console.log(' ' + num1 + ' '); console.log('Enter the 2nd number: '); num2=parseInt(prompt()); console.log(' ' + num2 + ' '); console.log('Enter the 3rd number: '); num3=parseInt(prompt()); console.log(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum console.log(' Sum of the 3 numbers is: ' + sum); // This code is contributed by Aman Kumar>
Wyjście
Podaj pierwszą liczbę: 0 Podaj drugą liczbę: 0 Podaj trzecią liczbę: -1577141152 Suma 3 liczb wynosi: -1577141152
Oto algorytm krok po kroku kodu:
- Zadeklaruj trzy zmienne num1, num2 i num3, w których będą przechowywane trzy liczby do dodania.
- Zadeklaruj sumę zmienną do przechowywania sumy trzech liczb.
- Użyj instrukcji cout, aby poprosić użytkownika o wprowadzenie pierwszej liczby.
- Użyj instrukcji cin, aby odczytać pierwszą liczbę i zapisać ją w num1.
- Użyj instrukcji cout, aby poprosić użytkownika o wprowadzenie drugiej liczby.
- Użyj instrukcji cin, aby odczytać drugą liczbę i zapisać ją w num2.
- Użyj instrukcji cout, aby poprosić użytkownika o wprowadzenie trzeciej liczby.
- Użyj instrukcji cin, aby odczytać i zapisać trzecią liczbę w num3.
- Oblicz sumę trzech liczb za pomocą operatora + i zapisz ją w zmiennej sumy.
- Użyj instrukcji cout, aby wydrukować sumę trzech liczb.
- Funkcja główna zwraca 0, co oznacza pomyślne wykonanie programu.
Złożoność czasowa: O(1)
Przestrzeń pomocnicza: O(1)
Jeden problem, wiele rozwiązań: Rozwiązaniem algorytmu może być więcej niż jedno lub nie. Oznacza to, że przy implementacji algorytmu może istnieć więcej niż jedna metoda jego implementacji. Przykładowo w powyższym zadaniu dodania 3 liczb sumę można obliczyć na wiele sposobów:
- + operator
- Operatory bitowe
- . . itp
Jak analizować algorytm?
Aby standardowy algorytm był dobry, musi być wydajny. Dlatego należy sprawdzać i utrzymywać skuteczność algorytmu. Może przebiegać w dwóch etapach:
1. Analiza priorytetowa:
Priori znaczy wcześniej. Stąd analiza Priori polega na sprawdzeniu algorytmu przed jego implementacją. W tym przypadku algorytm jest sprawdzany, gdy jest zapisywany w formie kroków teoretycznych. Tę efektywność algorytmu mierzy się zakładając, że wszystkie inne czynniki, na przykład szybkość procesora, są stałe i nie mają wpływu na implementację. Robi to zwykle projektant algorytmu. Analiza ta jest niezależna od rodzaju sprzętu i języka kompilatora. Podaje przybliżone odpowiedzi na temat złożoności programu.
2. Analiza a posteriori:
Późniejszy znaczy później. Stąd analiza posteriorna oznacza sprawdzenie algorytmu po jego zaimplementowaniu. W tym przypadku algorytm jest sprawdzany poprzez implementację go w dowolnym języku programowania i wykonanie. Analiza ta pomaga uzyskać aktualny i rzeczywisty raport analityczny dotyczący poprawności (dla wszystkich możliwych danych wejściowych, jeśli pokazuje/zwraca prawidłowe dane wyjściowe lub nie), wymaganego miejsca, zużytego czasu itp. Oznacza to, że zależy to od języka kompilator i rodzaj używanego sprzętu.
Co to jest złożoność algorytmu i jak ją znaleźć?
Algorytm definiuje się jako złożony na podstawie ilości zajmowanej przestrzeni i czasu. Stąd złożoność algorytmu odnosi się do miary czasu potrzebnego do wykonania i uzyskania oczekiwanego wyniku, a także przestrzeni potrzebnej do przechowywania wszystkich danych (wejściowych, tymczasowych i wyjściowych). Zatem te dwa czynniki definiują efektywność algorytmu.
Dwa czynniki złożoności algorytmu to:
- Czynnik czasu : Czas mierzy się poprzez zliczenie liczby kluczowych operacji, takich jak porównania, w algorytmie sortowania.
- Czynnik kosmiczny : Przestrzeń mierzy się poprzez zliczenie maksymalnej przestrzeni pamięci wymaganej przez algorytm do uruchomienia/wykonania.
Dlatego też Złożoność algorytmu można podzielić na dwa typy :
1. Złożoność przestrzeni : Złożoność przestrzenna algorytmu odnosi się do ilości pamięci wymaganej przez algorytm do przechowywania zmiennych i uzyskania wyniku. Może to dotyczyć wejść, operacji tymczasowych lub wyjść.
Jak obliczyć złożoność przestrzeni?
Złożoność przestrzenną algorytmu oblicza się poprzez określenie następujących 2 składników:
- Naprawiono część: Odnosi się to do przestrzeni wymaganej przez algorytm. Na przykład zmienne wejściowe, zmienne wyjściowe, rozmiar programu itp.
- Część zmienna: Odnosi się to do przestrzeni, która może być różna w zależności od implementacji algorytmu. Na przykład zmienne tymczasowe, dynamiczna alokacja pamięci, przestrzeń stosu rekurencji itp.
Dlatego złożoność przestrzeni S(P) dowolnego algorytmu P jest S(P) = C + SP(I) , gdzie C jest częścią stałą, a S(I) jest częścią zmienną algorytmu, która zależy od cechy instancji I.
Przykład: Rozważ poniższy algorytm wyszukiwania liniowego
Krok 1: ROZPOCZNIJ
Krok 2: Pobierz n elementów tablicy w arr i liczbę do przeszukania w x
Krok 3: Zacznij od lewego elementu arr[] i jeden po drugim porównaj x z każdym elementem arr[]
Krok 4: Jeśli x pasuje do elementu, wydrukuj wartość True.
Krok 5: Jeśli x nie pasuje do żadnego elementu, wydrukuj fałsz.
Krok 6: KONIEC
Tutaj istnieją 2 zmienne arr[] i x, gdzie arr[] jest częścią zmienną n elementów, a x jest częścią stałą. Stąd S(P) = 1+n. Zatem złożoność przestrzeni zależy od n (liczba elementów). Teraz przestrzeń zależy od typów danych danych zmiennych i typów stałych i zostanie odpowiednio pomnożona.
2. Złożoność czasu : Złożoność czasowa algorytmu odnosi się do ilości czasu potrzebnego algorytmowi na wykonanie i uzyskanie wyniku. Może to dotyczyć normalnych operacji, instrukcji warunkowych if-else, instrukcji pętli itp.
Jak obliczyć , Złożoność czasowa?
Złożoność czasową algorytmu oblicza się również poprzez określenie 2 następujących elementów:
- Stała część czasu: W tej części znajduje się każda instrukcja wykonywana tylko raz. Na przykład wejście, wyjście, if-else, przełącznik, operacje arytmetyczne itp.
- Część o zmiennym czasie: Każda instrukcja wykonywana więcej niż raz, powiedzmy n razy, znajduje się w tej części. Na przykład pętle, rekurencja itp.
Dlatego złożoność czasowaT(P) dowolnego algorytmu P jest T(P) = C + TP(I) , gdzie C jest częścią stałą czasu, a TP(I) jest częścią zmienną algorytmu, która zależy od cechy instancji I.
Przykład: W powyższym algorytmie wyszukiwania liniowego złożoność czasową oblicza się w następujący sposób:
Krok 1: – Stały czas
Krok 2: — Zmienny czas (biorąc pod uwagę n danych wejściowych)
Krok 3: – Zmienny czas (do długości tablicy (n) lub indeksu znalezionego elementu)
Krok 4: – Stały czas
Krok 5: – Stały czas
Krok 6: – Stały czas
Stąd T(P) = 1 + n + n(1 + 1) + 1 = 2 + 3n, co można powiedzieć jako T(n).
Jak wyrazić algorytm?
- Język naturalny: - Tutaj wyrażamy algorytm w naturalnym języku angielskim. Zrozumienie z niego algorytmu jest zbyt trudne.
- Schemat blokowy :- Tutaj wyrażamy algorytm, tworząc a graficzne/obrazkowe przedstawienie tego. Jest łatwiejszy do zrozumienia niż język naturalny.
- Pseudo kod :- Tutaj wyrażamy algorytm w formie adnotacji i tekstu informacyjnego napisanego prostym językiem angielskim, który jest bardzo podobny do prawdziwego kodu, ale ponieważ nie ma składni jak żaden z języków programowania, nie może być skompilowany ani zinterpretowany przez komputer . Jest to najlepszy sposób wyrażenia algorytmu, ponieważ może go zrozumieć nawet laik posiadający wiedzę na poziomie szkolnym.