Co to jest algorytm?

Jest to sekwencja zasad / instrukcji przedstawionych przed podejściem do rozwiązania konkretnego problemu, gwarancja rozwiązania problemu. Weźmy na przykład punkt bramki kolejowej.
Algorytm powinien:

  • Bądź dobrze zdefiniowany i dobrze uporządkowany. Instrukcje zawarte w algorytmie powinny być zrozumiałe i dobrze zdefiniowane.
  • Mają jednoznaczne operacje, tzn. Każdy etap algorytmu powinien być na tyle prosty, aby nie wymagał dalszego uproszczenia
  • Mają efektywnie obliczalną operację.

Źródło obrazu: d262ilb51hltx0.cloudfront.net/

Zrozumienie algorytmu

Źródło obrazu : goo.gl/images/u76bFe

Jest czujnik, który wykrywa nadejście pociągu, którego wyjściem mogą być 2 wyniki

  • Pociąg przyjeżdża
  • Pociąg nie przyjeżdża

Wynik pierwszego wyniku jest przekazywany do akcji, w której zaleca się zamknięcie bramek, podczas gdy wynik drugiego wyniku jest ponownie testowany poprzez przesłanie go do wstępnej instrukcji. Ponadto wynik działania, który był wynikiem pierwszego warunku, poddawany jest testowi w celu sprawdzenia, czy pociąg został całkowicie odjechany. Jeśli odpowiedź brzmi tak, bramy są otwarte, a jeśli jest przeczące, bramy pozostają zamknięte. Będziemy dyskutować więcej na ten temat i pracować z następującymi tematami (Podzbiory / bloki konstrukcyjne i działanie algorytmu)

W jaki sposób algorytm ułatwia pracę?

Jak wiemy, jest to plan rozwiązania problemu. Cóż, jeśli nie mamy planu, nasze podejście do rozwiązania złożonego problemu prawdopodobnie zawiedzie przy pierwszej próbie, a nawet jeśli rozwiąże problem, szanse są bardzo mniejsze, że będzie to optymalne rozwiązanie tego problemu.

Z drugiej strony, jeśli stworzymy algorytm przed rozwiązaniem jakiegokolwiek problemu, powiedzmy, że tworzymy kilka algorytmów i sortujemy je w oparciu o optymalne rozwiązanie, które zapewniają, to gwarantuje rozwiązanie danego problemu. To jest powód, dla którego wszędzie, przed rozwiązaniem jakiegokolwiek problemu, najpierw tworzony jest algorytm.

Najlepsze firmy opracowujące algorytmy

Zbudowanie świetnego produktu wymaga naprawdę dobrego projektu, chociaż nie możemy porównać algorytmu dla dwóch różnych problemów, możemy jedynie wymienić nazwy firm, które dostarczyły kilka doskonałych produktów na cały świat w XXI wieku:

  • DeepMind
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • Kambryjski
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Zebra Medical Vision
  • Babilon
  • Intel
  • Zdrowie Flatiron
  • Potwierdzać
  • Dorobkiewicz
  • Element AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Źródło: algorytmxlab.com/

Podzbiory / bloki konstrukcyjne i działanie algorytmu

Przez wszystkie te lata udowodniono, że algorytm można zaprojektować z zaledwie trzech elementów:

  • Sekwencja
  • Wybór
  • Iteracja


Źródło obrazu : https://goo.gl/

Sekwencja to seria instrukcji, których należy przestrzegać, aby rozwiązać problem, i instrukcje należy wykonywać w kolejności.

Przykłady

1. Dodanie dwóch liczb

Krok 1: Rozpocznij
Krok 2: Uzyskaj dwie liczby jako dane wejściowe i zapisz w zmiennej jako a i b
Krok 3: Dodaj liczbę a & b i zapisz w zmiennej c
Krok 4: Wydrukuj c
Krok 5: Zatrzymaj się.

Wybór to program, który pozwala nam wybrać wynik różnych działań. Jak widzieliśmy wcześniej w przykładzie bramy kolejowej, mieliśmy warunkową skrzynkę, w której sprawdzał, czy pociąg przyjeżdża.

2. Znajdź największą spośród 2 liczb

Krok 1: Rozpocznij
Krok 2: Uzyskaj dwie liczby jako dane wejściowe i zapisz w zmiennej jako a i b
Krok 3: Jeśli a jest większe niż b, to
Krok 4: Wydrukuj duży
Krok 5: inaczej
Krok 6: Wydruk b jest duży
Krok 7: Zatrzymaj się

Powtarzanie, iteracja lub pętla to mniejsze programy, które są wykonywane kilka razy, aż warunek zostanie spełniony.

3. Jeśli chcielibyśmy obliczyć silnię liczby

