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

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

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

13
Как обмануть эвристику «попробуй несколько тестов»: алгоритмы, которые кажутся правильными, но на самом деле неверны
Чтобы попытаться проверить, является ли алгоритм для какой-либо проблемы правильным, обычная отправная точка состоит в том, чтобы попытаться запустить алгоритм вручную на нескольких простых тестовых примерах - попробуйте на нескольких примерах проблемных примеров, включая несколько простых «угловых случаев ». Это отличная эвристика: это отличный способ быстро отсеять множество неверных попыток …

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

1
Как доказать правильность алгоритма тасования?
У меня есть два способа составить список предметов в случайном порядке, и я хотел бы определить, являются ли они одинаково справедливыми (беспристрастными). Первый метод, который я использую, состоит в том, чтобы создать весь список элементов, а затем выполнить случайное перемешивание (скажем, случайное перемешивание Фишера-Йейтса). Второй метод - это скорее итеративный …

2
Существуют ли программы, которые никогда не останавливаются и не имеют доказательств отсутствия завершения?
Как черные дыры в информатике. Мы можем только знать, что они существуют, но когда у нас есть один из них, мы никогда не узнаем, что это один из них.

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

6
Нахождение максимального 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 = i ^ …

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

1
Микрооптимизация для вычисления расстояния редактирования: это правильно?
В Википедии дается реализация восходящей схемы динамического программирования для расстояния редактирования. Это не следует определению полностью; внутренние ячейки вычисляются следующим образом: 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] + 1, // a deletion d[i, j-1] …


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

3
Можно ли доказать безопасность потока?
Имея программу, состоящую из переменных и инструкций, которые модифицируют эти переменные, и примитива синхронизации (монитор, мьютекс, синхронизированный java или блокировка C #), можно ли доказать, что такая программа является поточно-ориентированной? Есть ли даже формальная модель для описания таких вещей, как безопасность потоков или условия гонки?
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.