Algoritmien teoria on matematiikan haara , joka tutkii algoritmien yleisiä ominaisuuksia ja malleja sekä erilaisia muodollisia malleja niiden esittämiseksi. Algoritmien teorian tehtäviin kuuluu muodollinen todiste ongelmien algoritmisesta ratkaisemattomuudesta , algoritmien monimutkaisuuden asymptoottinen analyysi , algoritmien luokittelu monimutkaisuusluokkien mukaan , kriteerien kehittäminen algoritmien laadun vertailevaa arviointia varten jne. Yhdessä matemaattisen logiikan kanssa algoritmien teoria muodostaa laskennallisten tieteiden [1] [2] , tiedonsiirron teorian, informatiikan , tietoliikennejärjestelmien ja muiden tieteen ja teknologian alojen teoreettisen perustan.
Algoritmien teorian kehitys alkaa Kurt Gödelin todistuksella epätäydellisyyden teoreemoista aritmetiikkaa sisältäville muodollisille järjestelmille, joista ensimmäinen todistettiin vuonna 1931 . Näiden teoreemojen yhteydessä noussut oletus monien matemaattisten ongelmien (erityisesti johdettavuuden ongelma predikaattilaskennassa ) mahdottomuudesta ratkaista algoritmisesti, aiheutti tarpeen standardoida algoritmin käsite. Ensimmäiset standardoidut versiot tästä konseptista kehittivät 1930 - luvulla Alan Turing , Emil Post ja Alonzo Church . Heidän ehdottamansa Turingin kone , Postikone ja lambda-laskenta osoittautuivat toisiaan vastaaviksi. Stephen Kleene esitteli Gödelin työhön perustuen rekursiivisen funktion käsitteen , joka myös osoittautui vastaavaksi yllä olevaa.
Yksi algoritmin menestyneimmistä standardoiduista muunnelmista on Andrey Markovin esittelemä normaalialgoritmin käsite . Se kehitettiin kymmenen vuotta Turingin, Postin, Churchin ja Kleenen työn jälkeen useiden algebrallisten ongelmien algoritmisen ratkaisemattomuuden todistamisen yhteydessä.
Myöhempinä vuosina Donald Knuth , Alfred Aho ja Jeffrey Ullman antoivat merkittävän panoksen algoritmiteoriaan .
Alan Turing arveli (tunnetaan nimellä " Church-Turingin teesi "), että mikä tahansa algoritmi - sanan intuitiivisessa merkityksessä - voidaan esittää vastaavalla Turingin koneella . Sellaisen koneen käsitteen (ja muiden sitä vastaavien käsitteiden) pohjalta laskettavuuden käsitteen jalostaminen avasi mahdollisuuden todistaa tarkasti erilaisten massaongelmien (yhtenäisen menetelmän löytämisen ongelmat tietyn luokan ongelman ratkaisemiseksi) algoritminen ratkaisemattomuus . , jonka ehdot voivat vaihdella tietyissä rajoissa).
Yksinkertaisin esimerkki algoritmisesti ratkaisemattomasta massaongelmasta on algoritmin sovellettavuusongelma, pysäytysongelma , joka on seuraava: vaaditaan yleinen menetelmä, joka mahdollistaisi mielivaltaisen Turingin koneen (sen ohjelman antaman) ja tämän koneen nauhan mielivaltainen alkutila sen määrittämiseksi, päättyykö työ äärelliseen määrään vaiheita vai jatkuuko se loputtomiin?
Algoritmien teorian historian ensimmäisen vuosikymmenen aikana ratkaisemattomia massaongelmia löydettiin vain itsessään (mukaan lukien edellä kuvattu "soveltuvuusongelma") ja matemaattisesta logiikasta ("pääteltävissä oleva ongelma" klassisessa predikaattilaskennassa ). Siksi uskottiin, että algoritmien teoria on matematiikan "tienvarsi", jolla ei ole väliä sellaisille klassisille osille kuin " algebra " tai " analyysi ". Tilanne muuttui sen jälkeen, kun Andrei Markov ja Emil Post vuonna 1947 vahvistivat algebran hyvin tunnetun tasa-arvoongelman algoritmisen ratkaisemattomuuden äärellisesti generoiduille ja äärellisesti määritellyille puoliryhmille ( Thuen ongelma ). Myöhemmin määritettiin monien muiden "puhtaasti matemaattisten" massaongelmien algoritminen ratkaisemattomuus, tunnetuin tulos tällä alueella on Hilbertin kymmenennen ongelman algoritminen ratkaisemattomuus , jonka Juri Matiyasevitš todisti .
Algoritmien teoria kehittyy pääasiassa kolmeen suuntaan:
Analyysin tarkoituksena on löytää optimaalinen algoritmi. Kriteerinä on työläisyys (algoritmin vaatimien perusoperaatioiden määrä). Työpanoksen funktio on työpanoksen suhde panostietoihin.
Syötetietojen ominaisuudet voivat vaikuttaa monimutkaisuuteen eri tavalla:
Yksi algoritmien kustannusanalyysin yksinkertaistetuista tyypeistä on asymptoottinen, ja siinä on suuri määrä syöttödataa. Käytetty työvoimaintensiteetin funktion estimaatti on algoritmin "monimutkaisuus" , jonka avulla voidaan määrittää työvoimaintensiteetin ja datamäärän välinen suhde. Algoritmien asymptoottisessa analyysissä käytetään matemaattisessa asymptoottisessa analyysissä käytettyä merkintää. Tärkeimmät vaikeusluokitukset on lueteltu alla.
Algoritmin monimutkaisuusfunktion pääarvio (jossa n on datan määrä, "syötteen pituus") on :
jos g > 0, n > 0, on positiivisia c 1 , c 2 , n 0 siten, että:
osoitteessa ; toisin sanoen, löytyy sellainen ja , joka riittävän suurelle sijoitetaan väliin :
ja .Tässä tapauksessa he myös sanovat, että funktio on asymptoottisesti tarkka estimaatti funktiosta , koska määritelmän mukaan funktio ei eroa funktiosta aina vakiotekijään asti (katso asymptoottinen yhtäläisyys ). Esimerkiksi "heapsort"-lajittelumenetelmässä työpanos on:
, eli .Alkaen seuraa .
ei ole funktio, vaan joukko funktioita, jotka kuvaavat kasvua vakiotekijään asti. antaa sekä ylä- että alarajat funktion kasvulle. Näitä arvioita on usein syytä harkita erikseen. Arvio on ylempi asymptoottinen estimaatti algoritmin monimutkaisuudesta. Sanomme, että jos:
.Toisin sanoen merkintä tarkoittaa, että se kuuluu funktioiden luokkaan, joka ei kasva nopeammin kuin funktio vakiotekijään asti.
Arviointi määrittää funktion kasvulle alemman asymptoottisen arvion ja määrittelee funktioiden luokan, joka ei kasva hitaammin kuin vakiotekijään asti. , jos:
.Esimerkiksi merkintä tarkoittaa funktioiden luokkaa, joka ei kasva hitaammin kuin ; tähän luokkaan kuuluvat kaikki polynomit, joiden aste on suurempi kuin yksi, sekä kaikki potenssifunktiot, joiden kantakanta on suurempi kuin yksi.
Tasa -arvo pätee jos ja vain jos ja .
Algoritmien asymptoottisella analyysillä ei ole vain käytännön, vaan myös teoreettista merkitystä. Esimerkiksi on todistettu, että kaikki elementtien parittaiseen vertailuun perustuvat lajittelualgoritmit lajittelevat n elementtiä ajassa vähintään .
Tärkeä rooli algoritmien asymptoottisen analyysin kehittämisessä oli Alfred Aholla , Jeffrey Ullmanilla , John Hopcroftilla .
Klassisen teorian puitteissa ongelmat luokitellaan niiden monimutkaisuuden mukaan ( P-kova , NP-kova , eksponentiaalisesti kova ja muut):
Luokka "P" sisältyy "NP":hen. Klassinen esimerkki NP-ongelmasta on " Travelling Salesman Problem ".
Koska "P" sisältyy "NP", ongelman kuuluminen luokkaan "NP" kuvastaa usein nykyistä ymmärrystämme tämän ongelman ratkaisemisesta, eikä se ole lopullista. Yleisessä tapauksessa ei ole mitään syytä uskoa, että P-ratkaisua ei löydettäisi yhteen tai toiseen NP-ongelmaan. Kysymystä luokkien "P" ja "NP" mahdollisesta vastaavuudesta (mahdollisuudesta löytää P-ratkaisu mille tahansa NP-ongelmalle) pidetään yhtenä pääasiallisista algoritmien monimutkaisuuden nykyteoriassa; vastausta ei ole löytynyt toistaiseksi. Sen muotoilu on mahdollista NP-täydellisten ongelmien käsitteen käyttöönoton ansiosta ; kaikki NP-ongelmat voidaan pelkistää niihin — ja jos P-ratkaisu löydetään NP-täydelliselle ongelmalle, niin P-ratkaisu löytyy kaikille NP-ongelmille. Esimerkki NP-täydestä ongelmasta on " Konjunktiivimuotoongelma ".
Algoritmien monimutkaisuuden tutkimukset ovat mahdollistaneet monien klassisten matemaattisten ongelmien ratkaisun tarkastelun uudella tavalla ja joidenkin niiden sarjojen (polynomien ja matriisien kertominen, lineaaristen yhtälöjärjestelmien ratkaiseminen ja muut) löytämisen vähemmän vaativia ratkaisuja. resursseja kuin perinteiset.
Joitakin algoritmien teorian sovelluksia:
![]() |
---|
Matematiikan alat | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Portaali "Tiede" | ||||||||||
Matematiikan perusteet joukko teoria matemaattinen logiikka logiikan algebra | ||||||||||
Lukuteoria ( aritmetiikka ) | ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
| ||||||||||
|