Krok 1 : Rozpocznij
Krok 2 : Zadeklaruj zmienne n, silnia i i
Krok 3 : Zainicjuj zmienne tj. Silniaß1 i iß1
Krok 4: Odczytaj wartości n
Krok 5: Powtarzaj kroki do n iteracji
silnia <- silnia * i
i <- i + 1
Krok 6: Wyświetl silnię
Krok 7: Zatrzymaj się

Co możesz zrobić z algorytmem?

Jest to funkcja lub seria funkcji, które rozwiązują problem. Możemy użyć algorytmu, aby rozwiązać najprostszy problem, a także niektóre z najtrudniejszych problemów na świecie. Stwierdzamy, że jest on optymalny przy pomocy „złożoności czasu”. Mówiąc prościej, złożoność czasu jest sposobem na opisanie czasu działania dowolnego algorytmu. Istnieje minimalny czas działania (zwany małym „O”), średni czas działania i najgorszy przypadek działania O (N) (znany również jako duży „O”). Informatycy i inżynierowie oprogramowania lubią myśleć o algorytmach, ponieważ są zainteresowani oceną i budowaniem kolekcji najlepszych praktyk, aby nie musieli zaczynać od zera przy każdym wystąpieniu podobnej klasy problemów. Poniżej znajduje się przykład różnych zawiłości czasowych, które można uzyskać podczas rozwiązywania konkretnego problemu. Oznacza to również, że może istnieć wiele rozwiązań jednego problemu, ale musimy wybrać najbardziej optymalny, obliczając złożoność czasową algorytmów. Podczas wywiadów zostaniesz poproszony o rozwiązanie problemu, a ponadto zostaniesz poproszony o jego optymalizację, tj. O skrócenie czasu działania twojego algorytmu. Na przykład mógłbyś napisać kod z 2 pętlami „for” (iteracja), ale może być możliwe, że zadanie można wykonać tylko za pomocą pojedynczej pętli „for” (iteracja), ale nie było to rozwiązanie jeszcze i musisz dowiedzieć się więcej!

Źródło obrazu: https://goo.gl/

Zalety algorytmu

  1. Jest to stopniowe przedstawienie rozwiązania dowolnego problemu, co ułatwia zrozumienie.
  2. Używa określonej procedury.
  3. Jest niezależny od jakiegokolwiek języka programowania, więc jest łatwy do zrozumienia dla każdego, nawet bez znajomości programowania.
  4. Każdy krok ma swoją logiczną sekwencję, dlatego łatwo go debugować.
  5. Dzięki zastosowaniu algorytmu problem jest dzielony na mniejsze części lub kroki, dlatego programiście łatwiej jest przekonwertować go na rzeczywisty program

Wymagane umiejętności

Aby zaprojektować solidny i najlepszy algorytm złożoności czasowej, trzeba być logicznym i dobrze posługiwać się matematyką oraz znać przynajmniej jeden obiektowy język programowania. Potrzebna jest również znajomość struktury danych.

  1. Komputery - dowiedz się więcej o tablicach, połączonych listach, drzewach binarnych, tabelach mieszania, wykresach, stosach, kolejkach, stosach i innych podstawowych strukturach danych.
  2. Matematyka - poznaj teorię zbiorów, maszyny stanów skończonych, wyrażenia regularne, mnożenie macierzy, operacje bitowe, rozwiązywanie równań liniowych i inne ważne pojęcia, takie jak permutacje, kombinacje, zasada szuflady.
  3. Big-O & Runtime - Dowiedz się, czym jest Big-O i jak analizować czasy działania algorytmów.

Dlaczego powinniśmy używać i dlaczego potrzebujemy algorytmu?

Algorytmu należy używać, ponieważ ułatwia on nam pracę i zapewnia nam najbardziej optymalne rozwiązanie. Jeśli nie zastosujemy algorytmu przed rozwiązaniem jakiegokolwiek złożonego problemu, istnieje duża szansa, że ​​pójdziemy bez kierunku pod względem rozwiązania. Dzięki algorytmowi oszczędzamy czas na rozwiązywaniu problemów i zapewniamy, że optymalność algorytmu rozwiązania, jak wspomniano wcześniej, jest niezależna od dowolnego języka programowania, więc każdy może zaprojektować algorytm, ale aby zaprojektować naprawdę dobry algorytm, należy być dobrym w logice i matematyce. Służy jako prototyp rozwiązania.

Wyobraź sobie na przykład, że mamy przed sobą dwie kostki Rubika. Jeden z nich może używać algorytmów (np. Ile razy lub w którą stronę obrócić twarz), a drugi musi znaleźć własną drogę. Który sposób będzie szybszy? Z pewnością będzie to pierwszy.

