Czym są algorytmy komputerowe i jak działają?
Opublikowany: 2022-01-29Jeśli nie interesujesz się matematyką lub programowaniem, słowo „algorytm” może być dla ciebie greckie, ale jest to jeden z elementów wszystkiego, czego używasz do czytania tego artykułu. Oto krótkie wyjaśnienie, czym one są i jak działają.
Zastrzeżenie: Nie jestem nauczycielem matematyki ani informatyki, więc nie wszystkie używane przeze mnie terminy są techniczne. To dlatego, że staram się wyjaśnić wszystko prostym angielskim dla ludzi, którzy nie czują się dobrze z matematyką. Biorąc to pod uwagę, w grę wchodzi trochę matematyki i jest to nieuniknione. Matematycy geeksowie mogą poprawiać lub lepiej wyjaśniać w komentarzach, ale proszę, zachowajcie prostotę dla matematycznie niechętnych wśród nas.
Zdjęcie autorstwa Iana Ruotsala
Co to jest algorytm?
Słowo „algorytm” ma etymologię podobną do „algebry”, z wyjątkiem tego, że odnosi się do samego arabskiego matematyka, al-Khwarizmi (tylko ciekawa ciekawostka). Algorytm dla nie-programistów wśród nas to zestaw instrukcji, które pobierają dane wejściowe A i dostarczają dane wyjściowe B, które w pewien sposób zmieniają dane. Algorytmy mają szerokie zastosowanie. W matematyce mogą pomóc w obliczaniu funkcji na podstawie punktów w zbiorze danych, wśród znacznie bardziej zaawansowanych rzeczy. Oprócz ich wykorzystania w samym programowaniu, odgrywają główną rolę w takich rzeczach, jak kompresja plików i szyfrowanie danych.
Podstawowy zestaw instrukcji
Załóżmy, że twój przyjaciel spotyka się z tobą w sklepie spożywczym i prowadzisz go do siebie. Mówisz takie rzeczy jak „wejdź przez drzwi po prawej stronie”, „pomiń sekcję rybną po lewej stronie” i „jeśli zobaczysz mleczarnię, minąłeś mnie”. Tak działają algorytmy. Możemy użyć schematu blokowego, aby zilustrować instrukcje na podstawie kryteriów, które znamy z wyprzedzeniem lub dowiadujemy się w trakcie procesu.
(zdjęcie zatytułowane „Icebreaking Routine” EDIT: dzięki uprzejmości Trigger i Freewheel)
Od STARTU podążasz ścieżką i w zależności od tego, co się dzieje, podążasz „przepływem” do końcowego rezultatu. Schematy blokowe to wizualne narzędzia, które mogą w bardziej zrozumiały sposób przedstawiać zestaw instrukcji używanych przez komputery. Podobnie algorytmy pomagają zrobić to samo w przypadku modeli opartych na większej liczbie modeli matematycznych.
Wykresy
Użyjmy wykresu, aby zilustrować różne sposoby nadawania wskazówek.
Możemy wyrazić ten wykres jako połączenie między wszystkimi jego punktami. Aby odtworzyć ten obraz, możemy przekazać komuś zestaw instrukcji.
Metoda 1
Możemy przedstawić to jako serię punktów, a informacje będą zgodne ze standardową postacią wykresu = {(x1, y1), (x2, y2), …, (xn, yn)}.
wykres = {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1) }
Bardzo łatwo jest wykreślić każdy punkt jeden po drugim i połączyć je z poprzednim punktem. Wyobraź sobie jednak wykres z tysiącem punktów lub wieloma segmentami, które biegną w każdą stronę. Ta lista zawierałaby dużo danych, prawda? A potem konieczność łączenia każdego z nich, pojedynczo, może być uciążliwa.
Metoda 2
Inną rzeczą, którą możemy zrobić, to podać punkt początkowy, nachylenie prostej między nim a następnym punktem i wskazać, gdzie można się spodziewać następnego punktu, używając standardowej postaci wykresu={(punkt początkowy}, [m1, x1, h1 ], …, [mn, xn, hn]}.Tutaj zmienna „m” reprezentuje nachylenie linii, „x” oznacza kierunek liczenia (czy x lub y), a „h” mówi, jak wielu liczyć we wskazanym kierunku.Możesz również pamiętać, aby wykreślić punkt po każdym ruchu.
wykres = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}
Otrzymasz ten sam wykres. Widać, że ostatnie trzy wyrazy w tym wyrażeniu są takie same, więc możemy to skrócić, mówiąc po prostu „powtórz to trzy razy”. Powiedzmy, że za każdym razem, gdy pojawi się zmienna „R”, oznacza to powtórzenie ostatniej rzeczy. Możemy to zrobić:
wykres = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}
Co jeśli poszczególne punkty tak naprawdę nie mają znaczenia, a liczy się tylko sam wykres? Możemy skonsolidować te trzy ostatnie sekcje w następujący sposób:

