Jak algorytmy kształtują Twoje cyfrowe życie: przewodnik dla nieprogramistów

10

Dotykasz ekranu. Pojawia się treść. Nie widziałeś, jak to się stało, ale ktoś lub coś zdecydowało, co ci pokazać.

Algorytmy są niewidzialnymi architektami współczesnego Internetu. Określają rankingi wyszukiwania, tworzą kanały w mediach społecznościowych i kierują ruchem. Ale czym jest algorytm w prawdziwym świecie, poza terminami technicznymi?

Mówiąc najprościej, algorytm to przepis krok po kroku. Jest to zestaw instrukcji umożliwiających rozwiązanie problemu lub wykonanie zadania. Może to być tak proste, jak dodanie dwóch liczb, lub tak złożone, jak rozpoznanie Twojej twarzy przez sieć neuronową. Reguły te stanowią podstawę każdego oprogramowania i zapewniają efektywną realizację zadań. Odpowiadają na pytanie „jak” stojące za akcją „co”.

Aby zrozumieć, dlaczego jest to ważne, należy przyjrzeć się, jak faktycznie działają komputery.

Logika kodu krok po kroku

Komputery są posłuszne, ale dosłowne. Nie mają pojęcia. Jeśli chcesz, żeby komputer coś zrobił, musisz napisać program, który powie mu dokładnie, co ma robić, krok po kroku. Komputer wykonuje te instrukcje mechanicznie.

Pisząc ten program, musisz wybrać metodę. Ta metoda jest algorytmem. Jest to technika stosowana do wykonania zadania.

Pomyśl o tym: przyjaciel przyjeżdża na lotnisko. Musi dostać się do twojego domu. Masz do tego cztery różne algorytmy. Każdy doprowadzi go do tego samego celu, ale droga będzie zupełnie inna.

Algorytm taksówki
*Idź na postój taksówek.
* Wsiadaj do samochodu.
* Podaj kierowcy swój adres.

Algorytm Zadzwoń do mnie
* Zadzwoń na swój telefon komórkowy, gdy samolot wyląduje.
* Poznaj odbiór bagażu zewnętrznego.

Algorytm „Wynajmij samochód”
* Skorzystaj z transferu do stanowiska wynajmu.
* Wynajmij samochód.
* Przejdź do domu za pomocą GPS.

Algorytm „Autobus”
*Wsiądź do autobusu nr 70 znajdującego się poza strefą odbioru bagażu.
* Przesiadka do autobusu nr 14 na Main Street.
* Wyjdź na Elm Street.
* Idź dwie przecznice na północ.

Wszystkie cztery opcje działają. Żadne z nich nie jest „złe”. Ale różnią się znacznie pod względem kosztów i czasu. Taksówka jest szybka, ale droga. Autobus jest tani, ale powolny. Wybierasz algorytm w zależności od okoliczności.

Tworząc oprogramowanie, robimy to samo. Dobieramy technikę, która najlepiej odpowiada danym, czasowi i budżetowi.

Dlaczego sortowanie jest ważniejsze, niż myślisz

W programowaniu często istnieje wiele sposobów rozwiązania tego samego problemu. Każda metoda ma swoje kompromisy. Nigdzie nie jest to bardziej widoczne niż podczas sortowania.

Komputery spędzają ogromną ilość czasu na sortowaniu list. Imiona. Ceny. Daty. Wyniki wyszukiwania. Jeśli sortowanie jest nieskuteczne, cały system zwalnia.

Naukowcy badają algorytmy sortowania od dziesięcioleci. Oto pięć typowych podejść:

  • Sortowanie do kosza
  • Sortowanie przez scalanie
  • Sortowanie bąbelkowe
  • Sortowanie powłoki
  • Szybkie sortowanie

Którego używasz?

Jeśli masz milion liczb całkowitych z zakresu od 1 do 10, zwycięzcą jest sortowanie blokowe. Jest szybki i prosty w przypadku małych zakresów. Jeśli masz milion tytułów książek, najlepszym wyborem będzie szybkie sortowanie. Lepiej radzi sobie z danymi nieustrukturyzowanymi. Znajomość mocnych i słabych stron pozwala programistom wybrać odpowiednie narzędzie. Jeśli wybierzesz niewłaściwy, Twoja aplikacja będzie działać wolno.

Główne typy algorytmów

Algorytmy to coś więcej niż tylko sortowanie. Można je podzielić na szerokie kategorie w zależności od tego, co próbują osiągnąć. Od szyfrowania po uczenie maszynowe – rodzaj algorytmu określa sposób przetwarzania danych.

Algorytmy wyszukiwania

