Введение

Контрольные потоковые графы с 3 типами структур управления могут вычислить любую вычислимую функцию. Теорема о структурированном программировании, также известная как теорема Бёма — Якопини, является результатом теории языков программирования. Она утверждает, что класс графов потока управления (исторически называемых блок-схемами в этом контексте) может вычислить любую вычислимую функцию, если он комбинирует подпрограммы только тремя конкретными способами (структурами управления). Это:

* Выполнение одной подпрограммы, а затем другой (последовательность).
* Выполнение одной из двух подпрограмм в зависимости от значения булева выражения (выбор).
* Повторное выполнение подпрограммы, пока булево выражение истинно (итерация).

Структурированная схема, подчиняющаяся этим ограничениям, особенно ограничение на цикл, подразумевающее единственный выход (как описано далее в этой статье), может, однако, использовать дополнительные переменные в виде битов (хранящиеся в дополнительной целочисленной переменной в оригинальном доказательстве) для отслеживания информации, которую исходная программа представляет положением программы. Конструкция была основана на языке программирования P′′ Бёма. Теорема является основой структурированного программирования — парадигмы программирования, которая избегает команд `goto` и исключительно использует подпрограммы, последовательности, выбор и итерацию.

Происхождение и варианты

Теорема обычно приписывается Дэвиду Харелу, который в 1980 году написал, что статья Бёма — Жакопини пользовалась «всеобщей популярностью», и Клини.

Доказательство Бёма и Якопини

Доказательство в статье Бёма и Якопини проводится индукцией по структуре блок-схемы. Это важная концепция в области обратимых вычислений. Она утверждает, что любое вычисление, достижимое обратимой программой, также может быть выполнено обратимой программой, использующей лишь структурированную комбинацию конструкций управления потоком, таких как последовательности, ветвления и повторения. Любое вычисление, достижимое традиционной необратимой программой, также может быть выполнено обратимой программой, но с дополнительным условием, что каждый шаг должен быть обратимым и требовать дополнительный выход. Более того, любое обратимое неструктурированное вычисление также может быть выполнено структурированной обратимой программой с единственной итерацией без какого-либо дополнительного вывода. Эта теорема закладывает основополагающие принципы построения обратимых алгоритмов в рамках структурированного программирования. Для теоремы о структурированных программах известны оба локальных метода доказательства. Однако для её обратимой версии, хотя глобальный метод доказательства известен, локальный подход, аналогичный подходу Бёма и Якопини, пока не разработан. Это различие является примером, подчеркивающим сложности и нюансы в построении основ обратимых вычислений по сравнению с традиционными вычислительными парадигмами.