Начальный вопрос относительно логики очень простого доказательства правильности
-
29-09-2020 - |
Вопрос
Я пытаюсь ознакомиться с доказательствами правильности и нуждается в некоторой помощи.В Доказательство для Sampleflect (P.25), почему мы предполагаем, что мы как $ a '[i] и $ 1 \ leqя \ leq k $ ?Я не совсем уверен, почему мы делаем это, так как текст говорится, что «из того, что значит для алгоритма для удовлетворения его спецификации, любые доказательства правильности начнутся с предположения о предположении о состоянии».Однако не является предварительным условием здесь просто предварительное предварительное условие Simplelect, как указано здесь (стр. 6)?
Решение
Оба предположения, которые вы упоминаете, являются «местными» в том смысле, что они являются субклавом в доказательстве и не являются частью условий теоремы. Вы также можете увидеть их как определение локальной переменной $ i $ , эквивалентная формулировка двух предположений будет
Пусть $ i $ Будьте таким, что $ A '[I] и $ 1 \ leq i \ leq n $ .
Пусть $ i $ Будьте таким, что $ 1 \ leq i \ leq k $ .
Доказательство подсчитывает количество значений $ i $ , для которых эти операторы выполняются, что показывает, что постусловие выполняется.
Я думаю, что часть вашей путаницы следует из некоторого неявного языка в этих параграфах, поэтому я перепишу один из них в полном объеме быть более явными. Первый абзац из книги читает:
Более явная фразы выглядит следующим образом:
Пусть $ i $ Будьте так, чтобы $ a '[i] И $ 1 \ leq i \ leq n $ . Если $ k , то $ A '[I] противоречит С постусловием сортировки, поэтому $ i \ leq k $ . Если $ i= k $ , то $ a '[i]= a' [k] $ , Что противоречит нашему определению $ i $ .
Общая структура второго абзаца аналогична, поэтому вы сможете понять его, если вы сможете понять первую.