Algoritmas. Jo rūšys ir savybės. Kas yra algoritmai ir kam jie reikalingi Kas yra algoritmo sąvoka?


Problemos sprendimas kompiuteriu prasideda nuo algoritmo sudarymo. Kas yra algoritmas?

Termino „algoritmas“ kilmė siejama su didžiojo matematiko Muhammado al-Khwarizmi (763–850), sukūrusio keturių aritmetinių operacijų atlikimo taisykles, vardu.

Pagal GOST 19781-74:

Algoritmas yra tikslus nurodymas, apibrėžiantis skaičiavimo procesą, vedantį nuo kintančių pradinių duomenų iki norimo rezultato.

Tai yra algoritmas – tai aiškus nurodymas algoritmo vykdytojui atlikti tam tikrą veiksmų seką uždaviniui išspręsti ir rezultatui gauti.

Algoritmo kūrimas reiškia problemos suskaidymą į konkrečią veiksmų seką. Algoritmo kūrėjas privalo žinoti algoritmų sudarymo ypatybes ir taisykles.

Pagrindinės algoritmų savybės:

    Prieinamumas įvestis šaltinio duomenys.

    Prieinamumas išvestis algoritmo vykdymo rezultatas, nes algoritmo vykdymo tikslas yra gauti rezultatą, kuris turi labai specifinį ryšį su pradiniais duomenimis.

    Algoritmas turi turėti diskreti struktūra , t.y. algoritmas pateikiamas kaip veiksmų seka, o kiekvieno kito žingsnio vykdymas pradedamas užbaigus ankstesnį.

    Vienareikšmiškumas – kiekvienas algoritmo žingsnis turi būti aiškiai apibrėžtas ir atlikėjui neturėtų būti leidžiama savavališkai interpretuoti.

    Galūnė – algoritmo vykdymas turi būti atliktas baigtiniu žingsnių skaičiumi.

    Teisingumas – algoritmas turi nurodyti teisingą problemos sprendimą.

    Masinis personažas (bendrumas) – sukurtas algoritmas, skirtas išspręsti tam tikros klasės uždavinius, kurie skiriasi pradiniais duomenimis.

    Efektyvumas - algoritmas turi būti įvykdytas per protingą ribotą laiką. Tokiu atveju pasirenkamas paprasčiausias ir trumpiausias problemos sprendimo būdas, žinoma, atsižvelgiant į visus algoritmui taikomus apribojimus ir reikalavimus.

Algoritmų rašymo būdai

Sukurtas algoritmas gali būti pateiktas keliais būdais:

    natūralia kalba (žodinis algoritmo įrašymas);

    blokinių diagramų pavidalu (grafinė forma);

    programavimo kalba.

Žodinis algoritmo įrašymas. Žodinė forma paprastai naudojama apibūdinti sukurtus algoritmus atlikėjas – asmuo. Komandos parašytos paprasta kalba ir vykdomos eilės tvarka. Komandose gali būti naudojamos formulės ir specialūs žymėjimai, tačiau kiekviena komanda turi būti suprantama atlikėjui. Natūrali komandų tvarka gali būti sutrikdyta (jei, pavyzdžiui, reikia pereiti prie ankstesnės komandos arba esant tam tikroms sąlygoms reikia apeiti kitą komandą), tokiu atveju komandos gali būti sunumeruotos ir komanda, kuriai norite nori eiti yra nurodyta. Pavyzdžiui, pereikite prie 3 veiksmo arba pakartokite nuo 4 veiksmo.

Grafinė forma. Algoritmai pateikiami blokinių diagramų pavidalu. Yra specialūs blokų schemų konstravimo standartai, kur apibrėžiami grafiniai blokų vaizdai. Algoritmo komandos rašomos blokuose įprasta kalba arba naudojant matematines formules. Blokai pagal tam tikras taisykles sujungiami ryšio linijomis, kurios parodo komandų vykdymo tvarką.

Programavimo kalba. Jei algoritmas yra sukurtas problemai kompiuteryje išspręsti, tada tam, kad ji būtų vykdoma atlikėjas – kompiuteris, jis turi būti įrašytas šiam atlikėjui suprantama kalba. Šiuo tikslu buvo sukurta daug programavimo kalbų, skirtų įvairių klasių problemoms spręsti. Algoritmo rašymas programavimo kalba vadinamas programa.

