logo

Algoritmien opetusohjelma

Algoritmi on vaiheittainen menettely ongelman ratkaisemiseksi tai tehtävän suorittamiseksi. Tietorakenteiden ja algoritmien yhteydessä se on joukko hyvin määriteltyjä ohjeita tietyn laskentatehtävän suorittamiseksi. Algoritmit ovat tietojenkäsittelytieteen perusta, ja niillä on erittäin tärkeä rooli tehokkaiden ratkaisujen suunnittelussa erilaisiin ongelmiin. Algoritmien ymmärtäminen on välttämätöntä kaikille tietorakenteiden ja algoritmien hallitsemisesta kiinnostuneille.

Mikä on Algoritmi?



Sisällysluettelo

suodatus python

Mikä on algoritmi?

An algoritmi on äärellinen sarja hyvin määriteltyjä käskyjä, joita voidaan käyttää laskennallisen ongelman ratkaisemiseen. Se tarjoaa vaiheittaisen menettelyn, joka muuntaa tulon halutuksi lähdöksi.

Miten algoritmit toimivat?

Algoritmit noudattavat yleensä loogista rakennetta:



  • Syöte: Algoritmi vastaanottaa syötetiedot.
  • Käsittely: Algoritmi suorittaa sarjan operaatioita syöttötiedoille.
  • Lähtö: Algoritmi tuottaa halutun tulosteen.

Algoritmin ominaisuudet:

  • Selkeä ja yksiselitteinen: Algoritmin tulee olla yksiselitteinen. Jokaisen sen vaiheen tulee olla selkeä kaikilta osin ja johtaa vain yhteen tarkoitukseen.
  • Hyvin määritellyt tulot: Jos algoritmi käskee ottaa syötteitä, sen tulee olla hyvin määriteltyjä syötteitä. Se voi ottaa syötteitä tai ei.
  • Hyvin määritellyt lähdöt: Algoritmin on määriteltävä selkeästi, mitä tuotos saadaan, ja sen tulee myös olla hyvin määritelty. Sen pitäisi tuottaa vähintään 1 tulos.
  • Rajallisuus: Algoritmin on oltava äärellinen, eli sen tulee päättyä äärellisen ajan kuluttua.
  • Mahdollinen: Algoritmin on oltava yksinkertainen, yleinen ja käytännöllinen, jotta se voidaan suorittaa kohtuullisilla rajoituksilla ja resursseilla.
  • Kielestä riippumaton: Algoritmin on oltava kielestä riippumaton, eli sen on oltava pelkkiä ohjeita, jotka voidaan toteuttaa millä tahansa kielellä, ja silti tulos on odotetusti sama.

Mikä on algoritmien tarve?

Algoritmit ovat välttämättömiä monimutkaisten laskentaongelmien ratkaisemiseksi tehokkaasti ja tehokkaasti. Ne tarjoavat systemaattisen lähestymistavan:

obj javassa
  • Ongelmien ratkaiseminen: Algoritmit jakavat ongelmat pienempiin, hallittavissa oleviin vaiheisiin.
  • Optimointiratkaisut: Algoritmit löytävät parhaat tai lähes optimaaliset ratkaisut ongelmiin.
  • Tehtävien automatisointi: Algoritmit voivat automatisoida toistuvia tai monimutkaisia ​​tehtäviä, mikä säästää aikaa ja vaivaa.

Esimerkkejä algoritmeista

Alla on esimerkkejä algoritmeista:

  • Lajittelualgoritmit: Yhdistä lajittelu, pikalajittelu, keon lajittelu
  • Hakualgoritmit: Lineaarinen haku, binäärihaku, hajautus
  • Graafialgoritmit: Dijkstran algoritmi, Primin algoritmi, Floyd-Warshall-algoritmi
  • Merkkijonojen sovitusalgoritmit: Knuth-Morris-Pratt-algoritmi, Boyer-Moore-algoritmi

Kuinka kirjoittaa algoritmi?

Voit kirjoittaa algoritmin seuraavasti:



voiko abstraktilla luokalla olla konstruktori
  • Määrittele ongelma: Ilmoita selkeästi ratkaistava ongelma.
  • Suunnittele algoritmi: Valitse sopiva algoritmisuunnitteluparadigma ja kehitä vaiheittainen menettely.
  • Toteuta algoritmi: Käännä algoritmi ohjelmointikielelle.
  • Testaa ja korjaa: Suorita algoritmi eri syötteillä varmistaaksesi sen oikeellisuuden ja tehokkuuden.
  • Analysoi algoritmi: Määritä sen aika- ja tilamonimutkaisuus ja vertaa sitä vaihtoehtoisiin algoritmeihin.

Opi algoritmien perusteet

Algoritmien analyysi

  • Asymptoottinen analyysi
  • Huonoin, keskimääräinen ja paras tapaus
  • Asymptoottiset merkinnät
  • Ala- ja ylärajan teoria
  • Johdatus jaksotettuun analyysiin
  • Mitä 'tilan monimutkaisuus' tarkoittaa?
  • Polynomiajan approksimaatiokaavio
  • Kirjanpitomenetelmä | Poistettu analyysi
  • Potentiaalinen menetelmä jaksotettuun analyysiin

