Algoritm. Dess typer och egenskaper. Vad är algoritmer och varför behövs de Vad är ett algoritmkoncept?


Att lösa ett problem med hjälp av en dator börjar med att skapa en algoritm. Vad är en algoritm?

Ursprunget till termen "algoritm" är förknippat med namnet på den store matematikern Muhammad al-Khwarizmi (763–850), som utvecklade reglerna för att utföra fyra aritmetiska operationer.

Enligt GOST 19781-74:

En algoritm är ett exakt recept som definierar en beräkningsprocess som leder från varierande initiala data till önskat resultat.

Det är algoritm – detta är en tydlig instruktion till algoritmens utförare att utföra en viss sekvens av åtgärder för att lösa uppgiften och få resultatet.

Att utveckla en algoritm innebär att dela upp ett problem i en specifik sekvens av steg. Algoritmutvecklaren måste känna till funktionerna och reglerna för att komponera algoritmer.

Huvuddragen i algoritmerna:

    Tillgänglighet inmatning källdata.

    Tillgänglighet produktion resultatet av att exekvera algoritmen, eftersom målet med att exekvera algoritmen är att erhålla ett resultat som har en mycket specifik relation till originaldata.

    Algoritmen måste ha diskret struktur , dvs. Algoritmen presenteras som en sekvens av steg, och exekveringen av varje nästa steg börjar efter att det föregående har slutförts.

    Entydighet – varje steg i algoritmen måste vara tydligt definierad och bör inte tillåta godtycklig tolkning av utföraren.

    Lem – exekveringen av algoritmen måste slutföras i ett begränsat antal steg.

    Rätthet – Algoritmen måste ange den korrekta lösningen på problemet.

    Mass karaktär (allmänhet) – en algoritm är utvecklad för att lösa en viss klass av problem som skiljer sig åt i initialdata.

    Effektivitet - Algoritmen måste köras inom en rimlig begränsad tid. I det här fallet väljs det enklaste och kortaste sättet att lösa problemet, givetvis med förbehåll för alla begränsningar och krav för algoritmen.

Sätt att skriva algoritmer

Den utvecklade algoritmen kan presenteras på flera sätt:

    på naturligt språk (verbal inspelning av algoritmen);

    i form av blockdiagram (grafisk form);

    på ett programmeringsspråk.

Verbal inspelning av algoritmen. Den verbala formen används vanligtvis för att beskriva designade algoritmer artist - person. Kommandona är skrivna på vanligt språk och utförs i ordning. Kommandon kan använda formler och speciella notationer, men varje kommando måste vara begripligt för utföraren. Den naturliga ordningen för kommandon kan störas (om till exempel en övergång till föregående kommando krävs eller om det är nödvändigt att kringgå nästa kommando under vissa förutsättningar), i det här fallet kan kommandona numreras och kommandot som du vill åka anges. Till exempel, gå till steg 3 eller upprepa från steg 4.

Grafisk form. Algoritmer presenteras i form av blockdiagram. Det finns särskilda standarder för att konstruera blockdiagram, där grafiska bilder av block definieras. Algoritmkommandon skrivs inuti block på vanligt språk eller med matematiska formler. Block är anslutna enligt vissa regler med kommunikationslinjer som visar i vilken ordning kommandon exekveras.

På ett programmeringsspråk. Om en algoritm utvecklas för att lösa ett problem på en dator, så för att det ska kunna exekveras artist - dator, måste den spelas in på ett språk som den här artisten förstår. För detta ändamål har många programmeringsspråk utvecklats för att lösa problem i olika klasser. Att skriva en algoritm i ett programmeringsspråk kallas program.

