Вопросы с тегом «correctness-proof»

Вопросы, касающиеся доказательств правильности алгоритмов.

190
Почему запись математических доказательств более надежна, чем написание компьютерного кода?

Я заметил, что мне гораздо проще записывать математические доказательства без ошибок, чем записывать компьютерную программу без ошибок. Кажется, это нечто более распространенное, чем просто мой опыт. Большинство людей постоянно ошибаются в программном обеспечении, и у них есть компилятор, который...

106
Как обмануть эвристику «попробуй несколько тестов»: алгоритмы, которые кажутся правильными, но на самом деле неверны

Чтобы попытаться проверить, является ли алгоритм для какой-либо проблемы правильным, обычная отправная точка состоит в том, чтобы попытаться запустить алгоритм вручную на нескольких простых тестовых примерах - попробуйте на нескольких примерах проблемных примеров, включая несколько простых «угловых...

29
Как доказать, что жадный алгоритм верен

У меня есть жадный алгоритм, который, я подозреваю, может быть правильным, но я не уверен. Как мне проверить, правильно ли это? Какие методы использовать для доказательства правильности жадного алгоритма? Существуют ли общие модели или методы? Я надеюсь, что это станет справочным вопросом, на...

24
Как доказать правильность алгоритма тасования?

У меня есть два способа составить список предметов в случайном порядке, и я хотел бы определить, являются ли они одинаково справедливыми (беспристрастными). Первый метод, который я использую, состоит в том, чтобы создать весь список элементов, а затем выполнить случайное перемешивание (скажем,...

18
Пример алгоритма, в котором отсутствует доказательство правильности

У нас есть логика Хоара. Почему все еще возможно, что алгоритм верен, но нет никаких доказательств того, что он верен? Предположим, что алгоритм выражен в C. Тогда мы можем шаг за шагом утверждать, что он делает то, что должен делать. Итак, мой вопрос: Приведите мне пример алгоритма, который...

14
Нахождение максимального XOR двух чисел в интервале: можем ли мы сделать лучше, чем квадратичное?

Предположим, нам даны два числа и и мы хотим найти для .lllrrrmax(i⊕j)max(i⊕j)\max{(i\oplus j)}l≤i,j≤rl≤i,j≤rl\le i,\,j\le r Наивный алгоритм просто проверяет все возможные пары; например, в ruby ​​у нас будет: def max_xor(l, r) max = 0 (l..r).each do |i| (i..r).each do |j| if (i ^ j > max) max...

10
Как получить инвариант цикла в этом алгоритме поиска границ?

Первоначально по математике. Но там без ответа. Рассмотрим следующий алгоритм. u := 0 v := n+1; while ( (u + 1) is not equal to v) do x := (u + v) / 2; if ( x * x <= n) u := x; else v := x; end_if end_while где u, v и n - целые числа, а операция деления - целочисленное деление. Объясните, что...

10
Микрооптимизация для вычисления расстояния редактирования: это правильно?

В Википедии дается реализация восходящей схемы динамического программирования для расстояния редактирования. Это не следует определению полностью; внутренние ячейки вычисляются следующим образом: if s[i] = t[j] then d[i, j] := d[i-1, j-1] // no operation required else d[i, j] := minimum ( d[i-1, j]...

10
Пытаясь понять это быстрое доказательство правильности

Это доказательство является доказательством по индукции и состоит в следующем: P (n) - это утверждение, что «Быстрая сортировка правильно сортирует каждый входной массив длины n». Базовый случай: каждый входной массив длины 1 уже отсортирован (P (1) выполняется) Шаг индукции: fix n => 2....

9
Можно ли доказать безопасность потока?

Имея программу, состоящую из переменных и инструкций, которые модифицируют эти переменные, и примитива синхронизации (монитор, мьютекс, синхронизированный java или блокировка C #), можно ли доказать, что такая программа является поточно-ориентированной? Есть ли даже формальная модель для описания...

9
Могут ли методы проверки программы предотвратить появление ошибок жанра Heartbleed?

На вопрос об ошибке Heartbleed Брюс Шнайер написал в своей «Крипто-грамме» от 15 апреля: «Катастрофический» - правильное слово. По шкале от 1 до 10 это 11 '. Несколько лет назад я читал, что ядро ​​определенной операционной системы строго проверено современной системой проверки программ....