Jeśli nie masz do czynienia z matematyką lub programowaniem, słowo "algorytm" może być dla ciebie po grecku, ale jest to jeden z fundamentów wszystkiego, czego używasz do czytania tego artykułu. Oto krótki opis tego, czym są i jak działają.
Zastrzeżenie: nie jestem matematykiem ani nauczycielem informatyki, więc nie wszystkie terminy, których używam są techniczne. To dlatego, że staram się wszystko wyjaśnić prostym językiem angielskim, ponieważ ludzie nie są całkiem zadowoleni z matematyki. Biorąc to pod uwagę, w grę wchodzi matematyka, a to nieuniknione. Math maniaków, nie krępuj się poprawić lub lepiej wyjaśnij w komentarzach, ale proszę, zachowajcie to proste dla matematycznie niesubordynowanych wśród nas.
Obraz wg Ian Ruotsala
Słowo "algorytm" ma etymologię podobną do "algebry", tyle tylko, że odnosi się do samego matematyka arabskiego, al-Khwarizmi (tylko interesująca ciekawostka). Algorytm, dla nie-programistów z nas, jest zbiorem instrukcji, które pobierają dane wejściowe, A i dostarczają dane wyjściowe, B, które zmieniają dane w jakikolwiek sposób. Algorytmy mają szeroki zakres zastosowań. W matematyce mogą pomóc w obliczaniu funkcji z punktów w zbiorze danych, wśród znacznie bardziej zaawansowanych rzeczy. Oprócz tego, że są używane w samym programowaniu, odgrywają one główną rolę w kompresji plików i szyfrowaniu danych.
Powiedzmy, że twój przyjaciel spotyka cię w sklepie spożywczym i prowadzisz go do siebie. Mówisz rzeczy takie jak "wejdź przez prawe drzwi", "podaj sekcję ryb po lewej stronie" i "jeśli zobaczysz mleczarnię, zdałeś mnie." Algorytmy działają w ten sposób. Możemy użyć schematu blokowego, aby zilustrować instrukcje oparte na kryteriach, które znamy z wyprzedzeniem lub dowiedzieć się w trakcie procesu.
(zdjęcie zatytułowane "Rutynowa procedura łamania lodu" EDIT: dzięki uprzejmości Trigger i Freewheel)
Z START-a będziesz kierował się w dół ścieżką i w zależności od tego, co się dzieje, podążasz za "przepływem" do wyniku końcowego. Schematy blokowe są narzędziami wizualnymi, które w bardziej zrozumiały sposób przedstawiają zestaw instrukcji używanych przez komputery. Podobnie, algorytmy pomagają zrobić to samo z większymi modelami matematycznymi.
Użyjmy wykresu, aby zilustrować różne sposoby udzielania wskazówek.
Możemy wyrazić ten wykres jako połączenie wszystkich jego punktów. Aby odtworzyć ten obraz, możemy przekazać komuś instrukcje.
Metoda 1
Możemy to przedstawić jako serię punktów, a informacja podążałaby za standardową formą wykresu = (x1, y1), (x2, y2), ..., (xn, yn).
wykres = (0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)
Łatwo jest wyrysować każdy punkt, jeden po drugim i połączyć je z poprzednim punktem. Wyobraźmy sobie jednak wykres zawierający tysiąc punktów lub wiele segmentów, każdy z nich. Ta lista miałaby dużo danych, prawda? A potem połączenie każdego z nich, po jednym na raz, może być uciążliwe.
Metoda 2
Inną rzeczą, którą możemy zrobić, jest podanie punktu początkowego, nachylenia linii między nim a następnym punktem i wskazanie, gdzie można się spodziewać następnego punktu za pomocą standardowej postaci wykresu = (punkt początkowy, [m1, x1, h1 ], ..., [mn, xn, hn] .W tym przypadku zmienna "m" reprezentuje nachylenie prostej, "x" oznacza kierunek, w którym należy policzyć (niezależnie od tego, czy x lub y), a "h" mówi o tym, jak wiele do policzenia we wspomnianym kierunku, możesz także pamiętać o wykreśleniu punktu 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. Możesz zobaczyć, że ostatnie trzy wyrażenia w tym wyrażeniu są takie same, więc możemy je przyciąć, mówiąc po prostu "powtórz trzy razy" w jakiś sposób. Powiedzmy, że za każdym razem, gdy zobaczysz zmienną "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 się stanie, jeśli poszczególne punkty nie mają znaczenia, a jedynie sam wykres? Możemy skonsolidować te trzy ostatnie sekcje w ten sposób:
wykres = (0,0), [0, x, 3], [0, y, 3], [1, x, 2], [2,5, x, 2], [-3, x, 3]
Skraca to nieco sytuację, w której byli wcześniej.
Metoda 3
Spróbujmy to zrobić 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 czysto algebraicznych kategoriach. Jeszcze raz, jeśli same punkty nie mają znaczenia, a tylko wykres, możemy skonsolidować trzy ostatnie elementy.
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 z matematyką i grafiką, więc wybierasz ostatnią opcję. Może jesteś dobry w nawigacji, więc wybierasz drugą opcję. Jednak w dziedzinie komputerów wykonujesz wiele różnych zadań, a możliwości komputera tak naprawdę się nie zmieniają. Dlatego algorytmy są zoptymalizowane pod kątem wypełnianych zadań.
Inną ważną kwestią, na którą 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 narysować każdy punkt i połączyć kropki, pierwszy zestaw punktów nic nie znaczy. Jeśli nie wiesz, co każda zmienna oznacza w drugiej metodzie, nie będziesz wiedział, jak je zastosować, podobnie jak klucz do szyfru.Klucz ten jest również integralną częścią korzystania z algorytmów, a często klucz ten znajduje się w społeczności lub za pośrednictwem "standardu".
Po pobraniu pliku .zip wyodrębniasz zawartość, aby można było użyć jej zawartości. W dzisiejszych czasach większość systemów operacyjnych może przechwytywać pliki .zip, tak jak normalne foldery, robiąc wszystko w tle. Na moim komputerze z Windows 95 ponad dekadę temu musiałem wyodrębnić wszystko ręcznie, zanim mogłem zobaczyć coś więcej niż nazwy plików wewnątrz. To dlatego, że to, co było zapisane na dysku jako plik .zip, nie było w formie użytkowej. Pomyśl o rozkładanej kanapie. Kiedy chcesz go użyć jako łóżko, musisz usunąć poduszki i rozłożyć je, co zajmuje więcej miejsca. Jeśli go nie potrzebujesz lub chcesz go przetransportować, możesz złożyć go z powrotem.
Algorytmy kompresji są dostosowywane i optymalizowane specjalnie dla typów plików, do których są kierowane. Na przykład, formaty audio wykorzystują inny sposób przechowywania danych, które po dekodowaniu przez kodek audio, dadzą plik dźwiękowy podobny do pierwotnego kształtu fali. Aby uzyskać więcej informacji na temat tych różnic, sprawdź nasz poprzedni artykuł, Jakie są różnice między wszystkimi tymi formatami audio? Bezstratne formaty audio i pliki .zip mają jedną wspólną cechę: obie dają oryginalne dane w ich dokładnej postaci po procesie dekompresji. Strumieniowe kodeki audio wykorzystują inne sposoby oszczędzania przestrzeni dyskowej, takie jak przycinanie częstotliwości, których nie można usłyszeć przez ludzkie uszy i wygładzanie kształtu fali 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 MP3 i CD, w tym pierwszym jest zdecydowanie deficyt informacji.
Algorytmy są również używane podczas zabezpieczania danych lub linii komunikacyjnych. Zamiast przechowywania danych, które zużywają mniej miejsca na dysku, są przechowywane w sposób niewykrywalny w innych programach. Jeśli ktoś ukradnie twój dysk twardy i zacznie go skanować, będzie mógł pobierać dane nawet wtedy, gdy usuniesz pliki, ponieważ same dane nadal tam są, mimo że lokalizacja przekazywania do niego nie istnieje. Kiedy dane są szyfrowane, to, co jest przechowywane, nie wygląda tak, jak jest. Zwykle wygląda losowo, jakby z upływem czasu narastała fragmentacja. Możesz także przechowywać dane i sprawić, by wyglądały one jak inny typ pliku. Pliki graficzne i pliki muzyczne są na to dobre, ponieważ mogą być dość duże, bez przykładania 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 objaśnieniami HTG: Co to jest szyfrowanie i jak działa?
Algorytmy są narzędziami matematycznymi, które zapewniają różnorodne zastosowania w informatyce. Starają się zapewnić spójny sposób między punktem początkowym a punktem końcowym i przekazać instrukcje, aby go przestrzegać. Czy wiesz więcej niż to, co podkreśliliśmy? Podziel się wyjaśnieniami w komentarzach!