Teori om algoritmer

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 22 augusti 2021; verifiering kräver 1 redigering .

Algoritmteorin  är en gren av matematiken som studerar algoritmers allmänna egenskaper och mönster och olika formella modeller för deras representation. Uppgifterna för teorin om algoritmer inkluderar formellt bevis på den algoritmiska olösbarheten av problem, asymptotisk analys av komplexiteten hos algoritmer , klassificering av algoritmer i enlighet med komplexitetsklasser , utveckling av kriterier för en jämförande bedömning av algoritmernas kvalitet, etc. Tillsammans med matematisk logik utgör teorin om algoritmer den teoretiska grunden för beräkningsvetenskaper [1] [ 2] , teorin om informationsöverföring, informatik , telekommunikationssystem och andra områden inom vetenskap och teknik.

Historik

Utvecklingen av teorin om algoritmer börjar med Kurt Gödels bevis på ofullständighetsteorem för formella system som involverar aritmetik, varav den första bevisades 1931 . Antagandet som uppstod i samband med dessa satser om omöjligheten av algoritmisk lösning av många matematiska problem (särskilt problemet med deducerbarhet i predikatkalkyl ) orsakade behovet av att standardisera begreppet en algoritm. De första standardiserade versionerna av detta koncept utvecklades på 1930-talet av Alan Turing , Emil Post och Alonzo Church . Deras föreslagna Turing -maskin , Post-maskin och lambda-kalkyl visade sig vara likvärdiga med varandra. Baserat på Gödels arbete, introducerade Stephen Kleene begreppet en rekursiv funktion , som också visade sig vara likvärdig med ovanstående.

En av de mest framgångsrika standardiserade varianterna av algoritmen är konceptet med en normal algoritm som introducerats av Andrey Markov . Den utvecklades tio år efter Turing, Post, Church och Kleenes arbete i samband med beviset på den algoritmiska olösligheten för ett antal algebraiska problem.

Under senare år gjordes betydande bidrag till algoritmteorin av Donald Knuth , Alfred Aho och Jeffrey Ullman .

Beräkningsmodeller

The Church-Turing-avhandling och algoritmiskt olösliga problem

Alan Turing gissade (känd som " Church-Turing tesen ") att vilken algoritm som helst  - i ordets intuitiva bemärkelse - kan representeras av en motsvarande Turing-maskin . Förfining av begreppet beräkningsbarhet baserat på konceptet för en sådan maskin (och andra begrepp motsvarande den) öppnade möjligheten att noggrant bevisa den algoritmiska olösbarheten för olika massproblem (problem med att hitta en enhetlig metod för att lösa en viss klass av problem villkoren kan variera inom vissa gränser).

Det enklaste exemplet på ett algoritmiskt olösligt massproblem är problemet med tillämpligheten av algoritmen, stoppproblemet , som är följande: det krävs att man hittar en generell metod som skulle möjliggöra en godtycklig Turing-maskin (given av dess program) och ett godtyckligt initialtillstånd för bandet på denna maskin för att avgöra om arbetet kommer att avsluta maskinen i ett begränsat antal steg, eller kommer det att fortsätta på obestämd tid?

Under det första decenniet av teorin om algoritmer hittades olösbara massproblem endast i sig själv (inklusive "tillämpningsproblemet" som beskrivits ovan) och i matematisk logik ("problemet med deducerbarhet" i den klassiska predikatkalkylen ). Därför trodde man att teorin om algoritmer är en "vägkant" av matematik, vilket inte spelar någon roll för sådana klassiska avsnitt som " algebra " eller " analys ". Situationen förändrades efter att Andrei Markov och Emil Post 1947 fastställde den algoritmiska olösligheten hos det välkända jämlikhetsproblemet i algebra för ändligt genererade och ändligt definierade semigrupper ( Thues problem ). Därefter fastställdes den algoritmiska olösbarheten för många andra "rent matematiska" massproblem, det mest kända resultatet på detta område är den algoritmiska olösligheten för Hilberts tionde problem bevisat av Yuri Matiyasevich .

Vägbeskrivning

Algoritmteorin utvecklas huvudsakligen i tre riktningar:

Analys av komplexiteten hos algoritmer

Syftet med analysen är att hitta den optimala algoritmen. Kriteriet är mödosamt (antalet elementära operationer som krävs av algoritmen). Arbetsinsatsens funktion är förhållandet mellan arbetsinsats och indata.

Komplexiteten kan påverkas i olika utsträckning av egenskaperna hos indata:

