Aby zademonstrować znaczenie algorytmów (np. Dla studentów i profesorów, którzy nie zajmują się teorią lub nawet pochodzą z zupełnie innych dziedzin), czasem warto mieć pod ręką listę przykładów, w których podstawowe algorytmy zostały zastosowane w celach komercyjnych, rządowych, lub powszechnie używane oprogramowanie / sprzęt.
Szukam takich przykładów, które spełniają następujące kryteria:
Oprogramowanie / sprzęt korzystający z algorytmu powinien być obecnie szeroko stosowany.
Przykład powinien być konkretny. Proszę podać odniesienie do konkretnego systemu i określonego algorytmu.
Np. W „algorytmie X jest przydatny do przetwarzania obrazu” termin „przetwarzanie obrazu” nie jest wystarczająco szczegółowy; w „Wyszukiwarce Google używa algorytmów grafowych” termin „algorytmy graficzne” nie jest wystarczająco precyzyjny.Algorytmu należy uczyć na typowych studiach licencjackich lub doktoranckich. klasy w algorytmach lub strukturach danych. Idealnie algorytm jest opisany w typowych podręcznikach algorytmów. Np. „Dobrze znany system X wykorzystuje mało znany algorytm Y” nie jest dobry.
Aktualizacja:
Jeszcze raz dziękuję za wspaniałe odpowiedzi i linki! Niektóre osoby komentują, że trudno jest spełnić kryteria, ponieważ podstawowe algorytmy są tak wszechobecne, że trudno wskazać konkretne zastosowanie. Widzę trudność. Ale myślę, że warto wymyślić konkretne przykłady, ponieważ z mojego doświadczenia mówię ludziom: „Patrz, algorytmy są ważne, ponieważ są prawie wszędzie !” nie działa.
Odpowiedzi:
Moim zdaniem, algorytmy, które są głównym czynnikiem napędzającym system, są łatwiejsze do znalezienia w kursach nie-algorytmicznych z tego samego powodu, dla których twierdzenia z natychmiastowymi zastosowaniami są łatwiejsze do znalezienia w matematyce stosowanej niż w kursach matematyki czystej. Problem praktyczny rzadko ma dokładną strukturę problemu abstrakcyjnego na wykładzie. Argumentując, nie widzę powodu, dla którego modne algorytmy, takie jak mnożenie Strassena, test pierwszeństwa AKS lub algorytm Moser-Tardos, są istotne dla praktycznych problemów na niskim poziomie związanych z implementacją bazy danych wideo, kompilatora optymalizującego, systemu operacyjnego , system kontroli przeciążenia sieci lub dowolny inny system. Wartością tych kursów jest poznanie, że istnieją skomplikowane sposoby wykorzystania struktury problemu w celu znalezienia skutecznych rozwiązań. Zaawansowane algorytmy to także miejsce, w którym można spotkać proste algorytmy, których analiza nie jest trywialna. Z tego powodu nie odrzuciłbym prostych algorytmów z randomizacją ani PageRank.
Myślę, że możesz wybrać dowolny duży program i znaleźć zaimplementowane w nim podstawowe i zaawansowane algorytmy. Jako studium przypadku zrobiłem to dla jądra Linuksa i pokazałem kilka przykładów z Chromium.
Podstawowe struktury danych i algorytmy w jądrze systemu Linux
Linki do kodu źródłowego na github .
B + Drzewa z komentarzami informującymi o tym, czego nie można znaleźć w podręcznikach.
Listy posortowane według priorytetów używane dla muteksów , sterowników itp.
Drzewa Radix są używane do zarządzania pamięcią , wyszukiwania związanych z NFS i funkcjonalności związanych z siecią.
Kupa priorytetowa , która jest dosłownie implementacją podręcznika, używana w systemie grupy kontrolnej .
Funkcje skrótu , w odniesieniu do Knutha i artykułu.
Niektóre części kodu, takie jak ten sterownik , implementują własną funkcję skrótu.
Tablice bitów , które są używane do radzenia sobie z flagami, przerwaniami itp. I są opisane w Knuth Vol. 4
Semafory i zamki spinowe
Wyszukiwanie binarne służy do obsługi przerwań , wyszukiwania pamięci podręcznej rejestru itp.
Wyszukiwanie binarne za pomocą B-drzew
Głębokie pierwsze wyszukiwanie i wariant używany w konfiguracji katalogu .
Pierwsze wyszukiwanie szerokości służy do sprawdzenia poprawności blokowania w czasie wykonywania.
Sortowanie według list na połączonych listach służy do wyrzucania elementów bezużytecznych , zarządzania systemem plików itp.
Zadziwiająco zaimplementowano także sortowanie bąbelkowe w bibliotece sterowników.
Dopasowywanie ciągów Knuth-Morris-Pratt ,
Dopasowywanie wzoru Boyera-Moore'a z referencjami i zaleceniami, kiedy preferować alternatywę.
Struktury danych i algorytmy w przeglądarce Chromium
Linki do kodu źródłowego w kodzie Google . Wymienię tylko kilka. Sugeruję skorzystanie z funkcji wyszukiwania, aby wyszukać swój ulubiony algorytm lub strukturę danych.
Biblioteki języków programowania
Myślę, że warto je rozważyć. Projektanci języków programowania uznali, że warto poświęcić czas i wysiłek niektórych inżynierów na wdrożenie tych struktur danych i algorytmów, aby inni nie musieli tego robić. Istnienie bibliotek jest jednym z powodów, dla których możemy znaleźć podstawowe struktury danych zaimplementowane w oprogramowaniu napisanym w C, ale mniej w przypadku aplikacji Java.
Algorytmy alokacji i planowania
Uważam to za interesujące, ponieważ chociaż nazywane są heurystykami, stosowane zasady określają rodzaj wymaganego algorytmu i struktury danych, dlatego należy wiedzieć o stosach i kolejkach.
Podstawowe narzędzia w systemach * nix
Algorytmy kryptograficzne
To może być bardzo długa lista. Algorytmy kryptograficzne są zaimplementowane we wszystkich programach, które mogą wykonywać bezpieczną komunikację lub transakcje.
Kompilatory
Kompresja i przetwarzanie obrazu
Uczenie się klauzul opartych na konflikcie
Od 2000 r. Czas działania solverów SAT w testach wzorcowych w przemyśle (zwykle z branży sprzętowej, choć wykorzystywane są również inne źródła) zmniejszał się niemal wykładniczo każdego roku. Bardzo ważną częścią tego rozwoju jest algorytm uczenia się klauzul opartych na konflikcie , który łączy algorytm propagacji ograniczeń logicznych w oryginalnym artykule Davisa Logemanna i Lovelanda z techniką uczenia klauzul, która powstała w programowaniu ograniczeń i badaniach sztucznej inteligencji. W przypadku konkretnego modelowania przemysłowego SAT jest uważany za łatwy problem ( patrz ta dyskusja)). Dla mnie jest to jeden z największych sukcesów w ostatnim czasie, ponieważ łączy postępy algorytmiczne rozłożone na kilka lat, sprytne pomysły inżynieryjne, ocenę eksperymentalną i wspólny wysiłek na rzecz rozwiązania problemu. Artykuł CACM autorstwa Malika i Zhanga jest dobrą lekturą. Algorytmu tego naucza się na wielu uniwersytetach (uczęszczałem na cztery tam, gdzie tak było), ale zazwyczaj w klasie logiki lub metod formalnych.
Zastosowań solverów SAT jest wiele. IBM, Intel i wiele innych firm mają własne implementacje solvera SAT. Menedżer pakietów w OpenSUSE wykorzystuje również solver SAT.
źródło
PageRank jest jednym z najbardziej znanych takich algorytmów. Opracowany przez współzałożyciela Google'a, Larry'ego Page'a i współautorów, stanowił podstawę oryginalnej wyszukiwarki Google i jest powszechnie uznawany za pomoc w osiągnięciu lepszych wyników wyszukiwania niż ich konkurenci w tym czasie.
Wyobrażamy sobie „losowego surfera” zaczynającego się na jakiejś stronie internetowej i wielokrotnie klikającego losowy link, aby przenieść go na nową stronę. Pytanie brzmi: „Jaką część czasu surfer spędza na każdej stronie?” Im więcej czasu internauta spędza na stronie, tym ważniejsza jest strona.
źródło
Chciałbym wspomnieć o szeroko stosowanym oprogramowaniu CPLEX (lub podobnym) wdrożeniu metody / algorytmu Simplex do rozwiązywania problemów programowania liniowego. Jest to (?) Najczęściej stosowany algorytm w badaniach ekonomicznych i operacyjnych.
„Gdyby wziąć dane statystyczne, który problem matematyczny zużywa większość czasu komputerowego na świecie, wówczas (nie licząc problemów z obsługą baz danych, takich jak sortowanie i wyszukiwanie) odpowiedzią byłoby prawdopodobnie programowanie liniowe. ” (L. Lovász, nowy algorytm programowania liniowego - lepszy czy gorszy niż metoda simpleks? Math. Intelligencer 2 (3) (1979/80) 141-146.)
Algorytm Simplex ma również duży wpływ w teorii; patrz na przykład (wielomianowa) hipoteza Hirscha .
Chyba typowy licencjat lub doktorat. klasa w algorytmach zajmuje się algorytmem Simplex (w tym podstawowymi algorytmami z algebry liniowej, takimi jak metoda eliminacji Gaussa).
(Inne udane algorytmy, w tym Quicksort do sortowania, są wymienione w Algorytmach z książki ).
źródło
Jak rozumiem, Narodowy Program Dopasowywania Mieszkańców przez długi czas był po prostu prostym zastosowaniem algorytmu Gale-Shapleya do rozwiązania problemu stabilnego małżeństwa. Od tego czasu został nieco zaktualizowany, aby obsługiwać dodatkowe szczegóły, takie jak zadania małżeńskie (inaczej „problem dwóch ciał”) itp.
źródło
Jeśli obejmujesz także przedmioty na poziomie doktoranckim, wiele (większość?) Programów studiów podyplomowych CS zawiera kurs teorii kodowania. Jeśli masz kurs teorii kodowania, na pewno obejmiesz kod Reeda-Solomona, który jest integralną częścią działania płyt kompaktowych i kodowania Huffmana, który jest używany w formatach JPEG, MP3 i ZIP. W zależności od orientacji kursu możesz również obejmować Lempel-Ziv, który jest używany w formacie GIF. Osobiście dostałem Lempel-Ziv na studiach licencjackich z algorytmów, ale myślę, że może to być nietypowe.
źródło
GNU grep to narzędzie wiersza poleceń do wyszukiwania jednego lub więcej plików wejściowych w poszukiwaniu linii zawierających dopasowanie do określonego wzorca. Powszechnie wiadomo, że grep jest bardzo szybki! Oto cytat jego autora Mike'a Haertela (zaczerpnięty stąd ):
źródło
Mówiąc bardziej ogólnie, nagroda Kanellakis przyznawana jest przez ACM za dokładnie takie odkrycia teoretyczne, które miały duży wpływ na praktykę.
nagroda 2012 jest przyznawana za haszowanie wrażliwe na lokalizację , które stało się powszechną metodą zmniejszania wymiarów w eksploracji danych w przypadku problemów bliskich sąsiadów (i jest stosunkowo łatwa do nauczenia - przynajmniej sam algorytm)
źródło
Oto niektóre przykłady przemysłowych zastosowań tych struktur danych:
Tutaj jest także strona, która zbiera informacje o aplikacjach CountMin.
Jeśli chodzi o nauczanie, wiem, że podstawowe techniki szkicowania są nauczane w Princeton na licencjackich dyskretnych kursach matematycznych. Nauczyłem się szkicu CountMin na moim pierwszym kursie algorytmów. W każdym razie analiza CountMin jest prostsza niż analiza dla prawie każdego innego randomizowanego algorytmu: jest to proste zastosowanie niezależności parowej i nierówności Markowa. Jeśli nie jest to standardowy materiał w większości kursów algorytmicznych, myślę, że dzieje się tak z przyczyn historycznych.
źródło
W ostatniej dekadzie zastosowano algorytmy w celu zwiększenia liczby (i jakości, jak sądzę?) Przeszczepów nerek za pomocą różnych programów dopasowywania dawcy nerki. Mam problem ze znalezieniem najnowszych wiadomości na ten temat, ale oto co najmniej kilka wskazówek:
Jeszcze w 2007 roku Sojusz na rzecz Parzystej Darowizny korzystał z algorytmu Abrahama, Bluma i Sandholma . Być może nadal go używają, ale nie mogłem się dowiedzieć, szukając online. Chociaż ten algorytm prawie na pewno nie jest objęty „standardowymi” kursami, łączy w sobie kilka podstawowych pomysłów, które z pewnością są nauczane na takich kursach, aby zapewnić wystarczająco dobry algorytm dla problemu, który jest generalnie NP-zupełny (wariant Cycle Cover ).
Krajowy rejestr nerek stosuje również niektóre standardowe algorytmy, w tym (w pewnym momencie) CPLEX. Doprowadziło to do faktycznie wykonanego łańcucha przeszczepów łączącego 60 osób .
Jest to jeden z moich ulubionych przykładów nie tylko sukcesu algorytmów, ale także znaczenia badania algorytmów dla problemów z NP-zupełnym. Mogą dosłownie ocalić życie i już to zrobili!
źródło
Algorytm Viterbiego, który jest nadal szeroko stosowany w rozpoznawaniu mowy i wielu innych aplikacjach: http://en.wikipedia.org/wiki/Viterbi_algorytm Sam algorytm jest podstawowym programowaniem dynamicznym.
Z Wikipedii: „Algorytm Viterbi został zaproponowany przez Andrew Viterbiego w 1967 r. Jako algorytm dekodowania kodów splotowych za pośrednictwem hałaśliwych cyfrowych łączy komunikacyjnych. [1] Algorytm znalazł uniwersalne zastosowanie w dekodowaniu kodów splotowych używanych zarówno w cyfrowej komórkowej sieci CDMA, jak i GSM, modemy telefoniczne, satelita, komunikacja kosmiczna i bezprzewodowe sieci LAN 802.11. Jest teraz powszechnie stosowany w rozpoznawaniu mowy, syntezie mowy, wykrywaniu słów kluczowych, lingwistyce obliczeniowej i bioinformatyce. Na przykład w mowie-na-tekście (mowa rozpoznawanie), sygnał akustyczny jest traktowany jako obserwowana sekwencja zdarzeń, a ciąg tekstu jest uważany za „ukrytą przyczynę” sygnału akustycznego. Algorytm Viterbi znajduje najbardziej prawdopodobny ciąg tekstu, biorąc pod uwagę sygnał akustyczny. ”
źródło
źródło
Sprawdź projekt BonnTools Jensa Vgena dla Chip Design. http://www.or.uni-bonn.de/~vygen/projects.html Słyszałem kilka rozmów na ten temat, a także przeglądałem niektóre z ich artykułów. Wykorzystują losowe zaokrąglanie w stylu Raghavana-Thompsona, a także multiplikatywną metodę aktualizacji masy do rozwiązywania wielkoskalowych płyt LP o dużej wydajności. Jednak, jak każdy duży projekt, muszą oni również wykonać pewne prace inżynieryjne, ale metodologia opiera się w dużej mierze na dobrze znanych algorytmach.
źródło
Zabawne, że widziałem to pytanie dzisiaj, a następnie przypadkowo kliknąłem ten link na wiele zastosowań transformacji Fouriera .
źródło
Jestem raczej zaskoczony, że przy wszystkich powyższych fantazyjnych algorytmach nikt nie wspomniał o czcigodnej rodzinie algorytmów kompresji Lempel-Ziv (wynalezionej w 1977/78).
Aktualizacja
Najwyraźniej zostało już wspomniane krótko.
źródło
rozkład wartości pojedynczej (SVD) ma silny związek z analizą czynników statystycznych lub analizą głównych składników i jest zrozumiały w ramach algebry liniowej lub klasy statystycznej licencjackich oraz ma wiele ważnych właściwości teoretycznych. odgrywa również rolę w algorytmach kompresji obrazu. odegrał kluczowy element w zwycięskich pracach w konkursie o nagrodę Netflix o wartości 1 miliona USD (jeden z największych na świecie konkursów analiz danych w historii) i jest teraz wdrażany na ich stronie w celu przewidywania ocen użytkowników. wiadomo również, że jest silnie związana z samoorganizującymi się sieciami neuronowymi w języku hebrajskim, które wywodzą się z teorii biologicznej.
istnieje również związek z opadaniem gradientu, które jest szeroko stosowane w uczeniu maszynowym i sztucznych sieciach neuronowych oraz jako bardzo powszechnie stosowana technika optymalizacji, w której przypadek metoda Newtona jest podstawową formą 2D. istnieje algorytm opadania gradientu w celu uzyskania SVD.
źródło
Znalezienie ścieżki Eulera jest podstawą zestawu genomu - zadanie często wykonywane podczas pracy z pełnymi genomami (w bioinformatyce, medycynie, medycynie sądowej, ekologii).
AKTUALIZACJA Zapomniałem tego oczywistego: UPS, FedEx, USPS muszą co noc rozwiązywać duże problemy z podróżującym sprzedawcą. Oszczędza dużo czasu i pieniędzy, aby wysłać kierowców na optymalną trasę.
AKTUALIZACJA2 Problem z ustawieniem wierzchołka przy minimalnym sprzężeniu zwrotnym jest używany do rozwiązywania zakleszczeń w wielu systemach operacyjnych.
źródło
Podoba mi się ten system do ratowania maksymalnej liczby żyć w Wielkiej Brytanii z przeszczepami nerki, oparty na algorytmach maksymalnego dopasowania: sparowane i altruistyczne dawstwo nerki . Łączą osoby potrzebujące nerek, które mają niepasującego przyjaciela / krewnego gotowego oddać, z innymi ludźmi w tej samej sytuacji, w maksymalny sposób. Następnie w dniu darowizny wszyscy dawcy przekazują darowizny w tym samym czasie, po czym następuje szybki transport nerek do kraju do odbiorców.
źródło
ta stosunkowo nowa książka jest warta rozważenia jako kompletnej / szczegółowej odpowiedzi na pytanie w wygodnej, rozszerzonej / zebranej formie i która mogłaby być wykorzystana jako materiał uzupełniający dla klasy algorytmów. [niektóre z nich zostały już wspomniane; znaczące samo nakładanie się jest godne uwagi.]
Dziewięć algorytmów, które zmieniły przyszłość: genialne pomysły, które napędzają dzisiejsze komputery MacCormick
kolejne odniesienie nieco podobne, ale bardziej teoretyczne, The Best of the 20th Century: Redakcja wymienia Top 10 algorytmów Cipra / SIAM.
źródło
Wyszukiwanie ciągów Knutha-Morrisa-Pratta jest szeroko stosowane, specyficzne i nauczane w licencjackich / magisterskich CS.
źródło
Myśląc o bardzo podstawowych algorytmach
Miło jest pokazać, że pojawiają się w prawdziwym życiu:
A. Wiele grup korzysta z pewnego rodzaju algorytmu pokrywającego drzewa, dzieląc listy telefoniczne w sposób hierarchiczny między ludźmi B. Samochody na skrzyżowaniu zwykle używają algorytmu round-robin (w sposób dobrowolny) C. Większość miejsc, jako banki i szpital, organizuj swoich klientów w algorytmie FIFO
źródło
Fascynujący problem algorytmiczny powstaje w medycznym zastosowaniu tomografii komputerowej. W tomografii komputerowej (CT) ciało jest narażone na promieniowanie rentgenowskie pod różnymi kątami. Na jednym końcu skanera znajdują się nadajniki rentgenowskie, a na drugim końcu czujniki. Z takiej serii skanów rekonstruowany jest obraz, który lekarz może zbadać!
Przesączono powrotem występ algorytm jest podstawą do rekonstrukcji obrazu z zestawu skanowania. Algorytm ten jest właściwie formą problemu aproksymacyjnego, w którym „sygnał” jest próbkowany poniżej częstotliwości Nyquista. Algorytm ten jest stosowany „za kulisami” we wszystkich szpitalach, a podstawowa filtrowana projekcja wsteczna wykorzystuje matematykę licencjacką, taką jak transformaty Fouriera, w celu uzyskania twierdzenia plastra Fouriera .
źródło
Przykład FFT
Kiedyś pomogłem przenieść algorytm FFT na inny język systemu.
Algorytm został wykorzystany do określenia przerw linii w koncentrycznym dostarczaniu telewizji kablowej / internetu / telefonu. Zasadniczo technik poprosiłby o przesłanie sygnału do skrzynki klienta, jednocześnie wyświetlałby statystyki w czasie rzeczywistym dla konkretnego klienta, takie jak QoS, dB, ... Technik mógłby użyć dane i wykres do ustalenia w odległości kilku stóp między domem a słupem, w którym istniała częściowa przerwa (lub wielokrotne przerwy, jak mi powiedziano).
Jak wspomniano powyżej, FFT jest szeroko stosowany, ale był to jeden z bardziej rażących i oczywistych (pod względem przyczyny i sposobu), jaki widziałem w praktyce.
Przepraszam, że musiałem utrzymać go na wysokim poziomie.
źródło
Algorytm liniowy Bresenhama jest najbardziej użytecznym algorytmem, z jakim się zetknąłem. Łatwy do zrozumienia Ive wykorzystał go do wielu zastosowań, od rysowania linii, przez skomplikowany spliner do silnika odlewania 3d, aż po złożony renderer wielokątów, a także do złożonych animacji i skalowania.
źródło
Konfigurowalne planowanie trasy (Daniel Delling, Andrew V. Goldberg, Thomas Pajor i Renato F. Werneck) http://research.microsoft.com/apps/pubs/default.aspx?id=145688
uprawnienia Bing Maps: http://www.bing.com/blogs/site_blogs/b/maps/archive/2012/01/05/bing-maps-new-routing-engine.aspx
źródło
Wikipedia ma przyzwoitą kolekcję algorytmów / aplikacji sklasyfikowanych mniej więcej na liście . Microsoft zapewnia cytowane artykuły, ale bez wyraźnego wyjaśnienia dziedziny informatyki ani aplikacji. Istnieje również lista chronologiczna z różnych konferencji CS _http: //jeffhuang.com/best_paper_awards.html_ opracowana przez prof. Huanga.
Spectral Clustering to elegancki algorytm grupowania, znany jako znormalizowany algorytm cięcia wprowadzony przez Jianbo Shi i Jitendra Malik do segmentacji obrazów. Został również dobrze opracowany w aplikacjach klastrowania danych, stanowiąc dobre skrzyżowanie obu społeczności.
źródło
dwa inne ulubione przykłady mocno zakorzenione w informatyce, ale być może łatwo przeoczone przez teoretyków abstrakcjonizmu, którzy przeszli ogromny / transformacyjny postęp i od kilku do kilkudziesięciu lat odnieśli znaczący wpływ na życie codzienne / praktyczne. już całe pokolenie dorastało, nie znając świata bez nich. w zasadzie kategoria modelowania i symulacji .
algorytmy symulacji fizyki . głównie przy użyciu praw Newtona, ale przy użyciu innych praw (takich jak dynamika płynów). stosowany w wielu różnych aplikacjach, od aplikacji inżynierskich, gier wideo, a czasem filmów. odpowiada to również za znaczną poprawę bezpieczeństwa, wydajności lub niezawodności np. samochodów i samolotów poprzez poddanie wirtualnych / testowych projektów symulowanym obciążeniom. główny pokrewny bieżący obszar badań z zakresu bioinformatyki o ogromnych implikacjach w biologii, np. projektowanie leków, zapobieganie chorobom itp .: składanie białek / przewidywanie struktury . zauważ także, że tegoroczna Nagroda Nobla w dziedzinie chemii została przyznana za symulację chemiczną Karplusowi, Levittowi i Warshel. algorytmy fizyki są bardzo zaangażowane w bezpieczeństwo / testowanie broni jądrowej np. w laboratoriach Los Alamos.
algorytmy raytracing / CGI . Zaczęło się to jako temat badawczy zaledwie kilka dekad temu [kolega uzyskał tytuł magistra w dziedzinie pisania algorytmów śledzenia promieniowaniem CS], ale stał się bardzo stosowany np. w grach i biznesie filmowym, osiągając niezwykły poziom wiarygodności, który jest odpowiedzialny za duże ilości efekty specjalne w filmach. branże te zainwestowały dosłownie miliardy dolarów i wykorzystują te algorytmy, a całe duże korporacje opierają się na ich wykorzystaniu, np . Pixar . technika początkowo stosowana głównie w filmach scifi, obecnie jest tak rozpowszechniona, że jest rutynowo stosowana nawet w filmach „typowych”. na przykład ostatnio The Great Gatsby polegał w dużej mierze na efektach CGI, aby rysować przekonujące lub stylizowane środowiska, retuszować film / postacie itp.
źródło
Rosetta Code wymienia stosowane algorytmy według Programming Task (692) i Programming Language (518) z Semantic MediaWiki.
źródło
być może w tym miejscu wspomniano o wszystkich głównych / preferowanych algorytmach będących przedmiotem zainteresowania tej grupy odbiorców. jednak kilka innych zasługuje na wzmiankę o kompletności. w tym przypadku istotna jest analiza tego, co uważa się za znaczący algorytm.
w dziedzinie CS i IT wydaje się, że dawno temu zauważono w AI zjawisko zwane „przemieszczaniem słupków bramki” . jest to zjawisko psychologiczne, w którym pole rozwija się stosunkowo szybko, ale ludzie szybko mentalnie dostosowują się do „nowej normalności” i przyjmują rzeczywiste lub nawet przełomowe postępy jako przyziemne lub nietypowe z perspektywy czasu, po dokonaniu, tj. zlekceważeniu lub zminimalizowaniu. jest to dobrze ujęte w tym pytaniu, ponieważ algorytmy przechodzą od badań i rozwoju do „wdrażania”. cytując autora pytania w późniejszych komentarzach:
ale jest to problematyczne i zasadniczo redefinicja słowa „algorytm” zorientowana na TCS. przypuszczalnie interesujące algorytmy są zaawansowane. Czy to oznacza, że jeśli problem zostanie zredukowany do zaawansowanego algorytmu, nie będzie już „interesujący”? a „zaawansowany” jest wyraźnie ruchomym celem. istnieje sposób na wąskie lub szerokie zdefiniowanie „algorytmów” . wydaje się, że definicja TCS zmienia się w kontekście, ale zauważ, że nawet w TCS istnieje tendencja do szerokiej definicji, np. w tak zwanej „soczewce algorytmicznej” .
czasami najbardziej wszechobecne algorytmy są również najbardziej pomijane! Internet i WWW to duże środowisko / niemal ekologia dla algorytmów. wciąż stosunkowo młody, mający zaledwie około 2 dekad (wynaleziony w 1991 r.), urósł gwałtownie i gwałtownie w krótkim czasie. Rozwój stron WWW prawdopodobnie nawet wyprzedził słynną wykładniczą ustawę Moores.
Internet / WWW są obsługiwane przez wiele wyrafinowanych algorytmów. Internet ma złożone algorytmy routingu wbudowane w routery (ponownie zasilające korporacje o wartości wielu miliardów dolarów, takie jak Cisco). istnieje pewna zaawansowana teoria, np. w algorytmach routingu . Algorytmy te były przedmiotem nowych, zaawansowanych / nowatorskich badań przed dziesięcioleciami, jednak obecnie są tak dopracowane i dobrze zrozumiane, że są nieco niewidoczne.
nie powinniśmy tak szybko zapominać, że kilkadziesiąt lat temu wiodący badacze nie byli nawet pewni, czy świat Internetu działa, czy był możliwy (obserwowany we wczesnych badaniach nad przełączaniem pakietów, radykalnie nowy wzorzec projektowy w tym czasie odchodzący od wcześniejszego przełączania obwodów), oraz jeszcze kilka lat temu istniały obawy, że w pewnym momencie nie uda się go skalować i zacznie zawodzić z powodu przytłaczających skoków głośności.
wykorzystuje również zaawansowane wykrywanie / korekcję błędów . internet prawdopodobnie największy, najbardziej odporny na uszkodzenia systemu kiedykolwiek zbudowany przez ludzi, wciąż rośnie.
następnie istnieje silny argument, aby algorytmy zasilające WWW były zaawansowane. Serwery HTTP i WWW są wysoce dostrojone / zoptymalizowane, a także wykorzystują zaawansowane protokoły bezpieczeństwa / szyfrowania (HTTPS). logika renderowania strony internetowej stała się niezwykle zaawansowana w HTML5 i CSS3 , wraz z językiem programowania Javascript .
stosunkowo nowy CSS ma różne zasady podobne do programowania OOP, takie jak możliwość ponownego użycia i dziedziczenie. Mówiąc o składzie, TeX jest ważnym, wewnętrznie złożonym naukowym systemem składu (nie różnym od języka programowania) wymyślonym przez Knutha, który można teraz renderować na stronach internetowych (i jest używany w setkach tysięcy artykułów naukowych lub więcej).
kolejny stosunkowo nowy obszar algorytmów budowanych w Internecie, wciąż powstających, opartych na zbiorowej inteligencji . Oprogramowanie Stackexchange jest przykładem zaawansowanego systemu zbiorowej inteligencji. sieci społecznościowe wykazują także kluczowe cechy inteligencji zbiorowej, a funkcje są ciągle dodawane w celu zwiększenia tej inteligencji (na przykład „polubienia” na Facebooku mają zaledwie kilka lat). dziedzina systemów oceny opiera się na algorytmach filtrowania współpracującego i wciąż ewoluuje w oparciu o nowe badania i zastosowania.
w skrócie, wszystkie rewolucyjne sukcesy przekształcające codzienne ludzkie doświadczenia faktycznie znacznie wykraczają poza zwykłe „cele terenowe”. jak podaje tytuł pytania, wszystkie zastosowane podstawowe algorytmy . teraz tak wszechobecny i niewidoczny, że może być czymś w rodzaju IT-wyrażenia, „części hydrauliki”.
źródło
Niezwykle skutecznym algorytmem (sprzętowym) jest reset po włączeniu zasilania.
Bez systemu, w którym komputer znajduje się w znanym stanie po podłączeniu zasilania, nic innego nie dzieje się dobrze .
Po zresetowaniu po włączeniu działa wszystko, co ma w sobie procesor, niezależnie od tego, czy jest wbudowane, czy nie.
Następnym razem, gdy będziesz przy wodopoju dla programistów i informatyków, podnieś szklankę sody wiśniowej do resetu po włączeniu.
źródło