Jeśli nie interesujesz się matematyką lub programowaniem, słowo „algorytm” może być dla Ciebie greckie, ale jest jednym z elementów składowych 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 mają charakter techniczny. Dzieje się tak, ponieważ staram się wszystko wyjaśnić prostym angielskim, ponieważ ludzie nie czują się dobrze z matematyką. Biorąc to pod uwagę, w grę wchodzi trochę matematyki i jest to nieuniknione. Geekowie matematyki, nie krępuj się poprawiać lub dokładniej wyjaśniać w komentarzach, ale proszę, niech to proste dla matematycznie niechętnych wśród nas.
Zdjęcie autorstwa Ian Ruotsala
Co to jest algorytm?
Słowo „algorytm” ma etymologię podobną do „algebry”, z tą różnicą, że odnosi się do samego arabskiego matematyka, al-Khwarizmi (po prostu interesująca ciekawostka). Algorytm dla nieprogramistów wśród nas to zestaw instrukcji, które pobierają dane wejściowe A i dostarczają wyjście B, które w jakiś sposób zmienia dane. Algorytmy mają wiele zastosowań. W matematyce mogą między innymi pomóc w obliczaniu funkcji na podstawie punktów w zbiorze danych. Oprócz ich wykorzystania w samym programowaniu, odgrywają ważną rolę w takich rzeczach, jak kompresja plików i szyfrowanie danych.
Podstawowy zestaw instrukcji
Powiedzmy, że Twój znajomy spotyka się z Tobą w sklepie spożywczym i prowadzisz go do siebie. Mówisz na przykład: „wejdź prawymi drzwiami”, „miń sekcję rybną po lewej” i „jeśli zobaczysz mleczarnię, miniesz mnie”. Algorytmy tak działają. Możemy użyć schematu blokowego, aby zilustrować instrukcje oparte na kryteriach, które znamy z wyprzedzeniem lub dowiemy się w trakcie procesu.
(zdjęcie zatytułowane „ Procedura lodołamania EDYCJA: dzięki uprzejmości Wyzwalacz i Wolnobieg )
Od STARTU podążałeś ścieżką iw zależności od tego, co się dzieje, podążasz za „przepływem” do końcowego wyniku. Schematy blokowe to narzędzia wizualne, które w bardziej zrozumiały sposób mogą przedstawiać zestaw instrukcji używanych przez komputery. Podobnie algorytmy pomagają zrobić to samo w przypadku modeli opartych na większej liczbie matematyki.
Wykresy
Użyjmy wykresu, aby zilustrować różne sposoby udzielania 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 to przedstawić jako serię punktów, a informacja będzie miała standardową postać 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 narysować każdy punkt jeden po drugim i połączyć go z poprzednim. Wyobraź sobie jednak wykres z tysiącem punktów lub wieloma segmentami, wszystkie poruszające się w każdą stronę. Ta lista zawierałaby dużo danych, prawda? A potem łączenie każdego z nich po kolei może być uciążliwe.
Metoda 2
Inną rzeczą, jaką możemy zrobić, jest podanie punktu początkowego, nachylenie linii między nim a następnym punktem oraz wskazanie, gdzie spodziewać się następnego punktu, używając standardowej postaci wykresu = {(starting point}, [m1, x1, h1],…, [mn, xn, hn]}. Tutaj zmienna „m” reprezentuje nachylenie linii, „x” reprezentuje kierunek liczenia (niezależnie od tego, czy x lub y), a „h” określa, ile należy liczyć we wspomnianym kierunku. Możesz również 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 terminy w tym wyrażeniu są takie same, więc możemy je 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]}
A co, jeśli poszczególne punkty tak naprawdę nie mają znaczenia, a ma znaczenie 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]}
Trochę skraca to, co było wcześniej.
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 czysto algebraicznych terminach. Ponownie, jeśli same punkty nie mają znaczenia i tylko wykres ma znaczenie, możemy skonsolidować ostatnie trzy 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óra metoda wybierzesz, zależy od twoich umiejętności. Może świetnie radzisz sobie z matematyką i wykresami, 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ą optymalizowane pod kątem wykonywanych zadań.
Kolejną 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 powinieneś narysować 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 znajduje się w społeczności lub za pośrednictwem „standardu”.
Kompresja pliku
Pobierając plik .zip, wyodrębniasz jego zawartość, aby móc użyć tego, co się w nim znajduje. Obecnie większość systemów operacyjnych może zanurzać się w plikach .zip tak, jakby były zwykłymi folderami, robiąc wszystko w tle. Na moim komputerze z systemem Windows 95 ponad dziesięć lat 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 zostało zapisane na dysku jako plik .zip, nie było nadające się do użytku. Pomyśl o rozkładanej kanapie. Chcąc używać go jako łóżka, trzeba 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ć z powrotem.
Algorytmy kompresji są dostosowywane i optymalizowane specjalnie pod kątem typów plików, do których 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 przebiegu. 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 dają 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 dla ludzkiego ucha 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 utworem CD, z pewnością w pierwszym z nich jest niedobór informacji.
Szyfrowanie danych
Algorytmy są również wykorzystywane przy zabezpieczaniu linii danych lub komunikacyjnych. Zamiast przechowywać dane, aby zajmować 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 zebrać dane nawet po usunięciu plików, ponieważ same dane nadal tam są, nawet jeśli lokalizacja ich przekazywania zniknęła. Gdy dane są szyfrowane, to, co jest przechowywane, nie wygląda na to, czym jest. Zwykle wygląda to na przypadkowe, tak 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ć na przykład dość duże bez wzbudzania podejrzeń. Wszystko to odbywa się za pomocą algorytmów matematycznych, które pobierają dane wejściowe i przekształcają je w inny, bardzo specyficzny typ danych wyjściowych. Aby uzyskać więcej informacji na temat działania szyfrowania, sprawdź HTG wyjaśnia: Co to jest szyfrowanie i jak działa?
Algorytmy to narzędzia matematyczne o różnorodnych zastosowaniach w informatyce. Pracują nad wyznaczeniem ścieżki między punktem początkowym a punktem końcowym w spójny sposób i dostarczają instrukcji, jak ją stosować. Wiesz więcej niż to, co podkreśliliśmy? Podziel się swoimi wyjaśnieniami w komentarzach!