a l g o r i f m) yra viena iš pagrindinių logikos ir matematikos sąvokų. Sakydami A. turime omenyje tikslią instrukciją, kuri nurodo skaičiavimą. procesas, vedantis nuo pradinių duomenų, kurie gali skirtis, iki norimo rezultato. Žodžiai „kompiuterija“ ir „kompiuteris“, esantys aukščiau, neturėtų būti suprantami siaurąja skaitmeninio skaičiavimo prasme. Taigi jau mokykliniame algebros kurse kalbama apie raidžių skaičiavimus, ir nors čia raidės atlieka ir skaičių pakaitalų vaidmenį, jau aritmetikoje. Skaičiuojant atsiranda simboliai, kurie nežymi jokių dydžių: skliausteliuose, lygybės ženklai, aritmetiniai ženklai. veiksmai. Galime eiti toliau ir apsvarstyti skaičiavimus su savavališkais simboliais ir jų deriniais; Būtent šia plačiąja prasme terminas „apskaičiavimas“ suprantamas aprašant sąvoką „A“. Taigi, galima kalbėti apie A. vertimą iš vienos kalbos į kitą, apie A. traukinių dispečerio darbą (informacijos apie traukinių judėjimą apdorojimą į užsakymus) ir kitus algoritminio pavyzdžius. kibernetikos tyrinėtų valdymo procesų aprašymai. A PRASMĖ. Pats žodis „A“. datuojamas IX a. (jis kilęs iš Algoritmi, kuris savo ruožtu yra lotyniška transliteracija, matyt, padaryta XII amžiuje, arabiško Khorezmio matematiko al-Khwarizmi vardo). Šiais laikais paprasčiausi A. atsiranda jau pradinėje mokykloje – tai A. aritmetika. veiksmai (amžiaus vidurio Europoje būtent A. buvo vadinama šiuolaikinė mokyklinė aritmetika, t. y. dešimtainė padėties skaičių sistema ir skaičiavimo menas joje, nes al-Khwarizmi traktatas buvo vienas iš pirmųjų, jei ne pats pirmas, padėka. Be to, Europa susipažino su pozicine sistema). Pabrėžkime, kad pradinėje mokykloje mokoma būtent A. sąskaitų. Kalbėdamas apie žmogaus gebėjimą sudėti skaičius, turima omenyje ne tai, kad jis anksčiau ar vėliau galės rasti bet kurių dviejų skaičių sumą, o tai, kad jis žino tam tikrą vienodą sudėjimo metodą, taikomą bet kuriems dviem konkretiems skaičių įrašams. t.y., kitaip tariant, A. pridėjimas (tokio A. pavyzdys yra gerai žinomas A. skaičių pridėjimas „stulpelyje“). A. yra moksle kiekviename žingsnyje; gebėjimas išspręsti problemą „bendra forma“ iš esmės visada reiškia tam tikros A. Problemos sąvoka „bendra forma“ paaiškinama naudojant sąvoką a. masinė problema. Sąvoka „problema“ gali būti suprantama kaip užduotis surasti objektą, turintį tam tikrų savybių; šis objektas vadinamas problemos sprendimas (ypač atsakymo į klausimą paieškos problemos sprendimas yra atsakymas „taip“ arba „ne“ į pateiktą klausimą). Problema yra neišsprendžiama, jei ji neturi sprendimo, t.y. nėra objekto, kuris turėtų reikiamas savybes. Todėl aišku, kad problemos neišsprendžiamumas nesudaro pagrindo agnosticizmui. išvados; priešingai, konkrečios problemos neišsprendžiamumo konstatavimas yra svarbus pažinimas. aktas. Masinė problema apibrėžiama atskirų, „pavienių“ problemų serija ir susideda iš reikalavimo rasti bendrą metodą (t. y. A.) joms spręsti. Masinės problemos neišsprendžiamumas reiškia, kad neįmanoma rasti atitikmenų. A. Masės uždaviniai itin būdingi ir svarbūs logikai ir matematikai. Net pavienių problemų sprendimas dažnai yra vertingas būtent dėl ​​to, kad kartu suteikia bendrą metodą visai problemų klasei išspręsti; kartu masinės problemos formulavimas reiškia tam tikros problemų klasės pavertimą viena problema – atsakymo, kad būtų išspręstos visos šios klasės problemos, problema; čia pasireiškia ryšys tarp tokių dialektikos kategorijų kaip individualus, konkretus ir universalus. Masinių problemų vaidmuo lemia A prasmę. Konkrečios masės problemos neišsprendžiamumo nustatymas (t.y. vieno algoritmo, leidžiančio rasti sprendimus visoms atskiroms tam tikros serijos problemoms, nebuvimas) yra svarbiausias pažintinis veiksmas, Parodantis, kad Norint išspręsti konkrečias individualias problemas, iš esmės reikalingi kiekvienai tokiai problemai būdingi metodai. Todėl neišsprendžiamų masinių problemų egzistavimas yra konkretus pažinimo proceso neišsemiamumo įkūnijimas. Sudėtyje. reiškiniai, sudarę pagrindą sąvokos „A.“ formavimuisi, moksle ilgą laiką užėmė svarbią vietą. Daugelis matematikos ir logikos problemų buvo susijusios su tam tikrų konstruktyvių metodų paieška. Tokių metodų paieška ypač suaktyvėjo kuriant patogų matematinį metodą ir logiška simbolika, taip pat supratimas apie esminį šių metodų nebuvimą daugeliu atvejų - visa tai buvo galingas mokslo vystymosi veiksnys. žinių. Suvokimas, kad bet kokios problemos tiesioginiu skaičiavimu neįmanoma išspręsti, lėmė, kad XIX a. aibės-teorinis. sąvokų. Tik po spartaus šios koncepcijos raidos laikotarpio (kurio rėmuose konstruktyvių metodų šiuolaikiniame supratimu klausimas visai nekyla) pastaraisiais dešimtmečiais tapo įmanoma vėl grįžti prie konstruktyvumo klausimų, tačiau jau naujame lygmenyje. , praturtintas kristalizuota „A“ koncepcija. (dar viena Lenino pozicijos dėl žinių raidos spiralės pobūdžio iliustracija). Ir nors sąvoka "A." nėra tokia plataus masto abstrakcija kaip, tarkime, sąvoka „rinkinys“, negalima laikyti atsitiktinumu, kad istoriškai pirmoji iš šių sąvokų atsirado vėliau nei antroji. PAVYZDŽIAI A. Panašiai kaip sąvokos „aibė“, „atitikimas“, „natūralus skaičius“, „santykis“ ir kt., sąvoka „A“. yra pirminis loginis-matematinis sąvoka (viena iš logikos ir matematikos kategorijų). Ji neleidžia formaliai apibrėžti naudojant paprastesnes sąvokas, bet (kaip ir kitos matematinės kategorijos) yra abstrahuota tiesiogiai iš patirties. Sąvoka „A“. galima išmokti tik per pavyzdžius. 1 pavyzdys. Galimi pradiniai duomenys yra baigtinės netuščios kombinacijos, sudarytos iš lazdelių (I), t.y. objektai I, II, III ir kt. A. susideda iš šių. taisyklės (kurių reikia laikytis pradedant nuo 1° taisyklės): 1°. Žemiau pabraukite kairėje esantį pagaliuką ir pereikite prie 2° taisyklės. 2°. Uždėkite dešiniausią pagaliuką ant viršaus ir pereikite prie 3° taisyklės. 3°. Patikrinkite pabrauktą lazdelę ir, jei ji nepabraukta, pereikite prie 4° taisyklės. 4°. Apsvarstykite lazdą iškart po pabrauktos; jei jis nepabrauktas, pereikite prie 5° taisyklės; jei jis pabrauktas, pereikite prie 7° taisyklės įgyvendinimo. 5°. Perkelkite apatinę eilutę nuo pabrauktos lazdelės į kitą iškart po jos ir pereikite prie 6° taisyklės. 6°. Perkelkite viršutinę liniją nuo sukryžiuotos lazdos į esančią prieš pat ją ir pereikite prie 7° taisyklės įgyvendinimo. 7°. Ištrinkite sukryžiuotą lazdelę ir visas po jos esančias lazdeles ir pereikite prie 8° taisyklės. 8°. Ištrinkite apatinę pabrauktos lazdelės eilutę; kas atsitiko, yra rezultatas. Taikydami šį A. deriniui ||||, paimtam kaip pradiniai duomenys, gauname nuosekliai: pagal taisyklę 1° – |||, pagal taisyklę 2° – ? || , pagal taisykles 3°, 4°, 5° – | ? | , pagal taisykles 6°, 3°, 4° – | ? | pagal 7° taisyklę – | ?, pagal 8° taisyklę – || (rezultatas). Jei bandytume taikyti A. deriniui |||, gautume: pagal 1° taisyklę – ? ||, pagal 2° taisyklę – ? | , pagal taisykles 3°, 4°, 5° – | ? , pagal 6° taisyklę – | I |, tuomet reikia pereiti prie 3° taisyklės įgyvendinimo, tačiau 3° taisyklė įmanoma tik su sąlyga, kad pabraukta lazda nebus pabraukta. Taigi dėl esamos situacijos A. nėra nurodymų, kaip elgtis; taip vadinamas neefektyvus sustojimas (sustabdymas, kuris nėra lydimas rezultato). Nesunku pastebėti, kad apskritai jis buvo suformuluotas. A. duoda rezultatą, kai taikoma bet kokiam lyginio skaičiaus lazdelių deriniui, o rezultatas šiuo atveju yra derinys, susidedantis iš pusės pagaliukų skaičiaus; A. neduoda jokio rezultato, kai taikoma jokiam deriniui, susidedančiam iš nelyginio skaičiaus pagaliukų. 2 pavyzdys. Logikoje ir matematikoje vadinama bet kokia baigtinė ženklų rinkinys. „abėcėlė“, joje esantys ženklai yra abėcėlės „raidės“, o galutinė (taip pat ir tuščia) raidžių seka, rašoma viena po kitos k.-l. abėcėlė vadinama „žodis“ šioje abėcėlėje. Pavyzdžiui, arabiški skaitmenys sudaro abėcėlę, o kiekvienas sveikojo skaičiaus dešimtainis vaizdas yra šios abėcėlės žodis. Apsvarstykite dviejų raidžių abėcėlę (a, b): a ir b. Šios abėcėlės žodžių pavyzdžiai: v, aw, vva aaavavv ir kt. Sutikime, kad perėjimą nuo žodžio šioje abėcėlėje prie kito tos pačios abėcėlės žodžio vadinsime „leistinu“ pagal vieną iš toliau nurodytų dalykų. dvi taisyklės: 1) jei žodis turi formą aP, kur P yra savavališkas žodis, pereikite prie žodžio Pb; 2) jei žodis atrodo kaip va?, kur? – bet koks žodis, pereikite prie žodžio Rava. Toliau suformuluojamas pėdsakas, instrukcija: „pradedant nuo k.-l. žodžio (imta kaip pradiniai duomenys), daryti leistinus perėjimus, kol gaunamas aa? formos žodis; kai gaunamas tokio tipo žodis , išmeskite pirmąsias dvi raides, o lieka rezultatas. Kadangi kiekvieną kartą įmanoma ne daugiau kaip vieną perėjimo taisyklę, formuluojame receptas formuoja abėcėlę, kurios galimi pradiniai duomenys yra abėcėlės žodžiai (a, b). Paimkime žodį vavaa kaip pradinius duomenis. Pagal 2 taisyklę gauname waaava. Vėl pritaikius 2 taisyklę, gauname aavaava. Vadovaudamiesi savo nurodymais, turime sustoti; rezultatas (taikant A. žodžiui vavaa) yra vavaa. Pradiniais duomenimis imkime žodį vaava. Pagal 2 taisyklę gauname avaava. Pagal 1 taisyklę gauname vaavav. Toliau gauname nuosekliai avavava, vavavav, vavavava ir kt. Galima įrodyti, kad procesas niekada nesibaigs (t. y. žodis, prasidedantis dviem raidėmis a, niekada neatsiras, o kiekvienam iš gautų žodžių bus galima atlikti galiojantį perėjimą). Taigi A. taikant žodį vaava neduoda jokio rezultato. Paimkime žodį vaav kaip pradinius duomenis. Iš eilės gauname vaavv, avvav, vvavav. Be to, nė viena iš 1 ir 2 taisyklių nėra įgyvendinama, o rezultatas nepasiteisino. Todėl, pritaikius žodį awaav, A. taip pat neduoda rezultatų. Pagrindiniai A. bruožai Pasak A. A. Markovo, A. būdingi šie pagrindiniai bruožai. bruožai: a) algoritmo apibrėžtumas. receptas, kurį sudaro jo tikslumas ir bendras suprantamumas, nepaliekantis vietos savivalei (dėl šio recepto tikrumo algoritminis procesas yra deterministinis: kiekvienas proceso etapas vienareikšmiškai lemia kitą etapą); b) masė, kurią sudaro galimybė kiekvienam A. vadovautis pradiniais duomenimis, kurie kinta tam tikrose ribose; c) veiksmingumas, kurį sudaro dėmesys norint pasiekti norimą rezultatą. A. determinizmas užtikrina galimybę vienam asmeniui bendrauti su kitu asmeniu, kad šis kitas asmuo galėtų atlikti A. nedalyvaujant pirmajam; Ta pati determinizmo savybė leidžia A. vykdymą perkelti į mašiną. Masinis analizės pobūdis suponuoja tam tikrą galimų pradinių duomenų rinkinį (kiekvienai analizei savo). Kaip ši visuma nustatoma – kitas klausimas. Galime daryti prielaidą, kad bet kurį A. atitinkanti galimų pradinių duomenų rinkinys nėra nurodytas atskirai nuo A., o nurodomas natūraliu. vaizdas pagal patį šio A. turinį (taigi, A. pridėjus stulpeliu, atitinkamą aibę sudaro visos skaičių įrašų dešimtainėje sistemoje poros). Kai konkretus objektas pasirenkamas kaip pradiniai A. duomenys, tada kalbame apie A. pritaikymą šiam objektui. Jei A. duoda rezultatą, kai taikomas tam tikram objektui, tai jie sako, kad jis taikomas šiam objektui. A. efektyvumas visai nereiškia, kad A. turi būti taikomas bet kuriam objektui iš atitinkamo galimų pradinių duomenų rinkinio (žr. 1 ir 2 pavyzdžius). Čia dera pastebėti, kad galima sukurti tokį algoritmą, kuriam nėra A. kuris iš savavališkų pradinių pirmojo A duomenų atpažintų, ar pirmasis A. jiems taikytinas, ar ne. Pagrindinės teorijos abstrakcijos A. Mokslinėje. Praktikoje atsirado keletas specifinių savybių. matematikos ir logikos abstrakcijoms. Tai visų pirma tikrosios begalybės abstrakcija, identifikavimo abstrakcija, potencialaus realizavimo abstrakcija. Sov. mokslininkas A. A. Markovas parodė, kad paskutiniai du yra būtini svarstant A. Algoritmą. procesas suskirstytas į skyrius. žingsniai, kurių kiekvienas yra toks elementarus, kad jo galimybė yra faktinė. įgyvendinimas nekelia abejonių. Tuo pačiu metu šių elementarių žingsnių, reikalingų rezultatui gauti, skaičius gali būti toks didelis, kad rezultato pasiekimas gali būti laikomas praktiškai neįmanomu. Tačiau idėja praktiška tam tikro žingsnių skaičiaus įgyvendinamumas arba neįgyvendinamumas yra santykinis. Tai keičiasi tobulėjant kompiuterijai. priemonės (iš esmės konkretaus žingsnio elementarumo idėja taip pat gali keistis). Todėl A. teorijoje jie abstrahuojasi nuo „praktinio pagrįstumo“ ir laiko įmanomu bet kokį baigtinį žingsnių skaičių. Taigi, studijuodamas A. leisti abstrahuoti potencialų įgyvendinamumą, kurį sudaro abstrakcija nuo realių mūsų galimybių ribų. Didelės spartos elektroninio skaičiavimo plėtra. mašinos greitai stumia šias ribas vis toliau. Tai, kas buvo įmanoma tik vakar, šiandien tampa praktiškai įmanoma. Tai priartina aritmetikos teoriją prie skaičiavimo praktikos. mašinas ir leidžia šioms dviem disciplinoms viena kitą praturtinti. Užduočių perkėlimas į mašiną į s/l. serija neįmanoma be išankstinio pasiruošimo. rengiant A. sprendimus. Tokio A. kompiliavimas, kaip taisyklė, turi esminės reikšmės (pavyzdžiui, sprendžiant mašininio vertimo problemą, pagrindinis dalykas yra A. vertimo sudarymas). Potencialių galimybių abstrakcija yra būtina, kai atsižvelgiama ne tik į algoritminius. procesus, bet ir pačius šiuose procesuose dalyvaujančius objektus (įskaitant „pradinius duomenis“ ir „rezultatus“). Taigi, norėdami kalbėti apie bet kokį natūraliąjį skaičių (tiksliau, apie šio skaičiaus rašymą, tarkime, dešimtainėje sistemoje), turime leisti sau laikyti skaičių įrašus tokiais dideliais, kad šie įrašai netilptų į gaublį; taigi ir čia abstrahuojantis nuo fizinio. tokio įrašo pagrįstumą, naudokite galimo pagrįstumo abstrakciją. Apskritai, norint samprotauti apie savavališkai ilgus žodžius tam tikroje abėcėlėje, būtina pasinaudoti galimų galimybių abstrakcija. Objektai, kurių konstravimas ir svarstymas yra įmanomas potencialaus įmanomumo abstrakcijos rėmuose (kai priešpriešinamas faktinės begalybės abstrakcijai), vadinami. konstruktyvūs objektai. Tai yra natūralieji skaičiai, pavaizduoti jų įrašais k.-l. jų žymėjimo sistema, tam tikros abėcėlės žodžiai ir kt., taip pat poros, trynukai ir paprastai baigtinės sekos, sudarytos iš skaičių įrašų, žodžių abėcėlėje ir kt.; racionalieji skaičiai (kurie gali būti pavaizduoti kaip natūraliųjų skaičių tripletai) ir tt Vadinamosios išraiškos taip pat yra konstrukciniai objektai. skaičiavimas, arba formalios sistemos, leidžiančios pastarajai pritaikyti A teorijos aparatą.Bet koks A. (suprantamas kaip receptas) gali būti (parašius šį nurodymą kai kurių simbolių derinio pavidalu). kaip konstruktyvus objektas. Priešingai, objektai, kurių svarstymas neįmanomas be tikrosios begalybės abstrakcijos, nėra tarp konstruktyvių objektų. Taigi, pavyzdžiui, konstruktyvūs objektai nėra realūs skaičiai (Cantor, Dedekind ar Weierstrass prasme), geometriniai. taškai (kadangi tokios abstrakcijos kaip „taško“ analizė veda prie taško kaip iš tikrųjų begalinės mažų kūnų sistemos idėjos) ir kt. Struktūriniai objektai grupuojami natūraliai. agregatas, kurio pavyzdžiai yra visų tam tikros abėcėlės žodžių rinkinys ir apskritai bet koks visų klasės objektų rinkinys. „tipas“ iš sąrašo. aukščiau išvardytų tipų konstrukciniai objektai. Kiekvienas toks struktūrinių objektų rinkinys yra nurodytas jai priklausančių objektų konstravimo būdu. Kiti pagrindiniai Abstrakcija, naudojama svarstant konstruktyvius objektus ir architektūrą, yra identifikavimo abstrakcija. Kai kuriais atvejais apie du objektus kalbama kaip apie identiškus. „Tapatumo“ sąlygos nustatomos kiekvieną kartą, atsižvelgiant į tam tikrą situaciją. Taigi, pavyzdžiui, kai žmogus skaičiuoja popieriuje, šriftas, kuriuo rašomi skaičiai, dažniausiai yra abejingas, o įrašai 1647 ir 1647 laikomi vienodais; tačiau galima įsivaizduoti situacijas, kai lotyniškojo ir kursyvinio šrifto skirtumas yra reikšmingas (kaip, pavyzdžiui, suvokiant žodžius, esančius šioje Filosofinėje enciklopedijoje). Tada abu įrašai jau bus laikomi nelygiaverčiais, tačiau 1647 ir 1647 įrašai vis tiek – įprastais atvejais – bus vienodi (nors fiziškai tai yra skirtingi objektai). Paprastai pripažįstama, kad konstrukciniai objektai susideda iš tam tikrų gana paprastų „elementariųjų dalių“ (kaip ir žodžiai sudaromi iš raidžių), o du konstrukciniai objektai laikomi vienodais, jei jie susideda iš identiškų elementariųjų dalių, išdėstytų ta pačia tvarka. Be „tapatumo“ sąvokos, kuria remiantis, pavyzdžiui, lentoje kreida užrašyti skaičiai ir sąsiuvinyje rašalu užrašyti skaičiai laikomi vienodais, mokytis neįmanoma. Identifikavimo abstrakcija leidžia kalbėti apie tapačius objektus kaip apie vieną ir tą patį objektą. Tai veda prie „abstraktaus objekto“ sąvokos susiformavimo: būtent du identiški konkretūs objektai laikomi to paties abstraktaus objekto atstovais. Kiekvienas A. taikomas identiškiems objektams taip pat veda prie identiškų objektų. Todėl galime manyti, kad kiekvienas A. nurodo abstrakčių konstrukcinių objektų transformavimo procesą. Ši A. savybė (kartu su determinizmu) lemia jų pakartojamumą arba atkuriamumą: A. forma buvo sukurta virš abstrakčių konstrukcinių objektų, A. gali būti pakartotinai atkurta bet kokiems konkrečiam konstrukciniam objektui, leistinam konkrečiam A. turėtų paaiškėti, kad pradiniai duomenys yra tokie patys kaip ir galutiniai duomenys. rezultatus, atsiradusius įgyvendinus k.-l. A., jie visada yra konstruktyvūs objektai (kiekviena „būsena“ yra algoritminė. procesas yra konstruktyvus objektas!). Net ir potencialiai įmanomų procesų neįmanomumas nekonstruktyviuose objektuose taip pat siejamas su būdo nebuvimu atpažinti juos kaip vienodus ar skirtingus (plg. gerai žinomą kibernetikos poziciją apie diskrečių informacijos saugojimo formų pranašumus, palyginti su nepertraukiamomis). ). Yra įvairių požiūrių. dėl metodų, leidžiamų tiriant A. Vienas iš jų, pateiktas konstruktyviosios matematikos ir logikos krypties atstovų, yra tas, kad kadangi A. sampratai formuoti pakanka identifikavimo ir galimo įmanomumo abstrakcijų, tada A. teorijos plėtojimas turėtų būti vykdomas šių abstrakcijų rėmuose. Kitas vaizdas leidžia tirti A. bet kokius paprastai leidžiamus logikos ir matematikos metodus, įskaitant. ir reikalaujantis tikrosios begalybės abstrakcijos. Taigi galima įsivaizduoti atvejį, kai norint įrodyti, kad tam tikras A., pritaikytas tam tikram objektui, duos rezultatą, reikės panaudoti išskiriamojo vidurio dėsnį, kuris glaudžiai susijęs su abstrakcija. tikrosios begalybės. Pagrindinės teorijos sąvokos A. Tarp pagrindinių. sąvokos, kylančios remiantis aritmetikos samprata, apima skaičiuojamosios funkcijos, sprendžiamosios aibės ir išvardijamos aibės sąvokas. Funkcija vadinama apskaičiuojamas, jei yra algoritmas, kuris apskaičiuoja šią funkciją tokiu būdu. prasmė: a) A. yra taikomas bet kuriam objektui, įtrauktam į funkcijos apibrėžimo sritį, ir dėl to pateikia funkcijos reikšmę, kurią jis paima šiam objektui, kaip argumentui; b) A. netaikomas jokiam objektui, neįeinančiam į funkcijos apimtį. Aibė, esanti tam tikroje konstruktyvių objektų rinkinyje (t. y. aibė, sudaryta iš kai kurių šios kolekcijos objektų), vadinama. sprendžiamas (atsižvelgiant į įterpiamąją aibę), jei tik yra A., kuris išsprendžia šią aibę (nurodytos aibės atžvilgiu) į kitą. prasmė: A. taikomas bet kuriam objektui iš apimančios aibės ir dėl to duoda atsakymą į klausimą, ar šis objektas priklauso nagrinėjamai aibei, ar ne. Galiausiai iškviečiama netuščia aibė (žr. tuščią). išvardijamas, jei yra A, kuris išvardija šią aibę kitame. prasmė: a) bet kuriam natūraliajam skaičiui pritaikius A. rezultatas egzistuoja ir priklauso nagrinėjamai aibei; b) kiekvieną nagrinėjamos aibės elementą galima gauti pritaikius aritmetiką kuriam nors natūraliajam skaičiui. Pagal apibrėžimą tuščias rinkinys taip pat paprastai klasifikuojamas kaip suskaičiuojamas. Tą pačią apskaičiuojamą funkciją (atitinkamai išsprendžiamą aibę, išvardijamą aibę) galima apskaičiuoti (atitinkamai, išspręsti, suskaičiuoti) naudojant skirtingus A. Iš apibrėžimų matyti, kad skaičiuojamosios funkcijos argumentai ir reikšmės, elementai sprendžiama arba suskaičiuojama aibė visada yra konstruktyvūs objektai. Konstruktyvių objektų (tam tikro fiksuotų agregatų būrio) pakeitimas jų skaičiais savavališkame algoritme numeracija (t. y. tokia numeracija, kuriai yra algoritmas, leidžiantis gauti jo skaičių iš objekto ir atvirkščiai), galima, kaip dažnai daroma aritmetikos teorijoje, apsiriboti tik tokių skaičiuojamų funkcijų, argumentų ir kurių reikšmės yra natūralūs skaičiai, ir tik tokias sprendžiamas ir suskaičiuojamas aibes, kurių elementai taip pat yra natūralūs skaičiai. Galima įrodyti, kad kiekviena išsprendžiama aibė yra suskaičiuojama. Tuo pačiu metu buvo galima sukurti suskaičiuojamą, bet neišsprendžiamą aibę. Šis pirmasis konkretus pavyzdys (1936 m. amerikiečių mokslininko A. Churcho paskelbtas straipsnyje „Viena neišsprendžiama problema elementariųjų skaičių teorijoje“) apie algoritmo nebuvimą (būtent algoritmo, išsprendžiančio sukonstruotą aibę), buvo šaltinis arba pavyzdys. beveik visi tolesni tokio pobūdžio pavyzdžiai. Paaiškėjo, kad aibė yra išspręsta tada ir tik tada, kai ir ji, ir jos papildinys (apimančią objektų rinkinį) yra suskaičiuojami. Taigi, yra suskaičiuojamųjų aibių papildymai, kurie patys yra nesuskaičiuojami. Logikos teorijos ir logikos ryšys. Nusprendžiamų ir suskaičiuojamų aibių sąvokos yra glaudžiai susijusios su apibrėžimų klasifikacija (čia apsiribojame tik tokiais apibrėžimais, kurių kiekvienas apibrėžia tam tikro tipo objektus arba, kas yra tas pats, tam tikros objektų klasės). Kaip žinote, yra du pagrindiniai. apibrėžimo schemos: „dėl genties ir rūšių skirtumo“ ir „indukcija“. Apibrėžiant „per gentį ir specifinį skirtumą“, nurodomas tam tikras apimantis objektų rinkinys („genus“) ir nurodomas požymis („rūšinis skirtumas“), išskiriantis tarp objektų dekretą, apibrėžtų objektų klasės rinkinį. . Jei; manyti, kad šis apibrėžimas yra konstruktyvus, t.y. kad objektai yra konstruktyvūs ir kad rūšies skirtumo buvimas ar nebuvimas genties elemente yra algoritmiškai atpažįstamas, tada apibrėžtoji aibė pasirodo esanti sprendžiama (ir kiekviena sprendžiama aibė gali būti taip apibrėžta). Taigi tirpūs rinkiniai identifikuojami su rinkiniais, kurie konstruktyviai apibrėžiami pagal gentį ir specifinį skirtumą. Apibrėžimas „indukcija“ susideda iš dviejų dalių: pagrindinės dalies, kurioje yra tam tikras sąrašas objektų, kurie yra paskelbti priklausančiais apibrėžiamai klasei, ir indukcinės dalies, nurodančios, kad jei tokios ir tokios rūšies objektai priklauso apibrėžiama klasė , tada tokio ir tokio tipo objektai, tam tikru ryšiu susieti su pirmaisiais objektais, taip pat priklauso apibrėžtai klasei. (Galimi ir sudėtingesni vadinamųjų kryžminių apibrėžimų atvejai, kai vienu metu viena per kitą apibrėžiamos kelios objektų klasės). Jei manytume, kad apibrėžimas yra konstruktyvus, t.y. objektai yra konstruktyvūs, pradinių objektų sąrašas, esantis pagrindinėje dalyje, yra baigtinis, o perėjimo iš jau apibrėžtų objektų į naujus algoritminius, esančius indukcinėje dalyje taisyklės (ta prasme, kad santykio buvimas ar nebuvimas aptariamas indukcinė dalis atpažįstama per tam tikrą A.), tada prieiname prie aibės, konstruktyviai apibrėžtos indukcija, arba (sinonimo) efektyviai generuojamos aibės sampratos (kadangi toks apibrėžimas nurodo efektyvų generavimo procesą, tam tikrais kurių kūrimas apibrėžti objektai „atsiranda“ arba „sugeneruojami“). Konstruktyvaus indukcinio apibrėžimo pavyzdys yra leistinų šachmatų pozicijų (tai yra pozicijų, kurios žaidimo metu gali atsirasti lentoje) apibrėžimas. Bazinėje dalyje yra vienas vienetas. pradinė padėtis. Indukcinėje dalyje pateikiamos figūrų judesių taisyklės. Taigi efektyviai sukuriamas leistinų pareigybių rinkinys. Kitas efektyviai sugeneruotos aibės pavyzdys yra visų įrodomų k.-l formulių aibė. formali sistema arba skaičiavimas: pagrindinėje įrodomų formulių apibrėžimo dalyje yra aksiomos, indukcinėje dalyje yra išvados taisyklės (aksiomos paskelbiamos įrodomomis pagal apibrėžimą ir tada sakoma, kad jei kokios nors formulės yra įrodomos, tai iš jų gaunamos formulės pagal apibrėžimą išvados taisyklės taip pat yra įrodomos). Generavimo procesas čia yra visų įrodomų formulių įrodinėjimo procesas. Galiausiai, visų falsifikuojamų formulių skaičiavimo procesas taip pat yra veiksmingo generavimo proceso pavyzdys. Efektyvaus generavimo proceso samprata labai glaudžiai susijusi su A sąvoka. Pateikėme efektyvaus generavimo proceso apibrėžimą (apytikslį) remiantis A sąvoka. Savo ruožtu generuojančio proceso sąvoka leidžia apibrėžti jos pagrindu, jei ne pati A sąvoka, tai bet kuriuo atveju skaičiuojamosios funkcijos sąvoka. Tiesą sakant, tegul tam tikras generavimo procesas gali „generuoti“ objektus, turinčius porų formą (x, y), ir tegul bet kurios dvi „sugeneruotos“ poros, kurių pirmieji terminai sutampa, turi tuos pačius antruosius terminus. Tada seka procesas. apibrėžia funkciją y = f(x) tokiu būdu: funkcija apibrėžiama objektui x0 tada ir tik tada, kai x0 yra pirmasis c.-l narys. generuota pora: argumento x0 funkcijų reikšmė šiuo atveju yra lygi antrajam šios poros nariui. Dekrete apibrėžta funkcija. veiksmingo generavimo proceso prasme jis akivaizdžiai apskaičiuojamas [norėdami rasti f(x0), turime išplėsti procesą, kol rasime poras, kurių pirmasis narys yra x0]. Ir atvirkščiai, kiekvieną apskaičiuojamą funkciją galima apibrėžti efektyviu generavimo procesu. Algoritminis procesai ir generuojantys procesai logiškai yra arti vienas kito. požiūris. Kiekvienas iš jų remiasi tik konstruktyviomis koncepcijomis. Skirtumas tarp jų yra tas, kad algoritmas procesas klostosi reikalavimo pagrindu, o generatyvinis – leidimo veikti tam tikru būdu pagrindu. Čia pasireiškia skirtumas tarp būtino ir galimo (algoritminiame procese kiekvienas etapas yra savitai, t. y. būtinai nulemtas ankstesnio etapo, o kai generacinis procesas klostosi po kiekvieno etapo, atsiranda tik galybė galimybių kitam. etapas). Tinkamai patobulinus efektyvaus generavimo proceso sąvoką, paaiškėja, kad kiekvienas efektyviai sugeneruotas rinkinys yra suskaičiuojamas ir atvirkščiai. Ši aplinkybė, kartu su aukščiau pateiktais ryšiais tarp suskaičiuojamų ir sprendžiamų aibių, leidžia daryti tokią išvadą. Bet kuri objektų klasė, kuri leidžia konstruktyvų apibrėžimą per gentį ir specifinį skirtumą, taip pat priima konstruktyvų apibrėžimą pagal indukciją, bet ne atvirkščiai: yra objektų klasė, kuri konstruktyviai apibrėžiama indukcija, bet neleidžia konstruktyviai apibrėžti genties ir specifinis skirtumas; šios klasės objektų papildymas (virš apimančio struktūrinių objektų rinkinio) neleidžia efektyviai apibrėžti indukcinio. Kiekvienas konstruktyvus generatyvinis procesas gali būti pavaizduotas kaip įrodomų tinkamo skaičiavimo formulių gavimo procesas. Todėl klasės, kuri turi ką tik aprašytas savybes, pavyzdys gali būti sudarytas kaip visų įrodomų tam tikro skaičiavimo formulių klasė. Be to, paaiškėjo, kad ši aplinkybė pasitaiko visiems, kurie yra pakankamai suvaržyti. skaičiavimas (pavyzdžiui, predikatų skaičiavimui arba skaičiavimams, kurie formalizuoja aritmetiką), nes jei skaičiavimas yra pakankamai prasmingas, tai jame gali būti išreikštas bet koks efektyvus generavimo procesas. Visų tokio skaičiavimo įrodomų formulių klasė (žinoma, yra išvardijama) nėra sprendžiama, todėl nėra algoritmo, atpažįstančio skaičiavimo formulių įrodomumą; šia prasme skaičiavimas yra neapsprendžiamas. Kadangi visų įrodomų skaičiavimo formulių klasė nėra sprendžiama, ji papildys. jai visų neįrodomų formulių klasė nėra suskaičiuojama ir todėl negali būti gaunama jokiu generavimo procesu; visų pirma neįmanoma sukonstruoti tokio skaičiavimo, kuris „paneigtų“ visas neįrodomas originalo formules. skaičiavimai ir tik jie; Be to, visų šių neįrodomų formulių negalima paneigti originalo priemonėmis. skaičiavimas, todėl pradžioje. skaičiuojant yra vadinamieji neapsprendžiamos (t. y. nei įrodomos, nei paneigiamos) formulės. Šiuose svarstymuose galime apsiriboti tik tokiomis formulėmis, kuriose yra. skaičiavimo interpretacijos išreiškia prasmingus (t. y. teisingus arba klaidingus) teiginius, todėl tarp tokių formulių randama neapsprendžiamų. Iš to išplaukia, kad galima pateikti formulę, kuri išreiškia tikrą sprendimą, bet negali būti įrodyta skaičiuojant; šia prasme sakoma, kad sistema yra nepilna. Pabrėžiame, kad dėl bendro vykdomo samprotavimo pobūdžio neišsamumo savybė būdinga bet kokiam pakankamai apimtam. skaičiavimas. Skaičiavimo neapsprendžiamumo samprata remiasi aritmetikos samprata ir nenuostabu, kad neapsprendžiamumo faktas nustatomas remiantis skaičiavimo teorijos srities tyrimais.Labai reikšminga (ir galbūt iš pirmo žvilgsnio netikėta) faktas, kad tokia bendra logika. buvo išaiškintas toks faktas kaip skaičiavimų neužbaigtumas (faktas, išreiškiantis esminį negalėjimą visiškai formalizuoti loginių išvadų proceso ir pirmą kartą griežtai įrodytas austrų mokslininko K. Gödelio dar 1931 m., prieš „A.“ sąvoką), gali būti išaiškintas. gauti, kaip ką tik matėme, pasitelkus aritmetikos teoriją.. Jau vien ši aplinkybė parodo milžiniškas aritmetikos teorijos taikymo galimybes sprendžiant logikos klausimus. Šios programos neapsiriboja pateiktu pavyzdžiu. Sovietai dar 1932 m. mokslininkas A. N. Kolmogorovas pasiūlė intuicionistų sukurtos konstruktyvios logikos interpretaciją, naudodamas savyje. reiškia, kad neturi nieko bendra su intuicionizmo nuostatomis; būtent Kolmogorovas pasiūlė kiekvieną konstruktyviosios logikos sakinį interpretuoti kaip problemą. Tačiau problemos samprata reikalavo patikslinimo, kurį buvo galima pateikti tik remiantis jau sukurta A teorija. Ameras pasiūlė atitinkamai dvi specifines problemų klases, tinkamas konstruktyviajai logikai interpretuoti. mokslininkas S.K.Kleene 1945 metais ir pelėdos. mokslininkas Yu. T. Medvedevas 1955. 1956 pelėdos. mokslininkas N. A. Shaninas iškėlė naują koncepciją, pagal kurią ne kiekvienas konstruktyvios logikos teiginys reikalauja interpretacijos problemos pavidalu. Šis idėjų ratas apima „konstruktyvizacijos“, arba „konstruktyvių analogų radimo“, klasikos klausimus. matematinės koncepcijos ir pasiūlymai; šių klausimų sprendimas taip pat galimas tik remiantis teorija A. Konstruktyvinimas pagrindinio. matematines sąvokas analizė paskatino dabar kuriamą vadinamąjį. konstruktyvioji matematika analizė. Nurodomi konstruktyvizacijos ir kiti matematiniai būdai. teorijos. Vienas iš pagrindinių Konstruktyvizacijoje naudojamos technikos yra perėjimas nuo tiriamų objektų prie jų pavadinimų, kurie visada yra konstruktyvūs objektai. PROBLEMŲ SPRENDIMAS. Ypatingas masinių problemų atvejis yra problemų sprendimas. K.-l sprendimo problemos. aibės yra algoritmo, kuris išsprendžia šią aibę, sudarymo problema. Atitinkamas atskirų problemų serija čia susideda iš uždavinių, kaip atsakyti į klausimą dėl narystės aibėje, iškeltą kiekvienam objektui iš apimančios konstrukcinių objektų rinkinio. Ir atvirkščiai, bet kokia masinė problema. atskirų atsakymo į klausimą uždavinių serija gali būti laikoma tam tikros aibės sprendimo problema, o būtent tų atskirų problemų aibė, į kurią atsakoma „taip“. Tai aiškiai parodo svarbų problemų sprendimo vaidmenį. Jie buvo tie, kurie buvo tiriami iš požiūrio taško. jų išsprendžiamumas. Iš sprendimo uždavinių išsiskiria įrodomųjų skaičiavimo formulių klasėms keliamos problemos. Visų k.-l įrodomų formulių klasės sprendimo uždavinys. vadinama skaičiuokle taip pat paties skaičiavimo sprendimo problema. (Rusiškuose tekstuose sprendimo problema dažniausiai vadinama „išsprendžiamumo problema“, tačiau „išsprendžiamumo problemą“ geriau vadinti problema: „atsakyti, ar tam tikra problema turi sprendimą“). Neišsprendžiamos masės problemos. Leidimo problema k.-l. Skaičiuojant visada iškyla suskaičiuojamos aibės sprendimo problema. Apskritai visos matematikoje natūraliai iškilusios raiškos problemos pasirodė kaip suskaičiuojamų aibių raiškos problemos. Tai pirmasis aukščiau paminėtas neišsprendžiamo sprendimo problemos pavyzdys (o kartu ir apskritai pirmasis neišsprendžiamos masės problemos pavyzdys), kurį Church paskelbė 1936 m. Tai yra vadinamasis. tapatumo problema asociatyvioms sistemoms, formos neapibrėžtumo įrodymus 1947 m. nepriklausomai vienas nuo kito paskelbė A. A. Markovas ir Ameras. mokslininkas E. L. Postas; šis rezultatas yra įdomus kaip pirmasis pavyzdys, įrodantis masinės problemos, iškilusios (dar 1914 m.) už logikos ir teorijos ribų, neišsprendžiamumo. Tokia yra garsioji grupių tapatumo problema, iškelta dar 1912 m., kurios neišsprendžiamumas buvo įrodyta 1952 m. mokslininkas P. S. Novikovas (Lenino premija, 1957). Kiekviena tapatumo problema susideda iš algoritmo, kuris nustato dviejų tam tikros abėcėlės žodžių atitiktį ar neekvivalentiškumą (ar mes turime reikalą su asociatyvine sistema, ar grupe, priklauso nuo vieno ar kito ekvivalentiškumo apibrėžimo). Todėl tapatumo problemą galima laikyti visų viena kitai lygiaverčių žodžių porų aibės išsprendimo problema (visų galimų žodžių porų aibės atžvilgiu). Be to, kadangi galima nurodyti generacinį procesą visoms žodžių poroms, lygiavertėms viena kitai gauti, visų tokių porų aibė yra suskaičiuojama. Nuoseklumas. Pradedant Bažnyčios pavyzdžiu 1936 m. ir tęsiant iki 1944 m., visi masinių problemų neišsprendžiamumo įrodymai buvo atlikti arba galėjo būti atliekami tokiu būdu. vienodas metodas. Akivaizdžiai neišsprendžiama Bažnyčios nagrinėta problema buvo redukuota į nagrinėjamą masinę problemą, kad jei nagrinėjama masinė problema būtų išspręsta, tai būtų išsprendžiama ir Bažnyčios problema (šia prasme galima sakyti, kad masinės problemos neišsprendžiama). nagrinėjama problema buvo sumažinta iki Bažnyčios problemos neapibrėžtumo įrodymo). Iškilo klausimas, ar tokiu būdu galima nustatyti kokios nors neišsprendžiamos problemos sprendimo neišsprendžiamumą. Šį klausimą, vadinamą sumažinimo problema, Postas iškėlė 1944 m.; Tuo pat metu Postas pateikė keletą neišsprendžiamų sprendimo problemų pavyzdžių, kurių neišsprendžiamumą jis nustatė kitokiu nei aukščiau aprašytas metodas (šie pavyzdžiai dar neišsprendė redukuojamumo problemos, nes liko atviras klausimas, ar jiems buvo neįmanoma rasti tokių neišsprendžiamumo įrodymų, kurie buvo sumažinti, kad įrodytų Bažnyčios problemos neišsprendžiamumą; vėliau kai kuriems iš aukščiau paminėtų pavyzdžių tokie įrodymai iš tikrųjų buvo rasti). Redukuojamumo problema buvo aritmetikos teorijos tyrimų centre iki 1956 m., kai Sovietų Sąjunga ją išsprendė savarankiškai. mokslininkas A. A. Muchnikas ir Ameras. mokslininkas R. M. Friedbergas. Jis sukonstravo neapsprendžiamos problemos sprendimo pavyzdį (suskaičiuojamai aibei), kurio neapsprendžiamumo neįmanoma įrodyti, suvedus Bažnyčios problemą į šią problemą. Muchnikas parodė dar daugiau, būtent, kad ne tik Bažnyčios problema, bet ir jokia kita problema negali būti „standartinė neišsprendžiama problema“ ta prasme, kad bet kokios neišsprendžiamos problemos neišsprendžiamumo nesuskaičiuojamai aibei įrodymas galėtų būti.

