Które najważniejsze algorytmy świata najbardziej przyczyniły się do ludzkości w ciągu ostatnich dziesięcioleci?
Pomyślałem, że jest to dobra ogólna wiedza dla programisty.
Aktualizacja:
Jeśli to możliwe, zachowaj odpowiedź na określony algorytm programowania .
Chciałbym uzyskać listę najważniejszych, tylko jeden algorytm na odpowiedź.
Zastanów się, czy algorytm jest ważny i ważny ...
algorithms
problem-solving
knowledge
Amir Rezaei
źródło
źródło
Odpowiedzi:
Szyfrowanie klucza publicznego / prywatnego jest bardzo ważne. Bez niego handel internetowy nie byłby tak wszechobecny.
źródło
Algorytm Dijkstry
Algorytm istnieje w każdym routerze na świecie do identyfikacji najlepszej trasy między dwoma węzłami w sieci.
źródło
Szybka transformata Fouriera (FFT)
FFT to niezwykle ważna i szeroko stosowana metoda pozyskiwania przydatnych informacji z próbkowanych sygnałów .
źródło
PageRank
źródło
Algorytmy kompresji danych
źródło
Smith-Waterman (i Needleman-Wunsch)
To może być zbyt daleko idące, więc proszę o komentarz.
Smith-Waterman: Algorytm wyrównywania sekwencji
Myślę, że jednym z takich przykładów są algorytmy Smitha-Watermana i Needlemana-Wunscha oraz ich aproksymacje. Wszystkie zasadniczo robią to samo: wyrównują dwa lub więcej ciągów (sekwencji) . Biologia ma znaczenie. Gdy sekwencje DNA lub białek są wyrównane - ujawniają się regiony podobieństwa strukturalnego, funkcjonalnego i ewolucyjnego.
BLAST jako potomek Smitha-Watermana
Heurystyką zbliżoną do Smitha-Watermana jest BLAST. Umożliwia wyszukiwanie sekwencji dużych baz danych pod kątem podobieństwa biologicznego. Popularność BLAST jest naprawdę świetna - najprawdopodobniej jest to najczęściej stosowany algorytm w biologii. Nowsze obszary bioinformatyki i genomiki mają nowsze i lepsze przybliżenia algorytmów Smitha-Watermana / Needlemana-Wunscha, które są dokładniejsze niż BLAST.
Zgromadzenie genomu jako potomek Smitha-Watermana
Wysokoprzepustowe aproksymacje Smitha-Watermana i Needlemana-Wunscha, które są szybsze niż BLAST, są wykorzystywane do składania genomów z sekwencjonowania strzelby - gdzie produktem maszyny sekwencera jest ogromna ilość odczytów DNA (miliardów) z dowolnych części genomu, które są bardzo krótkie (od 50 do 100 nukleotydów). Podejście to zastosowano do ukończenia projektu Human Genome. Wszystkie nowoczesne sekwencjonowanie odbywa się w ten sposób.
Wyrównanie sekwencji wielu rozszerzenie Smith-Waterman
Istnieje wiele algorytmów wyrównywania wielu sekwencji - zbliżają się one do wielosekwencyjnej wersji Smith-Waterman / Needleman-Wunsch. Wiele sekwencji jest dopasowywanych do siebie jednocześnie jako grupa. Jest to o wiele trudniejszy problem niż w parach, ale rozwiązania zapewniają znacznie lepszy wgląd w funkcję biologiczną, strukturę i historię ewolucyjną powiązanych sekwencji.
źródło
Siam wymienił następujące jako najważniejsze algorytmy XX wieku:
1946: Algorytm metropolii dla Monte Carlo . Dzięki zastosowaniu losowych procesów ten algorytm oferuje skuteczny sposób na znalezienie odpowiedzi na problemy, które są zbyt skomplikowane, aby je dokładnie rozwiązać.
1947: Metoda simpleksowa dla programowania liniowego . Eleganckie rozwiązanie typowego problemu w planowaniu i podejmowaniu decyzji.
1950: Metoda iteracji podprzestrzeni Kryłowa . Technika szybkiego rozwiązywania równań liniowych występujących w obliczeniach naukowych.
1951: Podejście rozkładowe do obliczeń macierzowych . Zestaw technik numerycznej algebry liniowej.
1957: Kompilator optymalizacyjny Fortran . Zamienia kod wysokiego poziomu w wydajny kod czytelny dla komputera.
1959: Algorytm QR do obliczania wartości własnych . Kolejna ważna operacja na matrycy sprawiła, że była szybka i praktyczna.
1962: Algorytmy Quicksort do sortowania . Do wydajnej obsługi dużych baz danych.
1965: Szybka transformata Fouriera . Być może najbardziej wszechobecny obecnie używany algorytm rozkłada przebiegi (jak dźwięk) na składniki okresowe.
1977: Wykrywanie relacji liczb całkowitych . Szybka metoda dostrzegania prostych równań spełniana przez zbiory pozornie niepowiązanych liczb.
1987: Szybka metoda wielobiegunowa . Przełom w radzeniu sobie ze złożonością obliczeń n-ciała, stosowanych w problemach od mechaniki niebieskiej po fałdowanie białek.
Osobiście chciałbym wymienić Integer Powiązania Detection z PageRank .
źródło
PageRankuj, kochaj lub nienawidzę, ale codziennie wpływa na decyzje i działania milionów ludzi na całym świecie.
źródło
Gdybym musiał wymienić 3 najważniejsze algorytmy używane dzisiaj w komputerach, powiedziałbym:
Binary Search algorytm jest używany stale do zawężenia na pozycji w liście posortowanej, większość wyszukiwań indeksu użyje coś wzdłuż tych linii w pewnym momencie. Ten algorytm umożliwia wyszukiwanie uporządkowanej listy w czasie o (log n).
Quicksort algorytm wreszcie udało się dostać do sortowania O (n log n) przeciętnego przypadku i O (n ^ 2) gorzej sprawa. Sortowanie jest jednym z najczęstszych zadań danych na komputerze i jednym z najdroższych, poprawa średniego sortowania spraw była dużym krokiem naprzód pod względem wydajności.
Jak powiedziano , algorytm Dijkstry tworzy najkrótszą ścieżkę między punktami na wykresie. Jest to szeroko stosowane we wszystkich aplikacjach do routingu, najszerzej w odniesieniu do samego Internetu, zapewniając najszybszą drogę przez splątaną sieć połączonych routerów.
źródło
Twierdzenie Bayesa
Prawdopodobnie najbardziej przyczynił się do utrzymania ilości marnującego czas spamu w mojej skrzynce odbiorczej na rozsądnym poziomie.
Oczywiście jestem używany w wielu innych wartościowych aplikacjach, ale moim ulubionym jest zabijanie spamu.
źródło
TimSort
Jest to algorytm sortowania używany obecnie w Pythonie , Javie 7 i Androidzie
Gruntownie:
N-1
dokładnie na już posortowanej liście)A jego piękno? Jest stabilny ! Dlatego nadaje się do sortowania wieloprzebiegowego według różnych kryteriów.
Nawiasem mówiąc, jeśli ktoś ma pod ręką zoptymalizowaną implementację C ++ ...
źródło
Wszystkie algorytmy zastosowane do rozwiązania problemu widoczności w animacji komputerowej 3D wydają mi się kluczowe.
Algorytm malarza
Buforowanie Z.
Określenie ukrytej powierzchni
źródło
Niezależnie od tego, którego potrzebujesz, aby rozwiązać obecny problem.
źródło
Soundex to algorytm fonetyczny służący do indeksowania nazw według dźwięku.
źródło
Algorytm Viterbiego
Początkowo używany do dekodowania kodów korekcji błędów splotowych, obecnie służy do rozwiązywania szerokiej klasy problemów z rozpoznawaniem (od rozpoznawania mowy po bioinformatykę). Można go znaleźć w kilku urządzeniach do komunikacji i przechowywania.
źródło
MP3
Chociaż jest to bardziej ogólny termin niż konkretny algorytm, wspomnę o MP3 jako agregacji różnych algorytmów i technik, które współpracują ze sobą w celu wygenerowania tego stratnego formatu audio.
Z pewnością miało to bardzo duże znaczenie w „erze cyfrowej”.
źródło
Integracja numeryczna Runge-Kutta . Bez niego wiele symulacji nie byłoby możliwych. Bez programu kosmicznego, bez energii jądrowej, bez balistyki, bez symulacji sportowych, bez kamizelek kuloodpornych, bez symulacji testów zderzeniowych, bez symulacji ruchu płynów, bez symulacji interakcji chemicznych, bez budynków odpornych na trzęsienia ziemi ... lista jest długa.
źródło
Algorytm sortowania.
źródło
Szybkie sortowanie
źródło
Sortowanie przez wstawianie
Łatwy do wdrożenia, bardzo szybki na małych listach i stosowany w implementacjach Merge Sort / Quicksort, aby je przyspieszyć. Jest stabilny i działa w O (n) na posortowanych listach (po posortowaniu w porządku rosnącym).
źródło
Gaussa-Jordana w obliczeniach macierzowych
źródło
Filtr Kalmana
Jest intensywnie wykorzystywany w nawigacji, śledzeniu celu (dla prawie każdego czujnika: radaru, sonaru, FLIR, ladar). Jeden podręcznik pokazuje aplikację w kontrolerze dysku. Zrobotyzowane systemy sterowania często wykorzystują filtry Kalmana.
źródło
Język mówiony i pisany.
Są one obecnie jednym z najbardziej wydajnych algorytmów do przenoszenia wiedzy z jednej rzeczy na drugą. Bez języka społeczeństwo obywatelskie nie mogłoby istnieć, a informacje nie mogłyby być przekazywane.
źródło
Struktura danych sterty i związane z nią algorytmy budowy i konserwacji sterty.
I okaż szacunek szybkiemu sortowaniu. Nawet jeśli nie zawsze jest to wybór, jest jednym z podstawowych algorytmów w historycznym rozwoju informatyki i jest doskonałym narzędziem do zrozumienia rekurencji i analizy algorytmów. To jest piękne i tak, uwielbiam to.
źródło
Algorytmy indeksowania, takie jak drzewo B, drzewo B +, indeks skrótu, indeks drzewa binarnego itp. Aby zindeksować ogromną ilość danych.
źródło
MapReduce jako sposób na dzielenie, podbijanie i równoległe przetwarzanie dużych zestawów danych.
źródło
Algorytm Brute Force!
Wiele osób nie docenia tego algorytmu brutalnej siły. W rzeczywistości służy głównie do rozwiązywania problemów, które nie mają wzorca. Bardzo to kocham!
źródło
Sortowanie baniek!
Sortowanie bąbelkowe nie jest tak złe jak Bogosort . Dlatego głosuję na rodzaj Bubble.
źródło