a l g o r i f m) är ett av grundbegreppen inom logik och matematik. Med A. menar vi en exakt instruktion som anger beräkningen. en process som leder från initiala data, som kan variera, till önskat resultat. Orden "datorer" och "beräkningar" som förekommer ovan bör inte förstås i den snäva betydelsen av digital datoranvändning. Redan i skolalgebrakursen talar man alltså om bokstavsberäkningar, och även om bokstäver här också spelar rollen som substitut för siffror, redan i aritmetiken. I beräkningar dyker det upp symboler som inte anger några storheter: parenteser, likhetstecken, räknecken. handlingar. Vi kan gå längre och överväga beräkningar med godtyckliga symboler och deras kombinationer; Det är i denna breda mening som termen "beräkning" förstås när man beskriver begreppet "A". Så vi kan prata om A. översättning från ett språk till ett annat, om A. arbetet hos en tågklarerare (bearbetar information om tågens förflyttning till order) och andra exempel på algoritmer. beskrivningar av styrprocesser studerade av cybernetik. BETYDELSE AV A. Själva ordet "A". går tillbaka till 900-talet. (det kommer från Algoritmi, som i sin tur är en latinsk translitteration, tydligen gjord på 1100-talet, av det arabiska namnet på den khorezmiske matematikern al-Khwarizmi). Numera dyker den enklaste A. upp redan i grundskolan - det här är A. aritmetik. handlingar (i mitten av århundradet var Europa A. precis vad modern skolaritmetik kallades, d.v.s. det decimala positionstalssystemet och konsten att räkna i det, eftersom al-Khwarizmis avhandling var en av de första, om inte den allra första, tack Dessutom blev Europa bekant med positionssystemet). Låt oss understryka att i grundskolan är det A. räkenskaper som lärs ut. När man talar om en persons förmåga att addera siffror, menas inte att han för vilka två tal som helst förr eller senare kommer att kunna hitta summan, utan att han känner till en viss enhetlig additionsmetod som är tillämplig på vilka två specifika siffror som helst. , d.v.s., med andra ord A. addition (ett exempel på sådan A. är den välkända A. additionen av siffror i en ”kolumn”). A. finns inom vetenskapen vid varje steg, förmågan att lösa ett problem "i allmän form" innebär alltid i huvudsak behärskning av ett visst A. Begreppet problem "i allmän form" förtydligas med hjälp av begreppet massproblem. Termen "problem" kan förstås som uppgiften att hitta ett föremål som har vissa egenskaper; detta objekt kallas lösning på ett problem (särskilt för problemet med att hitta ett svar på en fråga är lösningen svaret "ja" eller "nej" på den ställda frågan). Ett problem är olösligt om det inte har någon lösning, d.v.s. det finns inget objekt som har de egenskaper som krävs. Det är därför uppenbart att problemets olösbarhet inte ger anledning till agnosticism. Slutsatser; tvärtom, att fastställa olösbarheten av ett specifikt problem är en viktig kognition. Spela teater. Ett massproblem definieras av en serie separata, "enkla" problem och består av kravet att hitta en generell metod (dvs. A.) för att lösa dem. Olösbarheten av ett massproblem innebär omöjligheten att hitta korrespondenser. S. Massproblem är extremt karakteristiska och viktiga för logik och matematik. Även lösningen av enskilda problem är ofta värdefull just för att den samtidigt ger en generell metod för att lösa en hel klass av problem; samtidigt innebär formuleringen av ett massproblem omvandlingen av en viss klass av problem till ett enda problem - problemet att hitta ett svar för att lösa alla problem i denna klass; här manifesteras sambandet mellan sådana kategorier av dialektik som det individuella, det särskilda och det universella. Massproblemens roll bestämmer innebörden av A. Att fastställa olösbarheten för ett visst massproblem (d.v.s. frånvaron av en enda algoritm som gör att man kan hitta lösningar på alla individuella problem i en given serie) är den viktigaste kognitiva handlingen, visar att För att lösa specifika individuella problem behövs i grunden metoder specifika för varje sådant problem. Förekomsten av olösliga massaproblem tjänar därför som en konkret gestaltning av kognitionsprocessens outtömlighet. Innehålla. de fenomen som låg till grund för bildandet av begreppet "A." har länge intagit en viktig plats inom vetenskapen. Många problem som uppstod inom matematik och logik bestod i sökandet efter vissa konstruktiva metoder. Sökandet efter sådana metoder intensifierades särskilt i samband med skapandet av bekväma matematiska och logiskt symbolism, såväl som att förstå den grundläggande frånvaron av dessa metoder i ett antal fall - allt detta var en kraftfull faktor i vetenskapens utveckling. kunskap. Insikten om omöjligheten att lösa något problem genom direkt beräkning ledde till skapandet på 1800-talet. set-teoretisk. begrepp. Först efter en period av snabb utveckling av detta koncept (inom ramen för vilken frågan om konstruktiva metoder i deras moderna förståelse inte alls uppstår) blev det under de senaste decennierna möjligt att återvända till frågor om konstruktivitet, men på en ny nivå , berikad av det kristalliserade konceptet "A." (en annan illustration av Lenins ståndpunkt om kunskapsutvecklingens spiralformade natur). Och även om konceptet "A." är inte en så långtgående abstraktion som till exempel begreppet "uppsättning", kan det inte anses vara tillfälligt att historiskt sett uppstod det första av dessa begrepp senare än det andra. EXEMPEL A. I likhet med begreppen "uppsättning", "korrespondens", "naturligt tal", "släktskap" etc., är begreppet "A". är den primära logisk-matematiska koncept (en av kategorierna logik och matematik). Den tillåter inte formell definition genom enklare begrepp, utan (liksom andra matematiska kategorier) abstraheras direkt från erfarenhet. Koncept "A." kan bara läras genom exempel. Exempel 1. Möjliga initiala data är ändliga icke-tomma kombinationer uppbyggda av pinnar (I), d.v.s. objekt I, II, III osv. A. består av följande. regler (som måste följas från och med regel 1°): 1°. Stryk under pinnen längst till vänster nedan och fortsätt till 2°-regeln. 2°. Placera pinnen längst till höger ovanpå och fortsätt till 3°-regeln. 3°. Undersök den understrukna pinnen och, om den inte är understruken, fortsätt till 4°-regeln. 4°. Betrakta pinnen omedelbart efter den understrukna; om det inte är understruket, fortsätt till 5°-regeln; om det är understruket, fortsätt till implementeringen av 7°-regeln. 5°. Flytta den nedersta raden från den understrukna pinnen till nästa omedelbart efter den och fortsätt till 6°-regeln. 6°. Flytta den översta linjen från den korsade pinnen till den omedelbart före den och fortsätt till implementeringen av 7°-regeln. 7°. Radera den korsade stickan och alla pinnar som följer efter den och fortsätt till 8°-regeln. 8°. Radera den nedre raden på den understrukna pinnen; vad som hände är resultatet. Genom att tillämpa detta A. på kombinationen ||||, taget som initialdata, får vi sekventiellt: med regel 1° – |||, med regel 2° – ? || , enligt reglerna 3°, 4°, 5° – | ? | , enligt reglerna 6°, 3°, 4° – | ? | enligt 7°-regeln – | ?, enligt 8°-regeln – || (resultat). Om vi ​​försöker tillämpa A. på kombinationen ||| får vi: enligt 1°-regeln – ? ||, enligt 2°-regeln – ? | , enligt reglerna 3°, 4°, 5° – | ? , enligt 6°-regeln – | I |, då måste du gå vidare till implementeringen av 3°-regeln, men 3°-regeln är genomförbar endast under förutsättning att den understrukna stickan inte är understruken. A. innehåller således för nuläget inte anvisningar om hur man ska gå tillväga; den så kallade ineffektivt stopp (ett stopp som inte åtföljs av ett resultat). Det är lätt att märka att det i allmänhet var formulerat. A. ger resultatet när det tillämpas på valfri kombination av ett jämnt antal stickor, och resultatet i detta fall är en kombination bestående av hälften av antalet stickor; A. ger inget resultat när den appliceras på någon kombination som består av ett udda antal stickor. Exempel 2. Inom logik och matematik kallas vilken ändlig uppsättning tecken som helst. "alfabet", de tecken som ingår i det är "bokstäver" i alfabetet, och den sista (inklusive tomma) bokstäverföljden skrivna efter varandra k.-l. alfabetet kallas "ord" i detta alfabet. Arabiska siffror bildar till exempel ett alfabet, och varje decimalrepresentation av ett heltal är ett ord i detta alfabet. Tänk på alfabetet (a, b) av två bokstäver: a och b. Exempel på ord i detta alfabet är: v, aw, vva aaavavv, etc. Låt oss komma överens om att kalla övergången från ett ord i detta alfabet till ett annat ord i samma alfabet "tillåtet" enligt något av följande. två regler: 1) om ordet har formen aP, där P är ett godtyckligt ord, gå till ordet Pb; 2) om ordet ser ut som va?, var? – vilket ord som helst, gå till ordet Rava. Därefter formuleras ett spår, en instruktion: ”utgående från ett k.-l. ord (tagna som initialdata), gör tillåtna övergångar tills du får ett ord av formen aa?; när ett ord av denna typ erhålls , släng de två första bokstäverna, och vad som återstår är resultatet." Eftersom högst en övergångsregel är genomförbar varje gång, formulerar vi receptet bildar ett alfabet, vars möjliga initiala data är ord i alfabetet (a, b). Låt oss ta ordet vavaa som initialdata. Enligt regel 2 får vi waaava. Om vi ​​tillämpar regel 2 igen får vi aavaava. I kraft av våra instruktioner måste vi sluta; resultatet (av att applicera A. på ordet vavaa) är vavaa. Låt oss ta ordet vaava som initial data. Enligt regel 2 får vi avaava. Genom regel 1 får vi vaavav. Därefter får vi sekventiellt avavava, vavavav, vavavava, etc. Det kan bevisas att processen aldrig kommer att ta slut (dvs ett ord som börjar med två bokstäver a kommer aldrig att visas, och för vart och ett av de resulterande orden kommer det att vara möjligt att göra en giltig övergång). Sålunda ger A. inte något resultat när det appliceras på ordet vaava. Låt oss ta ordet vaav som initial data. Vi får vaavv, avvav, vvavav i följd. Vidare är ingen av reglerna 1 och 2 genomförbara, och samtidigt fungerade inte resultatet. Därför, när det appliceras på ordet awaav, ger A. inte heller resultat. Huvuddragen hos A. Enligt A. A. Markov kännetecknas A. av följande huvuddrag. funktioner: a) definiteness av algoritm. recept, som består i dess noggrannhet och allmänna förståelighet som inte lämnar något utrymme för godtycke (på grund av denna förskrivningssäkerhet är den algoritmiska processen deterministisk: varje steg i processen bestämmer unikt nästa steg); b) massan, som består av möjligheten för varje A. utgå från initiala data som varierar inom vissa gränser; c) effektivitet, som består i dess fokus på att uppnå önskat resultat. Determinismen hos A. säkerställer möjligheten att kommunicera av en person till en annan person så att denna andra person kommer att kunna utföra A. utan deltagande av den första; Samma egenskap hos determinism gör det möjligt att överföra utförandet av A. till en maskin. Analysens massakaraktär förutsätter att det finns en viss uppsättning (för varje analys sin egen) av möjliga initiala data. Hur denna helhet är satt är en annan fråga. Vi kan anta att uppsättningen av möjliga initiala data som motsvarar vilken A. som helst inte specificeras separat från A., utan indikeras med naturlig. bild av själva innehållet i denna A. (till exempel för A. tillägg med en kolumn består motsvarande uppsättning av alla par av poster med tal i decimalsystemet). När ett specifikt objekt väljs som initialdata för A., ​​då talar vi om att tillämpa A. på detta objekt. Om A. ger ett resultat när det appliceras på ett visst objekt, så säger de att det tillämpas på detta objekt. Effektiviteten av A. betyder inte alls att A. måste vara tillämpbar på vilket objekt som helst från motsvarande uppsättning möjliga initiala data (se exempel 1 och 2). Det är lämpligt att notera här att det är möjligt att konstruera en sådan algoritm för vilken det inte finns något A. som skulle känna igen från godtyckliga initiala data för det första A. om det första A. är tillämpbart på dem eller inte. Grundläggande abstraktioner av teorin om A. In scientific. I praktiken har ett antal specifika funktioner utvecklats. för matematik och logiska abstraktioner. Dessa är, för det första, abstraktionen av den faktiska oändligheten, abstraktionen av identifiering, abstraktionen av potentiell realiserbarhet. Sov. vetenskapsmannen A. A. Markov visade att de två sista är nödvändiga när man överväger A. Algorithm. processen är indelad i avdelningar. steg, som vart och ett antas vara så elementärt att dess möjlighet är saklig. genomförandet är utom tvivel. Samtidigt kan antalet av dessa elementära steg som krävs för att erhålla ett resultat vara så stort att att uppnå resultatet kan anses praktiskt taget omöjligt. Men idén om praktiska genomförbarheten eller ogenomförbarheten av ett visst antal steg är relativ. Det förändras med utvecklingen av datoranvändning. medel (i princip kan idén om den elementära karaktären hos ett visst steg också förändras). I teorin om A. abstraherar de därför från "praktisk genomförbarhet" och anser vilket ändligt antal steg som helst som möjligt. Så när man studerar A. tillåta abstraktion av potentiell genomförbarhet, som består i abstraktion från de verkliga gränserna för våra förmågor. Utvecklingen av höghastighets elektronisk datoranvändning. maskiner tänjer snabbt på dessa gränser längre och längre. Det som först var potentiellt genomförbart igår blir praktiskt genomförbart idag. Detta för aritmetikteorin närmare beräkningspraktiken. maskiner och tillåter dessa två discipliner att ömsesidigt berika varandra. Överföra uppgifter till maskinen till s/l. serie är omöjlig utan preliminär. upprättande av A. beslut. Sammanställningen av en sådan A. är som regel av grundläggande betydelse (till exempel i problemet med maskinöversättning är det viktigaste sammanställningen av en A.-översättning). Abstraktion av potentiell genomförbarhet är nödvändig när man inte bara överväger algoritmiska sådana. processer, men även objekten själva som deltar i dessa processer (inklusive "initialdata" och "resultat"). Så, för att tala om vilket naturligt tal som helst (mer exakt, om att skriva detta tal, säg i decimalsystemet), måste vi tillåta oss att betrakta posterna med tal som är så stora att dessa poster inte skulle passa på jordklotet; alltså, och här, abstrahera från det fysiska. genomförbarheten av en sådan post, använd abstraktionen av potentiell genomförbarhet. I allmänhet är det nödvändigt att ta till abstraktionen av potentiell genomförbarhet för att resonera om godtyckligt långa ord i ett givet alfabet. Objekt, vars konstruktion och övervägande är möjliga inom ramen för abstraktionen av potentiell genomförbarhet (i motsats till abstraktionen av faktisk oändlighet), kallas. konstruktiva föremål. Dessa är de naturliga talen som representeras av deras inmatningar i k.-l. deras notationssystem, ord i ett givet alfabet, etc., samt par, trillingar och allmänt ändliga sekvenser uppbyggda av register över siffror, ord i alfabetet, etc.; rationella tal (som kan representeras som tripletter av naturliga tal) etc. Så kallade uttryck är också konstruktiva objekt. kalkyl, eller formella system, som gör det möjligt att applicera apparaten från teorin om A på den senare. Vilken A. (uppfattad som ett recept) kan (efter att ha skrivit detta recept i form av en kombination av några symboler) betraktas som som ett konstruktivt objekt. Tvärtom, objekt, vars beaktande är omöjligt utan att involvera abstraktionen av den faktiska oändligheten, är inte bland de konstruktiva objekten. Så till exempel är konstruktiva objekt inte reella tal (i betydelsen Cantor, Dedekind eller Weierstrass), geometriska. poäng (eftersom analysen av en sådan abstraktion som "punkt" leder till idén om en punkt som ett faktiskt oändligt system av små kroppar), etc. Strukturella objekt grupperas naturligt. sätt i aggregatet, exempel på vilka är samlingen av alla ord i ett givet alfabet och i allmänhet en samling av alla objekt i en klass. "skriv" från listan. ovanstående typer av konstruktionsobjekt. Varje sådan uppsättning av strukturella objekt specificeras av metoden för att konstruera de objekt som hör till den. Andra grundläggande Den abstraktion som används när man betraktar konstruktiva objekt och arkitektur är abstraktionen av identifiering. I vissa fall talar man om två objekt som identiska. Villkoren för "likhet" fastställs varje gång i förhållande till en given situation. Så, till exempel, när en person gör beräkningar på papper, är typsnittet som siffrorna skrivs i vanligtvis likgiltigt, och posterna 1647 och 1647 anses vara desamma; dock kan man föreställa sig situationer där skillnaden mellan latinska och kursiv stil är betydande (som till exempel i uppfattningen av ord som finns i detta filosofiska uppslagsverk). Då kommer de två uppteckningarna redan att betraktas som ojämlika, men uppteckningarna 1647 och 1647 kommer fortfarande - i vanliga fall - att vara desamma (även om det rent fysiskt är olika föremål). Man brukar acceptera att konstruktiva objekt består av vissa ganska enkla ”elementära delar” (precis som ord är gjorda av bokstäver) och två konstruktiva objekt anses vara lika om de består av identiska elementära delar ordnade i samma ordning. Utan begreppet "likhet", på grundval av vilket till exempel siffror skrivna med krita på en svart tavla och siffror skrivna med bläck i en anteckningsbok anses vara samma, är inlärning omöjligt. Abstraktionen av identifiering gör att vi kan tala om identiska objekt som ett och samma objekt. Det leder till bildandet av begreppet ett "abstrakt objekt": nämligen två identiska konkreta objekt anses vara representanter för samma abstrakta objekt. Varje A. som appliceras på identiska objekt leder också till identiska objekt. Därför kan vi anta att varje A. specificerar processen att transformera abstrakta konstruktiva objekt. Denna egenskap hos A. (tillsammans med determinism) bestämmer deras repeterbarhet eller reproducerbarhet: efter att ha utvecklats i form av A. över abstrakta konstruktiva objekt, kan A. reproduceras upprepade gånger för alla specifika konstruktiva objekt som är tillåtna för ett givet A. Från ovanstående det bör bli tydligt att initialdata är densamma som slutdata. resultat som följer av genomförandet av k.-l. A., de är alltid konstruktiva objekt (varje "tillstånds"-algoritm. process är ett konstruktivt objekt!). Omöjligheten av ens potentiellt genomförbara processer på icke-konstruktiva objekt är också förknippad med avsaknaden av ett sätt att känna igen dem som identiska eller olika (jfr cybernetikens välkända ståndpunkt om fördelarna med diskreta former av informationslagring framför kontinuerliga sådana. ). Det finns olika synpunkter. angående de metoder som är tillåtna i studiet av A. En av dem, som lagts fram av representanter för den konstruktiva riktningen inom matematik och logik, är att eftersom för bildandet av begreppet A. är abstraktionerna av identifiering och potentiell genomförbarhet tillräckliga, då utvecklingen av teorin om A. bör genomföras inom ramen för dessa abstraktioner. Ett annat perspektiv möjliggör studier av A. alla metoder som allmänt är tillåtna inom logik och matematik, inkl. och kräver abstraktionen av den faktiska oändligheten. Man kan alltså tänka sig ett fall då det, för att bevisa att ett visst A., när det appliceras på ett visst objekt, kommer att ge ett resultat, kommer att vara nödvändigt att använda lagen om utesluten mitt, som är nära besläktad med abstraktionen av verklig oändlighet. Grundläggande begrepp i teorin om A. Bland de grundläggande. begrepp som uppstår utifrån begreppet aritmetik inkluderar begreppen en beräkningsbar funktion, en lösbar mängd och en uppräknad mängd. Funktionen kallas beräkningsbar, så länge det finns en algoritm som beräknar denna funktion på följande sätt. mening: a) A. är tillämplig på alla objekt som ingår i funktionens definitionsdomän och ger som ett resultat värdet av funktionen som den tar för detta objekt som dess argument; b) A. är inte tillämplig på något objekt som inte ingår i funktionen. En uppsättning som finns i en viss samling av konstruktiva föremål (dvs. en uppsättning som består av några föremål i denna samling) kallas. lösbar (relativt den omslutande mängden), så länge det finns ett A. som löser denna mängd (relativt den specificerade mängden) till nästa. mening: A. är tillämplig på vilket objekt som helst från den omslutande mängden och ger som ett resultat ett svar på frågan om detta objekt tillhör den ifrågavarande mängden eller inte. Slutligen anropas en icke-tom uppsättning (se tom). uppräknad, så länge det finns ett A som räknar upp denna uppsättning i nästa. betydelse: a) resultatet av att applicera A. på ett naturligt tal existerar och hör till den ifrågavarande mängden; b) varje element i den uppsättning som betraktas kan erhållas som ett resultat av att tillämpa aritmetik på något naturligt tal. Per definition klassificeras även den tomma mängden som uppräknad. Samma beräkningsbara funktion (respektive en lösbar mängd, en uppräknbar mängd) kan beräknas (respektive, löst, uppräknad) med hjälp av olika A. Av definitionerna följer att argumenten och värdena för en beräkningsbar funktion, element av en lösbar eller uppräknbar mängd är alltid konstruktiva objekt. Ersätta konstruktiva objekt (en viss svärm av fasta aggregat) med deras antal i en godtycklig algoritm numrering (d.v.s. en sådan numrering för vilken det finns en algoritm för att erhålla dess nummer från ett objekt och vice versa), kan man, som ofta görs inom aritmetikteorin, begränsa oss till att endast beakta sådana beräkningsbara funktioner, argumenten och värden av vilka är naturliga tal, och endast sådana lösbara och uppräknbara mängder, vars element också är naturliga tal. Det kan bevisas att varje lösbar uppsättning är uppräknad. Samtidigt var det möjligt att konstruera en uppräknad men inte lösbar uppsättning. Detta första konkreta exempel (publicerat av den amerikanske vetenskapsmannen A. Church 1936 i artikeln "One Unsolvable Problem in Elementary Number Theory") på frånvaron av en algoritm (nämligen en algoritm som löser den konstruerade mängden) var källan eller exemplet på nästan alla ytterligare exempel av detta slag. Det visade sig att en uppsättning är lösbar om och bara om både den och dess komplement (till den omslutande uppsättningen objekt) är uppräknbara. Det finns alltså komplement till uppräkna uppsättningar som i sig inte kan räknas upp. Sambandet mellan teorin om logik och logik. Begreppen avgörbara och uppräknbara mängder är nära besläktade med klassificeringen av definitioner (vi begränsar oss här till endast sådana definitioner, som var och en definierar objekt av en viss typ eller, vad är samma, en viss klass av objekt). Som ni vet finns det två huvudsakliga. definitionsscheman: "genom släkt- och artskillnad" och "genom induktion". När man definierar "genom släkte och specifik skillnad", specificeras en viss omfattande uppsättning objekt ("släkte") och en egenskap ("artsskillnad") indikeras som skiljer mellan objekten ett dekret, en samling av klassen av definierade objekt . Om; anser att denna definition är konstruktiv, dvs. att objekt är konstruktiva och att närvaron eller frånvaron av artskillnad i ett element av släktet är algoritmiskt igenkännbar, då visar sig den definierade mängden vara avgörbar (och varje avgörbar mängd kan definieras på detta sätt). Sålunda identifieras lösliga uppsättningar med uppsättningar som är konstruktivt definierade genom genus och specifik skillnad. Definitionen ”genom induktion” består av två delar: den grundläggande delen, som innehåller en viss lista över objekt som förklaras tillhöra den klass som definieras, och den induktiva delen som anger att om objekt av sådant och sådant slag tillhör klassen som definieras , då tillhör även objekt av sådan och sådan typ, kopplade till de första objekten genom en viss relation, till den definierade klassen. (Mer komplexa fall av så kallade korsdefinitioner är också möjliga, när flera klasser av objekt definieras samtidigt genom varandra). Om vi ​​antar att definitionen är konstruktiv, d.v.s. objekt är konstruktiva, listan över initiala objekt som ingår i den grundläggande delen är ändlig, och reglerna för övergång från redan definierade objekt till nya algoritmiska som finns i den induktiva delen (i den meningen att närvaron eller frånvaron av relationen som diskuteras i induktiv del känns igen genom någon form av A.), då kommer vi till begreppet en mängd konstruktivt definierad av induktion, eller (synonym) en effektivt genererad mängd (eftersom en sådan definition specificerar en effektiv genereringsprocess, i vissa stadier av utveckling av vilka definierade objekt "uppstår" eller "genereras"). Ett exempel på en konstruktiv definition genom induktion är definitionen av tillåtna schackpositioner (det vill säga positioner som kan dyka upp på tavlan under spelets gång). Basdelen innehåller en enhet. start position. Den induktiva delen innehåller reglerna för pjäsernas rörelser. Uppsättningen av tillåtna positioner genereras således effektivt. Ett annat exempel på en effektivt genererad uppsättning är uppsättningen av alla bevisbara formler för en k.-l. formellt system eller kalkyl: den grundläggande delen av definitionen av bevisbara formler innehåller axiom, den induktiva delen innehåller inferensregler (axiom förklaras bevisbara per definition och då sägs det att om några formler är bevisbara, så är formlerna som erhålls från dem enl. till reglerna för slutledning är också bevisbara). Genereringsprocessen här är processen att bevisa alla bevisbara formler. Slutligen är processen att vederlägga alla falsifierbara formler i kalkyl också ett exempel på en effektiv generativ process. Begreppet en effektiv genereringsprocess är mycket nära relaterad till begreppet A. Vi har gett en definition (ungefärlig) av en effektiv genereringsprocess baserad på begreppet A. I sin tur tillåter begreppet en genereringsprocess oss att definiera på dess grund, om inte begreppet A i sig, så i alla fall begreppet en beräkningsbar funktion. Låt faktiskt en viss genereringsprocess vara kapabel att "generera" objekt som har formen av par (x, y), och låt vilka två "genererade" par som helst med sammanfallande första termer också ha samma andra termer. Sedan följer processen. definierar funktionen y = f(x) på detta sätt: funktionen definieras för objektet x0 om och endast om x0 är den första medlemmen av c.-l. genererat par: värdet på funktionerna för argumentet x0 är i detta fall lika med den andra medlemmen i detta par. Funktionen definierad i dekret. i betydelsen av en effektiv genereringsprocess är det uppenbarligen beräkningsbart [för att hitta f(x0), vi måste expandera processen tills vi hittar par med x0 som första term]. Omvänt kan varje beräkningsbar funktion definieras av en effektiv genereringsprocess. Algoritmisk processer och genererande processer ligger logiskt nära varandra. åsikter. Var och en av dem bygger endast på konstruktiva koncept. Skillnaden mellan dem är att den algoritmiska processen utspelar sig utifrån ett krav, och den generativa processen utspelar sig utifrån tillstånd att handla på ett visst sätt. Här manifesteras skillnaden mellan det nödvändiga och det möjliga (i en algoritmisk process är varje steg unikt, d.v.s. nödvändigtvis bestämt av det föregående steget, medan när den generativa processen utvecklas efter varje steg, uppstår bara en mängd möjligheter för nästa steg skede). Med ordentliga förbättringar av konceptet med en effektiv genereringsprocess, visar det sig att varje effektivt genererad uppsättning är uppräknad, och vice versa. Denna omständighet, i kombination med ovanstående relationer mellan uppräknade och avgörbara uppsättningar, tillåter oss att dra slutsatsen följande. Varje klass av objekt som medger en konstruktiv definition genom släkte och specifik skillnad medger också en konstruktiv definition genom induktion, men inte vice versa: det finns en klass av objekt som definieras konstruktivt genom induktion, men som inte tillåter en konstruktiv definition genom släkte och specifik skillnad; tillägg till denna klass av objekt (över den omslutande uppsättningen av strukturella objekt) tillåter inte effektiv induktiv definition. Varje konstruktiv generativ process kan representeras som en process för att erhålla bevisbara formler för en lämplig kalkyl. Därför kan ett exempel på en klass som har de egenskaper som just beskrivits konstrueras som en klass av alla bevisbara formler för en viss kalkyl. Dessutom visade det sig att denna omständighet inträffar för alla som är tillräckligt inneslutna. kalkyl (till exempel för predikatkalkyl eller för kalkyl som formaliserar aritmetik), för om kalkylen är tillräckligt meningsfull kan varje effektiv genereringsprocess uttryckas i den. Klassen för alla bevisbara formler för en sådan kalkyl (som naturligtvis är uppräknbar) är inte avgörbar, så det finns ingen algoritm som känner igen bevisbarheten hos kalkylformler; i denna mening sägs kalkylen vara obestämbar. Eftersom klassen för alla bevisbara kalkylformler inte kan avgöras, kommer den att komplettera. för den är klassen av alla obevisbara formler inte uppräknbar och kan därför inte erhållas genom någon genereringsprocess; i synnerhet är det omöjligt att konstruera en sådan kalkyl, som skulle "motbevisa" alla obevisbara formler i originalet. kalkyl och bara dem; Dessutom kan alla dessa obevisbara formler inte vederläggas med hjälp av originalet. kalkyl, alltså i början. i kalkyl finns sk oavgörbara (d.v.s. varken bevisbara eller vederläggbara) formler. I dessa överväganden kan vi begränsa oss endast till sådana formler, som innehåller. tolkningar av kalkyl uttrycker meningsfulla (d.v.s. antingen sanna eller falska) påståenden och hittar därför oavgörbara bland sådana formler. Av detta följer att det är möjligt att presentera en formel som uttrycker en sann bedömning, men som inte kan bevisas i kalkyl; i denna mening sägs systemet vara ofullständigt. Vi betonar att på grund av den allmänna karaktären hos det resonemang som förs, är egenskapen ofullständighet inneboende i någon tillräckligt innesluten. kalkyl. Begreppet oavgörbarhet av kalkyl baseras på begreppet aritmetik, och det är inte förvånande att faktumet om oavgörbarhet fastställs på grundval av forskning inom kalkylteorin. Mycket betydelsefullt (och kanske oväntat vid första anblicken) är faktum att en sådan allmän logik. ett faktum som ofullständigheten i beräkningar (ett faktum som uttrycker den grundläggande omöjligheten att fullständigt formalisera processen med logisk slutledning och först strikt bevisats av den österrikiske vetenskapsmannen K. Gödel redan 1931, innan begreppet "A.") klargjordes, kan erhållas, som vi nyss sett, med hjälp av aritmetikteorin, enbart denna omständighet visar de enorma möjligheterna att tillämpa aritmetikteorin på logiska frågor. Dessa applikationer är inte begränsade till det angivna exemplet. Tillbaka 1932 sovjeterna. vetenskapsmannen A. N. Kolmogorov föreslog en tolkning av den konstruktiva logiken skapad av intuitionister som använder innehålla. betyder som inte har något att göra med intuitionismens attityder; Kolmogorov föreslog nämligen att tolka varje mening i konstruktiv logik som ett problem. Konceptet med ett problem krävde dock en specifikation, som endast kunde ges på basis av den redan utvecklade teorin om A. Två specifika problemklasser lämpliga för tolkningen av konstruktiv logik föreslogs av Amer. vetenskapsmannen S.K. Kleene 1945 och ugglor. vetenskapsmannen Yu. T. Medvedev 1955. År 1956 ugglor. vetenskapsmannen N.A. Shanin lade fram ett nytt koncept, enligt vilket inte varje påstående om konstruktiv logik kräver tolkning i form av ett problem. Denna cirkel av idéer inkluderar frågorna om "konstruktivisering", eller "hitta konstruktiva analoger", klassiska. matematisk koncept och förslag; lösningen på dessa frågor är också möjlig endast på basis av teori A. Konstruktivisering av det grundläggande. matematiska begrepp analys ledde till att den så kallade nu utvecklas. konstruktiv matematisk analys. Sätt att konstruktivisera och annan matematisk skisseras. teorier. En av de huvudsakliga tekniker som används vid konstruktivisering är övergången från objekten som studeras till deras namn, som alltid är konstruktiva objekt. LÖSNINGSPROBLEM. Ett specialfall av massproblem är problemlösningar. Problem att lösa k.-l. av en uppsättning är problemet med att konstruera en algoritm som löser denna uppsättning. Motsvarande en serie individuella problem består här av problem att besvara frågan om medlemskap i en uppsättning som ställs för varje objekt från den omfattande uppsättningen konstruktiva objekt. Omvänt något massproblem, resp. en serie individuella problem med att besvara en fråga, kan betraktas som ett problem för att lösa en viss uppsättning, nämligen uppsättningen av dessa individuella problem, vars svar är "ja". Detta klargör den viktiga roll lösningsproblem har. Det var de som studerades ur synvinkeln. deras lösbarhet. Bland lösningsproblemen sticker problemen upp för klasser av bevisbara kalkylformler. Problemet med att lösa klassen av alla bevisbara formler av k.-l. kalkyl kallas även problemet med att lösa själva kalkylen. (I ryska texter brukar problemet med lösning kallas för "lösbarhetsproblemet", men "lösbarhetsproblemet" kallas bättre problemet: "att svara på om ett givet problem har en lösning."). Olösliga massproblem. Tillståndsproblematiken för k.-l. I kalkyl finns alltid problemet med att lösa en uppräknad mängd. I allmänhet visade sig alla problem med upplösning som naturligt uppstod i matematiken vara problem med upplösning av otaliga mängder. Detta är det ovan nämnda första exemplet på ett olösligt lösningsproblem (och samtidigt det första exemplet på ett olösligt massproblem i allmänhet), publicerat av Church 1936. Detta är den s.k. identitetsproblemet för associativa system, bevis på formens oavgörbarhet publicerades 1947 oberoende av varandra av A. A. Markov och Amer. vetenskapsmannen E. L. Post; detta resultat är av intresse som det första exemplet på bevis på olösligheten av ett massproblem som uppstod (tillbaka 1914) utanför logik och teori.Detta är det berömda problemet med identitet för grupper, som ställdes redan 1912, vars olöslighet var bevisad 1952. vetenskapsmannen P. S. Novikov (Leninpriset, 1957). Vart och ett av identitetsproblemen består i att hitta en algoritm som fastställer ekvivalensen eller icke-ekvivalensen för två ord i ett givet alfabet (om vi har att göra med ett associativt system eller en grupp beror på en eller annan definition av ekvivalens). Därför kan identitetsproblemet betraktas som ett problem att lösa mängden av alla ordpar som är likvärdiga med varandra (relativt till mängden av alla möjliga ordpar). Dessutom, eftersom det är möjligt att specificera en generativ process för att erhålla alla par av ord som är ekvivalenta med varandra, är uppsättningen av alla sådana par uppräknad. Konsistens. Från och med kyrkans exempel 1936 och fram till 1944, genomfördes alla bevis på massproblemens olöslighet eller kunde utföras på följande sätt. enhetlig metod. Det uppenbarligen olösliga problemet som kyrkan studerade reducerades till massproblemet under övervägande, så att om massproblemet under övervägande var lösbart, då skulle kyrkans problem också visa sig vara lösbart (i denna mening kan vi säga att beviset för oavgörbarheten av det aktuella problemet reducerades till beviset för oavgörbarheten av kyrkans problem). Frågan uppstod om för något olösligt lösningsproblem dess olöslighet kan fastställas på detta sätt. Denna fråga, kallad reducerbarhetsproblemet, ställdes av Post 1944; Samtidigt gav Post flera exempel på olösliga lösningsproblem, vars olöslighet fastställdes av honom med en annan metod än den som beskrivits ovan (dessa exempel löste ännu inte problemet med reducerbarhet, eftersom frågan förblev öppen om det var omöjligt för dem att hitta sådana bevis på olöslighet, som reducerades för att bevisa olösligheten av kyrkans problem; därefter, för några av exemplen ovan, hittades sådana bevis faktiskt). Problemet med reducerbarhet stod i centrum för forskningen om aritmetikteorin fram till 1956, då den löstes oberoende av Sovjetunionen. vetenskapsmannen A.A. Muchnik och Amer. vetenskapsmannen R. M. Friedberg. Han konstruerade ett exempel på ett problem med oavgörlig lösning (för en uppräknad uppsättning), vars oavgörbarhet inte kan bevisas genom att reducera kyrkans problem till detta problem. Muchnik visade ännu mer, nämligen att inte bara kyrkoproblemet, utan inget annat problem kan fungera som ett "standard oavgörbart problem" i den meningen att beviset på oavgörbarheten av ett oavgörligt problem för en numerabel uppsättning