taisyklių sistema, suformuluota atlikėjui suprantama kalba, kuri lemia perėjimo nuo priimtinų pradinių duomenų prie tam tikro rezultato procesą ir turi masės, baigtinumo, tikrumo, determinizmo savybių.

Žodis „algoritmas“ kilęs iš didžiojo 8–9 amžių Vidurinės Azijos mokslininko vardo. Al-Khorezmi (Chorezmo istorinis regionas šiuolaikinio Uzbekistano teritorijoje). Iš Al-Khorezmi matematinių darbų mus pasiekė tik du: algebriniai (iš šios knygos pavadinimo gimė žodis algebra) ir aritmetika. Antroji knyga ilgą laiką buvo laikoma dingusia, tačiau 1857 metais Kembridžo universiteto bibliotekoje buvo rastas jos vertimas į lotynų kalbą. Jame aprašomos keturios aritmetinių operacijų taisyklės, beveik tos pačios, kurios naudojamos ir dabar. Pirmosios šios knygos eilutės buvo išverstos taip: „Pasakytas algoritmas. Deramai šlovinkime Dievą, mūsų vadovą ir gynėją“. Taigi pavadinimas Al-Khorezmi tapo Algoritmu, iš kur kilo žodis algoritmas. Terminas „algoritmas“ buvo vartojamas keturioms aritmetinėms operacijoms apibūdinti, ir būtent šia prasme jis pateko į kai kurias Europos kalbas. Pavyzdžiui, autoritetingame anglų kalbos žodyne Websterio naujojo pasaulio žodynas, paskelbtame 1957 m., žodis „algoritmas“ yra pažymėtas „pasenęs“ ir paaiškinamas kaip atliekantis aritmetines operacijas naudojant arabiškus skaitmenis.