En av de förenklade typerna av kostnadsanalys av algoritmer är asymptotisk, med en stor mängd indata. Uppskattningen av arbetsintensitetsfunktionen som används är algoritmens "komplexitet" , som gör det möjligt att bestämma förhållandet mellan arbetsintensitet och mängden data. I den asymptotiska analysen av algoritmer används notationen som används i matematisk asymptotisk analys. De viktigaste svårighetsgraderna listas nedan.

Huvuduppskattningen av algoritmens komplexitetsfunktion (där n  är mängden data, "längden på indata") är :

om för g > 0, för n > 0, finns det positiva c 1 , c 2 , n 0 så att:

vid ; med andra ord kan man hitta sådana och , som, för tillräckligt stora , kommer att vara inneslutna mellan:

och .

I det här fallet säger de också att funktionen är en asymptotiskt exakt uppskattning av funktionen , eftersom funktionen per definition inte skiljer sig från funktionen upp till en konstant faktor (se asymptotisk jämlikhet ). Till exempel, för sorteringsmetoden "heapsort" är arbetsinsatsen:

, det vill säga .

Från följer .

är inte en funktion, utan en uppsättning funktioner som beskriver tillväxt upp till en konstant faktor. ger både övre och nedre gränser för funktionens tillväxt. Det är ofta nödvändigt att överväga dessa uppskattningar separat. Uppskattningen är en övre asymptotisk uppskattning av algoritmens komplexitet. Vi säger att om:

.

Med andra ord betyder notationen att den tillhör den klass av funktioner som inte växer snabbare än funktionen upp till en konstant faktor.

Uppskattningen specificerar en lägre asymptotisk uppskattning för tillväxten av en funktion och definierar en klass av funktioner som inte växer långsammare än upp till en konstant faktor. , om:

.

Till exempel betecknar notationen en klass av funktioner som inte växer långsammare än ; denna klass inkluderar alla polynom med en grad större än en, såväl som alla potensfunktioner med en bas större än ett.

Jämlikhet gäller om och bara om och .

Den asymptotiska analysen av algoritmer har inte bara praktisk utan också teoretisk betydelse. Till exempel har det bevisats att alla sorteringsalgoritmer baserade på parvis jämförelse av element kommer att sortera n element i tiden inte mindre än .

En viktig roll i utvecklingen av den asymptotiska analysen av algoritmer spelades av Alfred Aho , Jeffrey Ullman , John Hopcroft .

Svårighetsklasser

Inom ramen för den klassiska teorin klassificeras problem efter deras komplexitet ( P-hårda , NP-hårda , exponentiellt hårda och andra):

Klassen "P" finns i "NP". Ett klassiskt exempel på ett NP-problem är " Traveling Salesman Problem ".

Eftersom "P" finns i "NP", återspeglar tillhörigheten av ett problem till klassen "NP" ofta vår nuvarande förståelse för hur man löser detta problem och är inte slutgiltig. I det allmänna fallet finns det ingen anledning att tro att en P-lösning inte kan hittas för ett eller annat NP-problem. Frågan om den möjliga ekvivalensen för klasserna "P" och "NP" (möjligheten att hitta en P-lösning för vilket NP-problem som helst) anses vara en av de viktigaste i den moderna teorin om komplexiteten hos algoritmer; inget svar har hittats hittills. Dess själva formulering är möjlig tack vare introduktionen av begreppet NP-kompletta problem ; alla NP-problem kan reduceras till dem — och om en P-lösning hittas för ett NP-komplett problem, så kommer en P-lösning att hittas för alla NP-problem. Ett exempel på ett NP-komplett problem är " Konjunktivformproblemet ".

Studier av komplexiteten hos algoritmer har gjort det möjligt att ta en ny titt på lösningen av många klassiska matematiska problem och för vissa av deras serier (multiplikation av polynom och matriser, lösa linjära ekvationssystem och andra) hitta lösningar som kräver mindre resurser än traditionella.

Matematiska tillämpningar av teorin om algoritmer

Några tillämpningar av teorin om algoritmer:

Anteckningar

  1. Semyonov A. L. , Uspensky V. A. Matematisk logik i beräkningsvetenskap och beräkningspraktik. // Bulletin of the Academy of Sciences of the USSR , nr 7, sid. 93 - 103
  2. Uspensky V. A. , Semyonov A. L. Lösbara och olösliga algoritmiska problem. // Kvant , 1985, nr 7, sid. 9 - 15
  3. V. A. Uspensky , A. L. Semenov Algorithms teori: huvudupptäckter och tillämpningar, M., Nauka , 1987, 288 sid.

Litteratur

Länkar