ett system av regler, formulerat på ett språk som är förståeligt för utföraren, som bestämmer övergångsprocessen från acceptabla initiala data till ett visst resultat och har egenskaperna massa, finitet, säkerhet och determinism.

Ordet "algoritm" kommer från namnet på den stora centralasiatiska vetenskapsmannen på 800-900-talen. Al-Khorezmi (Khorezms historiska region på det moderna Uzbekistans territorium). Av Al-Khorezmis matematiska verk har bara två nått oss: algebraisk (från titeln på denna bok föddes ordet algebra) och aritmetik. Den andra boken ansågs förlorad länge, men 1857 hittades dess översättning till latin i Cambridge Universitys bibliotek. Den beskriver fyra regler för aritmetiska operationer, nästan samma som används nu. De första raderna i denna bok översattes enligt följande: "Said Algorithm. Låt oss prisa Gud, vår ledare och beskyddare." Så namnet Al-Khorezmi blev Algoritm, vilket är varifrån ordet algoritm kom. Termen algoritm användes för att beteckna fyra aritmetiska operationer, och det var i denna betydelse som den kom in på några europeiska språk. Till exempel i den auktoritativa engelska ordboken Websters New World Dictionary, publicerad 1957, är ordet algoritm märkt "föråldrad" och förklaras utföra aritmetiska operationer med arabiska siffror.

