Учитывая, что программа P, написанная на C++, могу написать алгоритм, который найдет, если программа P реализует определенный алгоритм? Есть ли какой-либо алгоритм, который решает эту проблему. Является ли эта проблема разрешимой?Можно ли написать верификатор, который проверяет, реализует ли данная программа данный алгоритм?
Например, я попрошу человека реализовать быстрый алгоритм сортировки, и теперь, если я хочу убедиться, что человек действительно реализовал быстрый алгоритм сортировки. Человек может фактически реализовать какой-то другой алгоритм сортировки, и он будет производить правильный вывод и передать все тестовые файлы (тестирование черного ящика). Один из способов сделать это - изучить исходный код. Я хочу избежать этого ручного усилия и хочу написать программу, которая может выполнять эту работу. Вопрос: «Возможно ли это?».
Как насчет того, чтобы человек использовал абстрактный интерфейс для некоторых операций низкого уровня, таких как доступ к элементам и их замена. Затем передайте им конкретный объект, который гарантирует, что вызывающий абонент вызовет эти операции так, как это было бы быстро. –