Žodis „algoritmas“ vėl pradėtas vartoti, kai atsirado elektroniniai kompiuteriai, nurodant veiksmų, sudarančių tam tikrą procesą, rinkinį. Tai reiškia ne tik tam tikros matematinės problemos sprendimo procesą, bet ir kulinarinį receptą bei skalbimo mašinos naudojimo instrukcijas ir daugybę kitų nuoseklių taisyklių, nesusijusių su matematika; visos šios taisyklės yra algoritmai. Žodis „algoritmas“ šiais laikais žinomas visiems, jis į šnekamąją kalbą įsiliejo taip užtikrintai, kad dabar laikraščių puslapiuose ir žmonių kalbose dažnai aptinkami posakiai „elgesio algoritmas“, „sėkmės algoritmas“ ir kt. politikai.

Turingas A. Ar mašina gali mąstyti?? M., Mir, 1960 m
Uspenskis V. Pašto automobilis. Mokslas, 1988 m
Cormenas T., Leisersonas, Rivesas R. Algoritmai. Konstravimas ir analizė. M., MTsNMO, 1999 m

Raskite „ALGORITHM“.

ALGORITMO SAMPRATA. ALGORITMO SAVYBĖS. ALGORITMŲ TIPAI. ALGORITMŲ APRAŠYMO METODAI