Ordet "algoritm" användes igen med tillkomsten av elektroniska datorer för att beteckna en uppsättning åtgärder som utgör en viss process. Detta innebär inte bara processen att lösa ett visst matematiskt problem, utan också ett kulinariskt recept och instruktioner för att använda en tvättmaskin, och många andra sekventiella regler som inte är relaterade till matematik; alla dessa regler är algoritmer. Ordet "algoritm" är känt för alla nuförtiden; det har kommit in i vardagsspråket så säkert att nu uttrycken "beteendealgoritm", "framgångsalgoritm" etc. ofta finns på sidorna i tidningar och i tal av politiker.

Turing A. Kan en maskin tänka?? M., Mir, 1960
Uspensky V. Postens bil. Vetenskap, 1988
Cormen T., Leiserson, Rives R. Algoritmer. Konstruktion och analys. M., MTsNMO, 1999

Hitta "ALGORITHM" på

BEGREPPET ALGORITM. ALGORITIMENS EGENSKAPER. TYPER AV ALGORITIMER. METODER FÖR BESKRIVNING AV ALGORITIMER

En algoritm är en exakt och begriplig instruktion till en artist att utföra en sekvens av åtgärder som syftar till att lösa ett givet problem. Ordet "algoritm" kommer från namnet på matematikern Al Khorezmi, som formulerade reglerna för att utföra aritmetiska operationer. Ursprungligen betydde en algoritm endast reglerna för att utföra fyra aritmetiska operationer på tal. Senare började detta koncept användas i allmänhet för att beteckna sekvensen av åtgärder som leder till lösningen av en given uppgift. När man talar om beräkningsprocessens algoritm är det nödvändigt att förstå att objekten som algoritmen tillämpades på är data. En algoritm för att lösa ett beräkningsproblem är en uppsättning regler för omvandling av källdata till resultat.