Algoritmien tyypit

Algoritmit voivat olla erilaisia ​​sen mukaan, mitä ne tekevät ja miten ne on tehty. Joitakin yleisiä tyyppejä ovat:

1. Haku- ja lajittelualgoritmit

  • Johdatus hakualgoritmiin
  • Johdatus lajittelualgoritmiin
  • Vakaat ja epävakaat lajittelualgoritmit
  • Vertailupohjaisten lajittelualgoritmien alaraja
  • Voiko vertailupohjaisen lajittelualgoritmin ajonaikaisen monimutkaisuuden olla pienempi kuin N logN?
  • Mikä lajittelualgoritmi tekee minimimäärän muistikirjoituksia?

2. Ahneet algoritmit

3. Dynaamiset ohjelmointialgoritmit

  • Johdatus dynaamiseen ohjelmointiin
  • Päällekkäiset aliongelmat -ominaisuus
  • Optimaalinen alustan ominaisuus
  • Pisin kasvava jakso
  • Pisin yhteinen jakso
  • Pienin kustannuspolku
  • Kolikon vaihto
  • Matriisiketjun kertolasku
  • 0-1 Reppuongelma
  • Pisin palindrominen alajakso
  • Palindromin osiointi

4. Kuvionhakualgoritmit

  • Johdatus kuvionhakuun
  • Naiivi kuvion haku
  • KMP-algoritmi
  • Rabin-Karp -algoritmi
  • Kuviohaku kaikkien päätteiden triellä
  • Aho-Corasickin algoritmi kuvioiden etsimiseen
  • Z-algoritmi (lineaarisen aikakuvion etsintäalgoritmi)

5. Paluualgoritmi

  • Johdatus Backtrackingiin
  • Tulosta kaikki tietyn merkkijonon permutaatiot
  • Ritarin kiertueen ongelma
  • Rotta sokkelossa
  • N Queen -ongelma
  • Osajoukon summa
  • m Väritysongelma
  • Hamiltonin sykli
  • Sudoku

6. Jaa ja hallitse -algoritmi

7. Geometrinen algoritmi

  • Johdatus geometrisiin algoritmeihin
  • Lähin pistepari | O(nlogn) Toteutus
  • Kuinka tarkistaa, onko tietty piste polygonin sisällä vai ulkopuolella?
  • Kuinka tarkistaa, leikkaavatko kaksi annettua janaa?
  • Kun on annettu n janaa, selvitä, leikkaavatko mitkään kaksi janaa
  • Kuinka tarkistaa, muodostaako annettu neljä pistettä neliön
  • Kupera runko käyttämällä Jarvisin algoritmia tai käärettä

8. Matemaattiset algoritmit

  • Johdatus matemaattisiin algoritmeihin
  • Kirjoita tehokas menetelmä tarkistaaksesi, onko luku 3:n monikerta
  • Kirjoita ohjelma kahden luvun lisäämiseksi kantaan 14
  • Ohjelma Fibonacci-numeroille
  • Numerovirran keskiarvo
  • Kerro kaksi kokonaislukua ilman kerto-, jako- ja bittikohtaisia ​​operaattoreita ja ilman silmukoita
  • Babylonian menetelmä neliöjuurelle
  • Eratosthenesin seula
  • Pascalin kolmio
  • Anna numero, etsi seuraavaksi pienin palindromi
  • Ohjelma lisäämään kaksi polynomia
  • Kerro kaksi polynomia
  • Laske luvun lopussa olevat nollat ​​kertoimella

9. Bittikohtaiset algoritmit

  • Bitwise-algoritmien esittely
  • Pikku ja iso endian
  • Tunnista päinvastaiset merkit
  • Vaihda bittejä
  • Sammuta oikeanpuoleisin asetettu bitti
  • Pyöritä bittejä
  • Seuraavaksi suurempi numero samalla määrällä asetettuja bittejä
  • Vaihda kaksi nibbleä tavussa

10. Graafialgoritmit

12. Haara- ja sidotusalgoritmit

  • Haara ja sidottu | Sarja 1 (johdanto 0/1-repulla)
  • Haara ja sidottu | Sarja 2 (0/1 selkärepun toteutus)
  • Haara ja sidottu | Sarja 3 (8 pulmatehtävä)
  • Haara ja sidottu | Sarja 4 (työtehtäväongelma)
  • Haara ja sidottu | Sarja 5 (N Queen -ongelma)
  • Haara ja sidottu | Sarja 6 (matkustava myyjäongelma)

Tietokilpailut:

  • Algoritmien analyysi
  • Lajittelu
  • hajota ja hallitse
  • Ahneet algoritmit
  • Dynaaminen ohjelmointi
  • Perääntyminen
  • NP valmis
  • Etsitään
  • Rekursio
  • Bit-algoritmit