Algoritmas yra tikslus ir suprantamas nurodymas atlikėjui atlikti veiksmų seką, skirtą tam tikrai problemai išspręsti. Žodis „algoritmas“ kilęs iš matematiko Al Khorezmi vardo, kuris suformulavo aritmetinių operacijų atlikimo taisykles. Iš pradžių algoritmas reiškė tik keturių aritmetinių operacijų su skaičiais atlikimo taisykles. Vėliau ši sąvoka pradėta vartoti bendrai, nurodant veiksmų seką, vedančią į bet kurios užduoties sprendimą. Kalbant apie skaičiavimo proceso algoritmą, reikia suprasti, kad objektai, kuriems buvo pritaikytas algoritmas, yra duomenys. Skaičiavimo problemos sprendimo algoritmas yra taisyklių rinkinys, skirtas šaltinio duomenų konvertavimui į rezultatus.

Pagrindinis savybių algoritmai yra:

  1. determinizmas (tikrumas). Tai daro prielaidą, kad su pateiktais pradiniais duomenimis gaunamas nedviprasmiškas skaičiavimo proceso rezultatas. Dėl šios savybės algoritmo vykdymo procesas yra mechaninio pobūdžio;
  2. efektyvumas. Nurodo, kad yra tokių pradinių duomenų, kurių skaičiavimo procesas, įgyvendintas pagal nurodytą algoritmą, turi sustoti po baigtinio žingsnių skaičiaus ir duoti norimą rezultatą;
  3. masinis charakteris. Ši savybė reiškia, kad algoritmas turi būti tinkamas visoms tam tikro tipo problemoms spręsti;
  4. diskretiškumas. Tai reiškia algoritmo nulemto skaičiavimo proceso padalijimą į atskirus etapus, kurių gebėjimas atlikti atlikėjui (kompiuteriui) nekelia abejonių.