Mają na celu wyodrębnienie informacji ze struktury danych. Na przykład wyszukiwanie liniowe (sprawdzanie każdego elementu) lub wyszukiwanie binarne (ciągłe dzielenie listy na pół). Wyszukiwarki i zapytania do baz danych w dużym stopniu na nich polegają, aby znaleźć to, co wpisałeś w milisekundach.

Algorytmy programowania dynamicznego

Takie podejście optymalizuje złożone zadania, dzieląc je na prostsze podzadania. Pozwala to uniknąć ponownego obliczania tych samych danych. Przykładami mogą być generowanie ciągu Fibonacciego, rozwiązanie problemu plecakowego (maksymalizacja wartości na ograniczonej przestrzeni) czy znalezienie najkrótszej ścieżki na wykresie, na przykład przy użyciu algorytmów Bellmana-Forda lub Floyda-Warshella.

Zachłanne algorytmy

Algorytmy zachłanne wybierają najlepszą opcję lokalną na każdym kroku. Nie patrzą na szerszy obraz. Zakładają, że najlepszy natychmiastowy wybór doprowadzi do najlepszego ogólnego wyniku. Działa to dobrze w przypadku problemów takich jak znalezienie minimalnego drzewa rozpinającego w sieci (algorytmy Kruskala i Prima). Czasem jednak chciwość prowadzi w ślepy zaułek.

Algorytmy ze zwrotem (backtracking)

Algorytmy te, stosowane w przypadku problemów z ograniczeniami, krok po kroku tworzą kandydatów. Jeśli kandydat nie przejdzie testu, „wraca” i próbuje innej ścieżki. Klasycznymi przykładami są rozwiązania Sudoku i problem N hetmanów. Zasadniczo jest to metoda prób i błędów, polegająca na przypominaniu sobie błędów z przeszłości.

Algorytmy uczenia maszynowego

Umożliwiają komputerom uczenie się na podstawie danych, a nie przestrzeganie zakodowanych na stałe zasad. Przewidują wyniki lub podejmują decyzje. Dzieli się je na uczenie się nadzorowane (uczenie się na podstawie oznakowanych danych), uczenie się bez nadzoru (znajdowanie wzorców w danych nieoznaczonych), uczenie się przez wzmacnianie (uczenie się poprzez nagrodę/karę) i uczenie głębokie (z wykorzystaniem sieci neuronowych).

Algorytmy probabilistyczne

Czasami determinizm jest zbyt powolny. Algorytmy probabilistyczne wprowadzają do swojej logiki losowość. Stosują podejścia probabilistyczne do rozwiązywania problemów, w których ścisła metoda krok po kroku jest nieskuteczna. Najlepszymi przykładami są Monte Carlo i probabilistyczne sortowanie szybkie.

Algorytmy Brute Force

To podejście „spróbuj wszystkiego”. Wyszukiwanie metodą brute-force systematycznie sprawdza wszystkie możliwe rozwiązania. To proste. Gwarantuje rozwiązanie, jeśli takie istnieje. Ale w przypadku dużych i złożonych zadań jest to boleśnie nieskuteczne. Jest to cyfrowy odpowiednik próby dopasowania każdego klawisza na kółku, aż będzie pasować.

Kategorie te pokrywają się. Algorytm może być zarówno algorytmem programowania dynamicznego, jak i algorytmem zachłannym w różnych kontekstach. Kluczem jest zrozumienie kompromisów.

Czynnik ludzki

Często myślimy o algorytmach jako o zimnej logice. I tak jest. Ale są także odzwierciedleniem naszych wyborów. Kiedy priorytetem jest dla nas prędkość, zamawiamy taksówki. Kiedy już ustalimy priorytet kosztów, kupujemy autobus. Kiedy priorytetowo traktujemy dokładność, możemy przyzwyczaić się do powolności.

W swoim cyfrowym życiu rzadko widzisz kod. Widzisz tylko wynik. Kanał, który rozumie Twój nastrój. Mapa, która omija korki. Wynik wyszukiwania, który odpowie na Twoje pytanie, zanim skończysz pisać.

To nie magia. To tylko kroki.

Ale kto decyduje o tych krokach? A kto określa wagę każdego kroku?

To jest prawdziwe pytanie.

Następnym razem, gdy będziesz przeglądać swój kanał, zadaj sobie pytanie: jaki algorytm steruje tym procesem? I dlaczego wybrał dla Ciebie tę konkretną treść?

Odpowiedź może zmienić sposób, w jaki patrzysz na ekran.

Jak algorytmy przekształcają dane wejściowe w rzeczywiste wyniki

