Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Dowód poprawności algorytmu - Wikipedia, wolna encyklopedia

Dowód poprawności algorytmu

Z Wikipedii

Dowód poprawności algorytmu jest rozumowaniem matematycznym prowadzącym do formalnego wykazania, że dany algorytm przy poprawnych danych wejściowych da nam wynik spełniający wymagania, np. że algorytm quicksort po podaniu mu niepustej tablicy elementów porównywalnych na wyjściu da nam tablicę zawierającą te same elementy, ale uporządkowane w kolejności od najmniejszego do największego.

Dowód poprawności algorytmu zawsze składa się z dwóch części:

  • dowód, że jeśli algorytm się zakończy, to da poprawny wynik,
  • dowód, że przy poprawnych danych wejściowych algorytm zawsze się zakończy.

Do dowodzenia poprawności algorytmów wykorzystywane są zazwyczaj pewne formalizmy matematyczne wiążące ze sobą warunek wstępny, kod oraz warunek końcowy. Większość tych formalizmów opiera się o logikę Hoare'a.

W ogólnym przypadku pytanie, czy dany algorytm jest poprawny jest nierozstrzygalne, dla większości języków opisu algorytmów nierozstrzygalne są nawet pytania:

  • czy dane dwa algorytmy dają taki sam wynik,
  • czy dany algorytm dla poprawnych danych wejściowych się kończy (nawet przy założeniu, że zawsze jesteśmy w stanie zweryfikować poprawność danych wejściowych).

Są jednak takie języki w których np. da się udzielić odpowiedzi na drugie pytanie. Do takich języków należą np. niektóre z odmian rachunku lambda takie jak System F.

[edytuj] Podejście formalne

Niech v=[v_0,v_1,\cdots ,v_n]^T oznacza wektor danych wejściowych algorytmu Φ, w niech będzie wektorem wynikowym w=[w_0,w_1,\cdots ,w_m]^T. Przebieg algorytmu Φ dla dowolnych (w granicy zakładanej poprawności) danych jest jednoznacznie wyznaczony przez ciąg przekształceń:

\Phi (v)=\Phi _0(v)=\Phi _1(v')=\Phi _2(v'')=\cdots =\Phi _{k-1}(v^{(k-1)})=\Phi _k(v^{(k)})=w

gdzie v',v'',\cdots ,v^{(k)} są danymi przejściowymi.

W praktyce należy wykazać, że ciąg przekształceń jest zawsze skończony, oraz wektor w zawiera poprawne dane. Najczęściej stosowaną techniką jest Indukcja matematyczna, z zastosowaniem niezmienników pętli.

[edytuj] Przykład

Poprawność algorytmu Euklidesa można dowieść, pokazując, że zdanie:

NWD(a,b)=NWD(b,a\ mod\ b)

jest niezmiennikiem pętli algorytmu NWD.

Ponieważ 0\le a\ mod\ b<a wartość drugiego argumentu spada po każdej iteracji, więc algorytm zawsze zakończy działanie.

Z niezmiennika pętli wynika:

NWD(a,b)=NWD(b,a\ mod\ b=c)=NWD(c,b\ mod\ c)=\cdots=
=NWD(z,0)=z\

A więc, po ostatnim przebiegu pętli algorytm NWD zwróci wartość NWD(a,b).

[edytuj] Zobacz też:


Zalążek artykułu To jest tylko zalążek artykułu związanego z informatyką. Jeśli potrafisz, rozbuduj go.

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com