Weźmy ciekawy przykład:

Powiedzmy, że mamy szereg elementów i chcielibyśmy je posortować w porządku rosnącym. Teraz istnieje inne podejście algorytmiczne. Skupimy się na złożoności czasowej 2 z nich: sortowania wstawiania i sortowania scalania

Sortowanie wstawek: Sortowanie wstawień jest prostym sortowaniem.
(Złożoność czasowa wynosi O (N 2).)

Scal sortowanie: w sortowaniu scalającym elementy sortujemy za pomocą metody Divide and Conquer.
Złożoność czasowa wynosi O (N log N).

Może to być wpływ, jaki można spotkać, jeśli nie zastosujesz się do niego i nie przeprowadzisz analizy.

Zakres algorytmu

Ucząc się i opanowując algorytm, poznasz sztukę „rozwiązywania problemów”. Dzięki dobrej praktyce i ciągłemu uczeniu się powinieneś być w stanie rozwiązać złożone problemy. Jest to podstawa zaprojektowania jakiegoś oprogramowania lub kodu, ponieważ czas działania kodu jest jednym z najważniejszych czynników determinujących wykonanie określonego zadania. Giganci technologiczni świata, tacy jak Google i Facebook, oceniają Twoje umiejętności rozwiązywania problemów, aw wywiadach większość pytań dotyczy projektowania algorytmów i rozwiązywania problemów. Zostaniesz poproszony o zaprojektowanie algorytmu i zoptymalizowanie go do możliwie najlepszego czasu złożoności.

Kilka punktów:

  • Poprawi to twoje umiejętności rozwiązywania problemów, co doprowadzi cię do lepszej rywalizacji podczas wywiadów lub egzaminów online
  • Skrócisz czas rozwiązywania każdego problemu.
  • Prawie wszyscy giganci technologiczni zatrudniają kandydatów na podstawie ich lepszych umiejętności rozwiązywania problemów
  • Można w pełni wykorzystać język programowania, ucząc się, jak konstruować i projektować algorytm

Kto jest odpowiedni do nauki technologii algorytmów?

Z punktu widzenia informatyki każdy, kto wykonuje niewiele lub więcej programowania, powinien nauczyć się algorytmów. Jeśli napiszesz kod, który nie rozwiązuje problemu lub jeśli rozwiązuje problem, ale zużywa zasoby nieefektywnie (na przykład zajmuje dużo czasu lub zużywa zbyt dużo pamięci komputera), wówczas kod nie jest optymalny . Ale firmy chciałyby, aby ich oprogramowanie lub produkty reagowały lub działały w możliwie najkrótszym czasie.

Każdy, kto coś rozwija, powinien nauczyć się przeprowadzać analizę algorytmu w celu zapewnienia optymalnego funkcjonowania produktu końcowego.

W jaki sposób algorytm pomoże ci w rozwoju kariery?

Projektowanie i analiza algorytmu nie jest rolą (specyficzną), ale stanowi element twojej pracy i ta część odgrywa istotną rolę w rozwoju kodu. Jeśli zaprojektujesz dobry algorytm, napiszesz dobre kody z optymalnym rozwiązaniem, a ostatecznie twój produkt końcowy, który zostanie dostarczony do klientów, przoduje. Jeśli więc projektujesz i / lub rozwijasz oprogramowanie, wiedza i doświadczenie w zakresie struktur danych i algorytmów są niezbędne. Powiedzmy, że pracujesz nad produktem programistycznym, jego odpowiedź powinna zostać dokładnie przetestowana (oczywiście chciałbyś sprawdzić czas wykonywania procesu przed przekazaniem kodu zespołowi testującemu oprogramowanie) i nie jest to coś, co możesz zgadnij prawie dokładnie wcześniej, ale musisz użyć analizy algorytmu, aby obliczyć złożoność czasu.

Wniosek

Tak jak widzieliśmy wstępny opis algorytmów i jego różnych aspektów, i widzieliśmy, że mogą istnieć różne podejścia do rozwiązania konkretnego problemu, a złożoność Big-O i czas to parametry, które pomagają nam wybrać najbardziej optymalne rozwiązanie. Eksplorując dobrą liczbę algorytmów, zasadniczo zyskasz silną pozycję w analizie algorytmu i powinieneś być w stanie łatwo zaprojektować i uruchomić analizę algorytmu.

Polecane artykuły

To był przewodnik po algorytmach. Tutaj omówiliśmy działanie algorytmów z przykładami i jego różnymi aspektami. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Co to jest Tableau Server?
  2. Przewodnik po analizach Big Data
  3. Co to jest programista SQL?
  4. Co to jest Informatica