Main egenskaper Algoritmer är:

  1. determinism (säkerhet). Det förutsätter att man erhåller ett entydigt resultat av en beräkningsprocess med givna initiala data. På grund av denna egenskap är processen för att exekvera algoritmen av mekanisk natur;
  2. effektivitet. Indikerar närvaron av sådana initiala data för vilka beräkningsprocessen implementerad enligt en given algoritm måste stoppas efter ett ändligt antal steg och producera det önskade resultatet;
  3. masskaraktär. Denna egenskap innebär att algoritmen bör vara lämplig för att lösa alla problem av en given typ;
  4. diskrethet. Det betyder uppdelningen av beräkningsprocessen som bestäms av algoritmen i separata steg, vars förmåga att utföras av utföraren (datorn) är utom tvivel.

Algoritmen måste formaliseras enligt vissa regler med hjälp av specifika visuella medel. Dessa inkluderar följande metoder för att skriva algoritmer: verbalt, formel-verbalt, grafiskt, operatorschemaspråk, algoritmiskt språk.

Den mest utbredda, på grund av dess tydlighet, är den grafiska (blockdiagram) metoden för att spela in algoritmer.

Blockdiagram är en grafisk representation av den logiska strukturen hos en algoritm, där varje steg i representeras i form av geometriska symboler (block) som har en viss konfiguration beroende på arten av de utförda operationerna. Listan över symboler, deras namn, funktionerna de visar, form och dimensioner bestäms av GOSTs.