wykres = {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}
Skraca to trochę rzeczy w stosunku do poprzedniego stanu.
Metoda 3
Spróbujmy zrobić to w inny sposób.
y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2,5x-7,5, 5≤x≤7
y=-3x+29, 7≤x≤8
y=-3x+29, 8≤x≤9
y=-3x+29, 9≤x≤10
Tutaj mamy to w kategoriach czysto algebraicznych. Po raz kolejny, jeśli same punkty nie mają znaczenia, a tylko wykres ma znaczenie, możemy skonsolidować ostatnie trzy pozycje.
y=0, 0≤x≤3
x=0, 0≤y≤3
y=x, 3≤x≤5
y=2,5x-7,5, 5≤x≤7
y=-3x+29, 7≤x≤10
Teraz, którą metodę wybierzesz, zależy od twoich umiejętności. Może jesteś świetny w matematyce i wykresach, więc wybierasz ostatnią opcję. Może jesteś dobry w nawigacji, więc wybierasz drugą opcję. Jednak w świecie komputerów wykonuje się wiele różnych zadań, a możliwości komputera tak naprawdę się nie zmieniają. Dlatego algorytmy są zoptymalizowane pod kątem wykonywanych zadań.
Innym ważnym punktem, na który należy zwrócić uwagę, jest to, że każda metoda opiera się na kluczu. Każdy zestaw instrukcji jest bezużyteczny, chyba że wiesz, co z nimi zrobić. Jeśli nie wiesz, że masz wykreślić każdy punkt i połączyć kropki, pierwszy zestaw punktów nic nie znaczy. Jeśli nie wiesz, co oznacza każda zmienna w drugiej metodzie, nie będziesz wiedział, jak je zastosować, podobnie jak klucz do szyfru. Ten klucz jest również integralną częścią korzystania z algorytmów i często ten klucz można znaleźć w społeczności lub za pośrednictwem „standardu”.
Kompresja pliku
Po pobraniu pliku .zip wyodrębniasz zawartość, aby móc użyć wszystkiego, co się w nim znajduje. Obecnie większość systemów operacyjnych może zanurzać się w plikach .zip, tak jak w normalnych folderach, robiąc wszystko w tle. Na moim komputerze z systemem Windows 95 ponad dekadę temu musiałem wyodrębnić wszystko ręcznie, zanim mogłem zobaczyć coś więcej niż nazwy plików w środku. Dzieje się tak, ponieważ to, co było przechowywane na dysku jako plik .zip, nie było użytecznej postaci. Pomyśl o rozkładanej kanapie. Chcąc wykorzystać ją jako łóżko, należy zdjąć poduszki i rozłożyć, co zajmuje więcej miejsca. Kiedy go nie potrzebujesz lub chcesz go przetransportować, możesz go złożyć.
Algorytmy kompresji są dostosowywane i optymalizowane specjalnie pod kątem typów plików, na które są kierowane. Na przykład formaty audio wykorzystują inny sposób przechowywania danych, które po zdekodowaniu przez kodek audio dadzą plik dźwiękowy podobny do oryginalnego kształtu fali. Aby uzyskać więcej informacji na temat tych różnic, zapoznaj się z naszym poprzednim artykułem, Jakie są różnice między wszystkimi tymi formatami audio? Bezstratne formaty audio i pliki .zip mają jedną wspólną cechę: oba dostarczają oryginalne dane w ich dokładnej formie po procesie dekompresji. Stratne kodeki audio wykorzystują inne sposoby oszczędzania miejsca na dysku, takie jak przycinanie częstotliwości, które nie są słyszalne przez ludzkie uszy i wygładzanie przebiegu w sekcjach, aby pozbyć się niektórych szczegółów. W końcu, chociaż możemy nie być w stanie naprawdę usłyszeć różnicy między utworem MP3 a CD, w tym pierwszym z pewnością jest deficyt informacji.
Szyfrowanie danych
Algorytmy są również wykorzystywane przy zabezpieczaniu danych lub linii komunikacyjnych. Zamiast przechowywać dane tak, aby zajmowały mniej miejsca na dysku, są one przechowywane w sposób niewykrywalny przez inne programy. Jeśli ktoś ukradnie twój dysk twardy i zacznie go skanować, może odebrać dane nawet wtedy, gdy usuniesz pliki, ponieważ same dane nadal tam są, mimo że lokalizacja przekazywania do niego zniknęła. Gdy dane są zaszyfrowane, wszystko, co jest przechowywane, nie wygląda na to, czym jest. Zwykle wygląda to losowo, jakby fragmentacja narastała z czasem. Możesz także przechowywać dane i wyświetlać je jako inny typ pliku. Pliki graficzne i pliki muzyczne są do tego dobre, ponieważ mogą być dość duże, na przykład bez wzbudzania podejrzeń. Wszystko to odbywa się za pomocą algorytmów matematycznych, które pobierają pewien rodzaj danych wejściowych i przekształcają je w inny, bardzo specyficzny typ danych wyjściowych. Aby uzyskać więcej informacji na temat działania szyfrowania, zapoznaj się z wyjaśnieniami HTG: Co to jest szyfrowanie i jak to działa?
Algorytmy to narzędzia matematyczne, które mają różnorodne zastosowania w informatyce. Pracują nad zapewnieniem ścieżki między punktem początkowym a końcowym w spójny sposób i dostarczają instrukcji, jak nią podążać. Wiesz więcej niż podkreśliliśmy? Podziel się swoimi wyjaśnieniami w komentarzach!