Algoritmas turi būti formalizuotas pagal tam tikras taisykles, naudojant specifines vaizdines priemones. Tai apima šiuos algoritmų rašymo būdus: žodinį, formulinį-žodinį, grafinį, operatoriaus schemos kalbą, algoritminę kalbą.

Labiausiai paplitęs dėl savo aiškumo yra grafinis (blokinės diagramos) algoritmų įrašymo metodas.

Blokinė schema yra grafinis algoritmo loginės struktūros atvaizdavimas, kuriame kiekvienas informacijos apdorojimo proceso etapas atvaizduojamas geometrinių simbolių (blokų) pavidalu, kurie turi tam tikrą konfigūraciją, priklausomai nuo atliekamų operacijų pobūdžio. Simbolių sąrašas, jų pavadinimai, rodomos funkcijos, forma ir matmenys nustatomi GOST.

Turint daugybę problemų sprendimo algoritmų, galima išskirti tris pagrindinius skaičiavimo procesų tipus:

  • linijinis;
  • išsišakojimas;
  • cikliškas.

Linijinis yra skaičiavimo procesas, kurio metu visi problemos sprendimo etapai atliekami natūralia šių etapų registravimo tvarka.

Išsišakojimas yra skaičiavimo procesas, kurio metu informacijos apdorojimo krypties pasirinkimas priklauso nuo pradinių arba tarpinių duomenų (nuo bet kurios loginės sąlygos įvykdymo patikrinimo rezultatų).