Med alla olika algoritmer för att lösa problem kan tre huvudtyper av beräkningsprocesser särskiljas:

  • linjär;
  • förgrening;
  • cyklisk.

Linjär är en beräkningsprocess där alla steg för att lösa ett problem utförs i den naturliga ordningen för att registrera dessa steg.

Förgrening är en beräkningsprocess där valet av riktning för bearbetning av information beror på initiala eller mellanliggande data (på resultaten av att kontrollera att alla logiska villkor uppfylls).

En cykel är en del av beräkningar som upprepas många gånger. En beräkningsprocess som innehåller en eller flera cykler kallas cyklisk . Baserat på antalet avrättningar delas cykler in i cykler med ett visst (förutbestämt) antal repetitioner och cykler med ett obestämt antal repetitioner. Antalet repetitioner av det senare beror på tillfredsställelsen av något villkor som specificerar behovet av att utföra cykeln. I det här fallet kan tillståndet kontrolleras i början av cykeln - då talar vi om en cykel med en förutsättning, eller i slutet - då är det en cykel med ett eftervillkor.

Varje algoritm hanterar data - input, intermediate och output.

Lem. Det förstås på två sätt: för det första består algoritmen av individuella elementära steg, eller åtgärder, och det finns många olika steg som utgör algoritmen förstås. För det andra måste algoritmen avslutas i ett begränsat antal steg. Om en oändlig process konstrueras som konvergerar till den önskade lösningen, avbryts den i ett visst steg och det resulterande värdet tas som en ungefärlig lösning på det aktuella problemet. Uppskattningens noggrannhet beror på antalet steg.