Algorytm to po prostu zestaw instrukcji. Akceptuje dane wejściowe. Przetwarza te dane. Podaje wynik. Język, w którym to piszesz – Python, C++, Java – nie zmienia podstawowej mechaniki. Logika jest ważna. I ta logika zawsze dąży do optymalnego rozwiązania, nawet jeśli „optymalne” oznacza coś innego w zależności od problemu.

Wynikiem nie zawsze jest pojedyncza liczba lub odpowiedź tak/nie. Różni się znacznie w zależności od problemu, jaki kod próbuje rozwiązać.

Rozwiązywanie problemów i klasyfikacja

Niektóre algorytmy mają na celu znalezienie konkretnych odpowiedzi. Wyobraź sobie, jak Mapy Google obliczają najkrótszą ścieżkę między dwoma punktami. Lub prosty skrypt, który sortuje nieuporządkowaną listę liczb. Są to klasyczne wyniki rozwiązywania problemów.

Jednak w przypadku uczenia maszynowego wynik często stanowi rozwiązanie. Filtr spamu nie tylko sortuje e-maile; klasyfikuje je. Czy to jest spam? Tak lub nie. System rekomendacji to nie tylko zestawienie produktów. Decyduje, które produkty najchętniej teraz kupisz. Ona dokonuje wyboru za Ciebie.

Liczby, struktury i wizualizacje

Czasami wynik jest po prostu surową liczbą. Algorytmy rozwiązują równania w celu znalezienia pierwiastków. Obliczają średnie statystyczne na podstawie ogromnych zbiorów danych. W innych przypadkach tworzą struktury danych. Algorytm sortowania zmienia kolejność tablicy. Algorytm grafowy identyfikuje połączone komponenty, zasadniczo odwzorowując relacje w sieci.

Następnie jest strona wizualna. Algorytmy grafiki komputerowej pobierają surowe dane liczbowe i przekształcają je w obrazy. Silniki renderujące w grach wideo generują obrazy 2D z modeli 3D. Bez tych algorytmów światy, w których się bawimy, byłyby jedynie liniami na ekranie.

Tekst, sygnały i działania fizyczne

Algorytmy przetwarzania języka naturalnego tworzą tekst. Generują ludzkie odpowiedzi, tłumaczą języki lub streszczają długie artykuły. To już nie tylko kod; to jest komunikacja.

W robotyce i systemach wbudowanych efektem jest działanie fizyczne. Algorytmy wysyłają sygnały do ​​silników i siłowników. Mogą włączyć światło. Mogą też koordynować złożone ruchy ramienia robota na linii montażowej. Cyfrowe nauczanie staje się działaniem fizycznym.

Duży obraz

Niezależnie od tego, czy identyfikujesz wzorce, przeglądasz surowe dane, czy szukasz procesu matematycznego, skuteczne algorytmy automatyzują tę ciężką pracę. Obsługują dane wejściowe i zmienne, więc nie musisz tego robić samodzielnie.

Pytanie nie brzmi, jak one działają. Pytanie, co mogą zrobić dalej.

Algorytmy stanowią integralną część sposobu, w jaki systemy komputerowe przetwarzają dane. Większość programów komputerowych składa się z algorytmów, które wykonują określone instrukcje w celu wykonania prostego zadania.

Ten artykuł został zaktualizowany przy użyciu technologii AI, następnie sprawdzony pod kątem faktów i zredagowany przez redaktora HowStuffWorks.

Oto kilka ciekawych linków:

  • Jak sztuczna inteligencja całkowicie zmienia wszystko
  • whatis.com: Algorytm
  • Jak działa Java
  • Jak działa C
  • Jak działają komputery PC
  • Jak działa szyfrowanie
  • Jak działa kompresja plików

Często zadawane pytania dotyczące algorytmów

Co to jest algorytm w prostych słowach?
Kiedy mówisz komputerowi, co ma robić, wybierasz także sposób, w jaki to zrobi. Taki jest algorytm. Jest to podstawowa technika lub zestaw instrukcji używanych do wykonania zadania.

Jaki jest przykład algorytmu?
Przepis jest klasycznym przykładem. To jest ostateczna lista instrukcji. Algorytm może być bardziej szczegółowy, ale koncepcja jest taka sama.

Jakie są trzy części algorytmu?
Dane wejściowe. Przetwarzanie danych. Dane wyjściowe. Wkładasz coś, maszyna coś robi, a ty coś wyjmujesz.

Jakie jest zastosowanie algorytmów w programowaniu?
Podstawą przetwarzania danych są algorytmy. Większość programów komputerowych to po prostu zestawy algorytmów, które wykonują określone instrukcje w celu wykonania prostych zadań. Bez nich nie ma automatyzacji. Nie ma logiki. Tylko surowe żelazo, oczekujące na instrukcje.