Ciklas – tai daug kartų kartojama skaičiavimų dalis. Skaičiavimo procesas, turintis vieną ar daugiau ciklų, vadinamas cikliškas . Remiantis vykdymų skaičiumi, ciklai skirstomi į ciklus su tam tikru (iš anksto nustatytu) pakartojimų skaičiumi ir ciklus su neapibrėžtu pakartojimų skaičiumi. Pastarųjų pakartojimų skaičius priklauso nuo tam tikros sąlygos, nurodančios būtinybę atlikti ciklą, tenkinimo. Tokiu atveju būklę galima patikrinti ciklo pradžioje – tada kalbame apie ciklą su prielaida, arba pabaigoje – tada tai ciklas su pobūkle.

Kiekvienas algoritmas susijęs su duomenimis – įvestimi, tarpiniais ir išvesties.

Galūnė. Jis suprantamas dvejopai: pirma, algoritmas susideda iš atskirų elementarių žingsnių arba veiksmų, ir, žinoma, yra daug skirtingų žingsnių, kurie sudaro algoritmą. Antra, algoritmas turi baigtis baigtiniu žingsnių skaičiumi. Jei konstruojamas begalinis procesas, kuris susilieja su norimu sprendimu, tai tam tikru žingsniu jis nutrūksta ir gauta reikšmė laikoma apytiksliu nagrinėjamos problemos sprendimu. Aproksimacijos tikslumas priklauso nuo žingsnių skaičiaus.

Elementarumas (suprantamumas). Kiekvienas algoritmo žingsnis turi būti paprastas, kad operacijas atliekantis įrenginys galėtų jį atlikti vienu žingsniu.

Diskretiškumas. Uždavinio sprendimo procesas vaizduojamas kaip baigtinė atskirų žingsnių seka, o kiekvienas algoritmo žingsnis atliekamas per baigtinį (nebūtinai vienetinį) laiką.

Determinizmas (tikrumas). Kiekvienas algoritmo žingsnis turi būti unikaliai ir nedviprasmiškai apibrėžtas ir neturėtų leisti savavališko interpretavimo. Po kiekvieno žingsnio arba nurodoma, kurį žingsnį atlikti toliau, arba duodama sustabdymo komanda, po kurios algoritmo darbas laikomas baigtu.

Produktyvumas. Algoritmas turi tam tikrą skaičių įvesties dydžių – argumentų. Algoritmo vykdymo tikslas yra gauti konkretų rezultatą, kuris turi labai specifinį ryšį su pradiniais duomenimis. Algoritmas turi sustoti po baigtinio žingsnių skaičiaus, priklausomai nuo duomenų, nurodant, ką laikyti rezultatu. Jei sprendimo nepavyksta rasti, reikia nurodyti, kas šiuo atveju yra laikoma rezultatu.

Masinis personažas. Problemos sprendimo algoritmas kuriamas bendra forma, t.y. ji turėtų būti taikoma tam tikrai problemų klasei, kurios skiriasi tik pradiniais duomenimis. Tokiu atveju pradinius duomenis galima pasirinkti iš tam tikros srities, vadinamos algoritmo taikymo sritis.

Efektyvumas. Ta pati problema gali būti išspręsta įvairiais būdais ir atitinkamai skirtingu laiku bei skirtingomis atminties sąnaudomis. Pageidautina, kad algoritmas sudarytas iš minimalaus žingsnių skaičiaus ir kad sprendimas atitiktų tikslumo sąlygą ir reikalautų minimalių kitų išteklių sąnaudų.

Tikslų matematinį algoritmo apibrėžimą apsunkina tai, kad nustatytų instrukcijų interpretacija neturėtų priklausyti nuo jas vykdančio subjekto. Priklausomai nuo jo intelekto lygio, jis gali arba visai nesuprasti, kas turima galvoje instrukcijose, arba, atvirkščiai, interpretuoti tai neplanuotai.