Elementaritet (förståbarhet). Varje steg i algoritmen måste vara enkelt så att enheten som utför operationerna kan slutföra det i ett steg.

Diskrethet. Processen att lösa ett problem representeras som en ändlig sekvens av individuella steg, och varje steg i algoritmen utförs i en ändlig (inte nödvändigtvis enhet) tid.

Determinism (säkerhet). Varje steg i algoritmen måste vara unikt och otvetydigt definierat och bör inte tillåta godtycklig tolkning. Efter varje steg anges antingen vilket steg som ska tas härnäst, eller så ges ett stoppkommando, varefter algoritmens arbete anses vara avslutat.

Produktivitet. Algoritmen har ett visst antal inmatade kvantiteter - argument. Syftet med att exekvera algoritmen är att få ett specifikt resultat som har en mycket specifik relation till originaldata. Algoritmen måste stanna efter ett ändligt antal steg, beroende på data, med en indikation på vad som ska betraktas som resultat. Om en lösning inte kan hittas, måste det anges vad som anses vara resultatet i detta fall.

Mass karaktär. Algoritmen för att lösa problemet utvecklas i generell form, d.v.s. det bör vara tillämpligt för en viss klass av problem som skiljer sig endast i de initiala uppgifterna. I detta fall kan initialdata väljas från ett visst område som kallas algoritmens tillämplighetsområde.

Effektivitet. Samma problem kan lösas på olika sätt och följaktligen vid olika tidpunkter och med olika minneskostnader. Det är önskvärt att algoritmen består av ett minsta antal steg och att lösningen uppfyller noggrannhetsvillkoret och kräver minimalt med andra resurser.

Den exakta matematiska definitionen av algoritmen kompliceras av det faktum att tolkningen av de föreskrivna instruktionerna inte bör bero på ämnet som utför dem. Beroende på hans intellektuella nivå kan han antingen inte förstå alls vad som menas i instruktionerna, eller omvänt tolka det på ett oavsiktligt sätt.

Problemet med att tolka regler kan kringgås om tolkanordningens utformning och funktionsprincip tillsammans med föreskrifternas ordalydelse beskrivs. Detta undviker osäkerhet och tvetydighet när det gäller att förstå samma instruktioner. För att göra detta är det nödvändigt att specificera ett språk där många beteenderegler eller en sekvens av åtgärder beskrivs, såväl som själva enheten, som kan tolka meningar gjorda på detta språk och utföra varje exakt definierad process steg för steg . Det visar sig att en sådan anordning (maskin) kan implementeras i en form som förblir konstant oavsett komplexiteten i förfarandet i fråga.

