Toore jõu algoritmid on selgitatud

Jõhkade jõudude algoritmid on täpselt sellised, nagu need kõlavad - probleemide lahendamise otsekohesed meetodid, mis tuginevad puhtale arvutusvõimsusele ja tõhususe parandamiseks proovivad kõiki võimalusi, mitte täiustatud tehnikaid.

Kujutage näiteks ette, et teil on väike 4-kohaline tabalukk, igaüks 0–9. Unustasite oma kombinatsiooni, kuid ei soovi teist tabalukku osta. Kuna te ei mäleta ühtegi numbrit, peate luku avamiseks kasutama toore jõu meetodit.

Nii et panete kõik numbrid tagasi 0-ni ja proovige neid ükshaaval: 0001, 0002, 0003 ja nii edasi, kuni see avaneb. Halvimal juhul kulub teie kombinatsiooni leidmiseks 104 ehk 10 000 katset.

Klassikaline näide arvutiteaduses on rändava müügimehe probleem (TSP). Oletame, et müügimees peab külastama 10 linna üle kogu riigi. Kuidas saab kindlaks teha nende linnade külastamise järjekorra, et kogu läbitud vahemaa oleks minimaalne?

Toore jõu lahendus on lihtsalt arvutada iga võimaliku marsruudi kogu kaugus ja seejärel valida kõige lühem. See pole eriti efektiivne, sest nutikate algoritmide abil on võimalik palju võimalikke marsruute kõrvaldada.

Toore jõu ajaline keerukus on O (m n ) , mis mõnikord kirjutatakse kui O (n * m). Niisiis, kui peaksime toore jõu abil otsima "m" tähemärgist koosnevat "n" tähemärki, võtaks see meil n * m katset.

Lisateave algoritmide kohta

Arvutiteaduses on algoritm lihtsalt samm-sammuline protseduur antud probleemi lahendamiseks. Algoritme saab kavandada arvutuste tegemiseks, andmete töötlemiseks või automatiseeritud arutlusülesannete täitmiseks.

Vikipeedia määratleb need järgmiselt:

Algoritm on tõhus meetod, mida saab funktsiooni arvutamiseks väljendada piiratud ruumi ja aja piires ning täpselt määratletud ametlikus keeles. Alustades algolekust ja esialgsest sisendist (võib-olla tühjana), kirjeldavad juhised arvutust, mis täidetuna kulgeb läbi piiratud arvu täpselt määratletud järjestikuste olekute, tekitades lõpuks väljundi ja lõppedes lõppseisundis. Üleminek ühest olekust teise pole tingimata deterministlik; mõned algoritmid, mida nimetatakse randomiseeritud algoritmideks, sisaldavad juhuslikku sisendit.

Algoritm peab järgima teatavaid nõudeid:

  1. Määratlus: protsessi iga etapp on täpselt määratletud.
  2. Tõhus arvutatavus: protsessi iga etapi saab läbi viia arvuti abil.
  3. Lõplikkus: Programm lõpeb lõpuks edukalt.

Mõned levinumad algoritmide tüübid on:

  • sortimisalgoritmid
  • otsingu algoritmid
  • tihendusalgoritmid.

Algoritmide klassid hõlmavad järgmist

  • Graafik
  • Dünaamiline programmeerimine
  • Sorteerimine
  • Otsimine
  • Keelpillid
  • Matemaatika
  • Arvutusgeomeetria
  • Optimeerimine
  • Mitmesugust.

Ehkki tehniliselt ei kuulu see algoritmide klassi, on andmestruktuurid nendega sageli rühmitatud.

Tõhusus

Algoritme hinnatakse kõige sagedamini nende tõhususe ja ülesande täitmiseks vajalike arvutusressursside hulga järgi.

Levinud viis algoritmi hindamiseks on vaadata selle aja keerukust. See näitab, kuidas algoritmi tööaeg sisendi suuruse kasvades kasvab. Kuna algoritmid peavad tänapäeval töötama suurte andmesisenditega, on hädavajalik, et meie algoritmidel oleks mõistlikult kiire tööaeg.

Algoritmide sorteerimine

Sorteerimisalgoritme on erinevates maitsetes, sõltuvalt teie vajadusest. Mõned väga levinud ja laialt kasutatavad on:

Kiire sort

Pole sorteerimisarutelu, mille saaks lõpetada ilma kiire sortimiseta. Siin on põhimõte: Kiire sortimine

Mergesort

Massiivide sorteerimise kontseptsioonil põhinev sorteerimisalgoritm liidetakse, et saada üks sorteeritud massiiv. Lisateavet selle kohta leiate siit: Mergesort

freeCodeCampi õppekava rõhutab suuresti algoritmide loomist. Seda seetõttu, et algoritmide õppimine on hea viis programmeerimisoskuste harjutamiseks. Intervjueerijad testivad algoritmides kandidaate kõige sagedamini arendaja tööintervjuude ajal.

Raamatud algoritmidest JavaScripti abil:

Andmestruktuurid JavaScriptis

  • Tasuta raamat, mis hõlmab JavaScripti andmestruktuure
  • GitBook

JavaScripti andmestruktuuride ja algoritmide õppimine - teine ​​väljaanne

  • Hõlmab objektorienteeritud programmeerimist, prototüüpset pärimist, sortimis- ja otsimisalgoritme, kiirsorti, mergelsorte, binaarotsingu puid ja täiustatud algoritmikontseptsioone
  • Amazon
  • ISBN-13: 978-1785285493

Andmestruktuurid ja algoritmid JavaScripti abil: klassikaliste arvutuslike lähenemiste toomine veebi

  • Hõlmab rekursiooni, sortimise ja otsimise algoritme, lingitud loendeid ja binaarseid otsingupuid.
  • Amazon
  • ISBN-13: 978-1449364939