Taisyklių aiškinimo problema gali būti apeinama, jei kartu su reglamentų formuluotėmis aprašomas vertimo įtaiso konstrukcija ir veikimo principas. Taip išvengiama netikrumo ir dviprasmiškumo suprantant tas pačias instrukcijas. Tam reikia nurodyti kalbą, kuria aprašyta daugybė elgesio taisyklių ar veiksmų seka, taip pat patį įrenginį, galintį interpretuoti šia kalba padarytus sakinius ir žingsnis po žingsnio atlikti kiekvieną tiksliai apibrėžtą procesą. . Pasirodo, tokį įrenginį (mašiną) galima įdiegti tokia forma, kuri išlieka pastovi, nepaisant nagrinėjamos procedūros sudėtingumo.

Šiuo metu galima išskirti tris pagrindinius universalių algoritminių modelių tipus. Jie skiriasi savo pradinėmis prielaidomis dėl algoritmo sąvokos apibrėžimo.

Pirmasis tipas algoritmo sampratą sieja su tradiciškiausiomis matematikos sąvokomis – skaičiavimais ir skaitinėmis funkcijomis. Antrasis tipas yra pagrįstas algoritmo, kaip tam tikro deterministinio įrenginio, galinčio bet kuriuo momentu atlikti tik labai primityvias operacijas, idėja. Šis vaizdavimas užtikrina algoritmo nedviprasmiškumą ir jo žingsnių elementarumą. Be to, ši idėja atitinka kompiuterių kūrimo ideologiją. Pagrindinis šio tipo teorinis modelis, sukurtas 1930 m. Anglų matematikas Alanas Turingas yra Tiuringo mašina.

Trečias tipas– tai savavališkų abėcėlių žodžių transformacijos, kuriose elementarios operacijos yra pakaitalai, t.y. žodžio dalies (žodis – tai abėcėlės ženklų seka) pakeitimas kitu žodžiu. Šio tipo modelio privalumai yra jo maksimali abstrakcija ir galimybė taikyti algoritmo sąvoką savavališko (nebūtinai skaitinio) pobūdžio objektams. Trečiojo tipo modelių pavyzdžiai – amerikiečių matematiko Emilio L. Posto kanoninės sistemos ir sovietinio matematiko A. A. Markovo įvesti normalūs algoritmai.

Antrojo ir trečiojo tipų modeliai yra gana artimi ir skiriasi daugiausia euristiniais akcentais, todėl neatsitiktinai jie kalba apie Posto mašiną, nors pats Postas apie tai nekalbėjo.

Algoritmo įrašymas tam tikra kalba yra programa. Jei programa parašyta specialia algoritmine kalba (pavyzdžiui, PASCAL, BASIC ar kita), tada kalbame apie originali programa. Iškviečiama programa, parašyta kalba, kurią kompiuteris gali suprasti tiesiogiai (dažniausiai dvejetainiais kodais). mašina, arba dvejetainis.

Bet koks algoritmo rašymo būdas reiškia, kad kiekvienas jo pagalba aprašytas objektas nurodomas kaip konkretus dažnai begalinės objektų klasės, kurią galima taip aprašyti, atstovas.

Priemonės, naudojamos rašant algoritmus, daugiausia priklauso nuo to, kas bus atlikėjas.

Jei atlikėjas yra asmuo, įrašas gali būti nevisiškai įformintas, pirmiausia aiškumas ir matomumas. Tokiu atveju įrašymui gali būti naudojamos algoritminės diagramos arba žodinis užrašymas.

Norint rašyti automatų atlikėjams skirtus algoritmus, būtinas formalizavimas, todėl tokiais atvejais naudojamos formalios specialios kalbos. Formalaus žymėjimo būdo pranašumas yra tas, kad jis leidžia tirti algoritmus kaip matematinius objektus; šiuo atveju formalus algoritmo aprašymas yra pagrindas intelektualiai suvokti šį algoritmą.

Algoritmams rašyti naudojamos įvairios priemonės. Įrankio pasirinkimas priklauso nuo vykdomo algoritmo tipo. Išskiriami šie dalykai: Pagrindiniai algoritmų rašymo būdai:

žodinis– algoritmas aprašytas žmonių kalba;

simbolinis– algoritmas aprašomas naudojant simbolių rinkinį;

grafinis– algoritmas aprašomas naudojant grafinių vaizdų rinkinį.

Visuotinai priimtini algoritmo rašymo būdai yra grafinis įrašas naudojant algoritmines diagramas (schemines schemas) ir simbolinis žymėjimas su naudojant tam tikrą algoritminę kalbą.

Algoritmui apibūdinti naudojamos diagramos, pavaizduojančios sujungtą geometrinių figūrų seką, kurių kiekviena reiškia konkretaus algoritmo veiksmo vykdymą. Veiksmų tvarka nurodoma rodyklėmis.

Algoritminėse diagramose naudojami šie grafinių simbolių tipai.

Pradėti Ir galas Algoritmas žymimas naudojant tuos pačius simbolius (21.1 pav.).

Ryžiai. 21.1.

Algoritmo veiksmas, susijęs su naujos reikšmės priskyrimu tam tikram kintamajam, tam tikros vertės transformavimu, norint gauti kitą reikšmę, vaizduojamas simboliu "procesas"(21.2 pav.).

Ryžiai. 21.2.

Algoritmo vykdymo krypties pasirinkimas priklausomai nuo kai kurių kintamųjų sąlygų žymimas simboliu " sprendimas"(21.3 pav.).

Ryžiai. 21.3.

Čia R reiškia predikatą (sąlyginė išraiška, sąlyga). Jei sąlyga tenkinama (predikatas įgauna reikšmę TRUE), tada pereinama į vieną algoritmo žingsnį, o jei neįvykdoma, tada į kitą.

Yra duomenų įvesties ir išvesties operacijų primityvai, taip pat kiti grafiniai simboliai. Šiuo metu juos apibrėžia GOST 19.701–90 (ISO 5807–85) standartas „Vieninga programų dokumentacijos sistema. Algoritmų, duomenų programų ir sistemų schemos. Sutarimai ir vykdymo taisyklės“. Iš viso ESPD rinkinyje yra 28 dokumentai.

Naudojant algoritmo diagramą, lengva sudaryti pradinę programą algoritmine kalba.

Atsižvelgiant į veiksmų seką algoritme, išskiriami linijinės, šakotosios ir ciklinės struktūros algoritmai.

Algoritmuose linijinė struktūra veiksmai atliekami nuosekliai vienas po kito.

Algoritmuose šakota struktūra Priklausomai nuo kokios nors sąlygos įvykdymo ar neįvykdymo, atliekamos skirtingos veiksmų sekos. Kiekviena tokia veiksmų seka vadinama algoritmo šaka.

Algoritmuose ciklinė struktūra priklausomai nuo kokios nors sąlygos įvykdymo ar neįvykdymo, atliekama pasikartojanti veiksmų seka, vadinama ciklo korpusas.Įdėta kilpa yra tokia, kuri yra kitos kilpos korpuse. Iteracinis ciklas yra ciklas, kurio pakartojimų skaičius nenurodytas, bet nustatomas ciklo vykdymo metu.

Tokiu atveju vadinamas vienas ciklo pakartojimas iteracija.

Redaktoriaus pasirinkimas
Lygiai prieš šimtmetį, 1918-ųjų gruodį, pasaulio medicina sulaukė skambaus antausio į veidą, nuo kurio negalėjo atsigauti ilgus dešimtmečius....

Įdomių problemų ir klausimų rinkinys A. Ašigalyje Saulė virš horizonto būna pusę metų, o žemiau horizonto – pusę metų. O Mėnulis? B. Į...

Tikriausiai tik tinginiai nėra girdėję žinių apie bananus ir Pepsi su ŽIV infekcija. Socialiniuose tinkluose periodiškai pasipildo nuotraukų iš...

Hermafroditizmas (pavadintas graikų dievo Hermafrodito vardu, graikų Ερμαφρόδιτος) yra vyrų buvimas vienu metu arba nuosekliai...
Hermafroditizmas (pavadintas graikų dievo Hermafrodito vardu, graikų Ερμαφρόδιτος) yra vyrų buvimas vienu metu arba nuosekliai...
Visas paveldimas ligas sukelia mutacijos – genetinės medžiagos defektai. Chromosomų ligos yra ligos, kurias sukelia...
Žmogaus kūno audinių struktūra ir biologinis vaidmuo: Bendrieji nurodymai: Audinys yra ląstelių, turinčių panašių...
Branduolinės jėgos suteikia trauką – tai išplaukia iš paties stabilių branduolių, susidedančių iš protonų ir...
Santrauka Tema Antisepsio ir aseptikos istorija Rusijoje §1. Žaizdų gydymo metodų idėjos sukūrimas XI amžiaus viduryje Rusijoje...