För närvarande kan tre huvudtyper av universella algoritmiska modeller urskiljas. De skiljer sig åt i sina utgångsantaganden när det gäller definitionen av begreppet en algoritm.

Första typen kopplar samman begreppet en algoritm med de mest traditionella begreppen matematik - beräkningar och numeriska funktioner. Andra typenär baserad på idén om en algoritm som en viss deterministisk enhet som kan utföra endast mycket primitiva operationer vid varje givet ögonblick. Denna representation säkerställer entydigheten i algoritmen och den elementära karaktären hos dess steg. Dessutom motsvarar denna idé ideologin att bygga datorer. Den huvudsakliga teoretiska modellen av denna typ, skapad på 1930-talet. Engelske matematikern Alan Turing, är en Turing-maskin.

Tredje typen– det här är omvandlingar av ord i godtyckliga alfabet, där de elementära operationerna är substitutioner, d.v.s. ersätta en del av ett ord (ett ord är en sekvens av alfabetiska tecken) med ett annat ord. Fördelarna med denna typ av modell är dess maximala abstraktion och förmågan att tillämpa konceptet med en algoritm på objekt av godtycklig (inte nödvändigtvis numerisk) natur. Exempel på modeller av den tredje typen är den amerikanske matematikern Emil L. Posts kanoniska system och normala algoritmer introducerade av den sovjetiske matematikern A. A. Markov.

Modellerna av den andra och tredje typen är ganska nära och skiljer sig främst i heuristiska accenter, så det är ingen slump att de pratar om Posts maskin, även om Post själv inte pratade om det.

En inspelning av en algoritm på något språk är ett program. Om ett program är skrivet på ett speciellt algoritmiskt språk (till exempel PASCAL, BASIC eller något annat), så pratar vi om originalprogram. Ett program skrivet på ett språk som en dator direkt kan förstå (vanligtvis binära koder) kallas maskin, eller binär.

Varje sätt att skriva en algoritm innebär att varje objekt som beskrivs med dess hjälp specificeras som en specifik representant för en ofta oändlig klass av objekt som kan beskrivas på detta sätt.

Medlen som används för att skriva algoritmerna bestäms till stor del av vem som ska vara utföraren.

Om artisten är en person kanske inspelningen inte är helt formaliserad, tydlighet och synlighet kommer först. I det här fallet kan algoritmdiagram eller verbal notation användas för inspelning.

För att skriva algoritmer avsedda för automatiserare är formalisering nödvändig, därför används i sådana fall formella specialspråk. Fördelen med det formella notationssättet är att det gör det möjligt att studera algoritmer som matematiska objekt; i detta fall tjänar den formella beskrivningen av algoritmen som grund för att intellektuellt förstå denna algoritm.

En mängd olika sätt används för att skriva algoritmer. Valet av verktyg bestäms av typen av algoritm som exekveras. Följande särskiljs: huvudsakliga sätt att skriva algoritmer:

verbal– Algoritmen beskrivs på mänskligt språk;

symbolisk– Algoritmen beskrivs med hjälp av en uppsättning symboler;

grafisk– Algoritmen beskrivs med hjälp av en uppsättning grafiska bilder.

De allmänt accepterade sätten att skriva en algoritm är grafisk inspelning med hjälp av algoritmdiagram (flödesscheman) och symbolisk notation med använder något algoritmiskt språk.

För att beskriva en algoritm används diagram för att avbilda en sammankopplad sekvens av geometriska figurer, som var och en innebär att en specifik åtgärd av algoritmen utförs. Ordningen på åtgärderna indikeras med pilar.

Följande typer av grafiska symboler används i algoritmdiagram.

Start Och slutet Algoritmen är designad med samma symboler (Fig. 21.1).

Ris. 21.1.

Ett algoritmsteg associerat med att tilldela ett nytt värde till en viss variabel, transformera ett visst värde för att erhålla ett annat värde, representeras av symbolen "bearbeta"(Fig. 21.2).

Ris. 21.2.

Valet av riktning för exekvering av algoritmen beroende på vissa variabla villkor representeras av symbolen " lösning"(Fig. 21.3).

Ris. 21.3.

Här R betyder predikat (villkorligt uttryck, villkor). Om villkoret är uppfyllt (predikatet tar värdet TRUE) görs övergången till ett steg i algoritmen, och om det inte är uppfyllt till ett annat.

Det finns primitiver för datainmatnings- och utdataoperationer, såväl som andra grafiska symboler. För närvarande definieras de av GOST 19.701–90 (ISO 5807–85) standarden "Enhetligt system för programdokumentation. Schema av algoritmer, dataprogram och system. Konventioner och exekveringsregler." Totalt innehåller ESPD-samlingen 28 dokument.

Med hjälp av algoritmdiagrammet är det enkelt att komponera ett första program på ett algoritmiskt språk.

Beroende på sekvensen av åtgärder i algoritmen särskiljs algoritmer med linjär, grenad och cyklisk struktur.

I algoritmer linjär strukturåtgärder utförs sekventiellt efter varandra.

I algoritmer grenad struktur Beroende på uppfyllelse eller icke-uppfyllelse av något villkor, utförs olika sekvenser av åtgärder. Varje sådan sekvens av åtgärder kallas gren av algoritmen.

I algoritmer cyklisk struktur beroende på uppfyllelse eller icke-uppfyllelse av något villkor, utförs en upprepad sekvens av åtgärder, kallad cykelns kropp. En kapslad loop är en som är inuti kroppen av en annan loop. En iterativ cykel är en cykel vars antal repetitioner inte specificeras, utan bestäms under exekveringen av cykeln.

I det här fallet kallas en upprepning av cykeln iteration.

Redaktörens val
För exakt ett sekel sedan, i december 1918, fick världsmedicinen en rungande käftsmäll, från vilken den inte kunde återhämta sig på många decennier....

En samling intressanta problem och frågor A. Vid polen är solen över horisonten i ett halvt år och under horisonten i ett halvt år. Och månen? B. Till...

Förmodligen är det bara de lata som inte har hört nyheterna om bananer och Pepsi med HIV-infektion. Sociala nätverk är periodvis fulla av foton från...

Hermafroditism (uppkallad efter den grekiska guden Hermafroditus, grekiska Ερμαφρόδιτος) är den samtidiga eller sekventiella närvaron av manlig...
Hermafroditism (uppkallad efter den grekiska guden Hermafroditus, grekiska Ερμαφρόδιτος) är den samtidiga eller sekventiella närvaron av manlig...
Alla ärftliga sjukdomar orsakas av mutationer – defekter i arvsmassan. Kromosomsjukdomar är sjukdomar som orsakas av...
Struktur och biologisk roll för vävnader i människokroppen: Allmänna instruktioner: Vävnad är en samling celler som har liknande...
Kärnkrafter ger attraktion - detta följer av själva faktumet att det finns stabila kärnor bestående av protoner och...
Sammanfattning Om ämnet Historia om antisepsis och asepsis i Ryssland §1. Utveckling av idén om metoder för att behandla sår i mitten av 1000-talet i Ryssland ...