• Как доказать отсутствие алгоритма для решения задачи?

    arusef
    @arusef
    Novice .NET dev
    В общем случае, задачи такого рода сводятся к, наоборот, доказательству существования алгоритма.
    Есть несколько универсальных базовых методов доказательств: от противного, индукция, инвариант, и т.д.

    Для решения такой задачи, вам нужно выделить несколько основных тезисов, касающихся вашей проблемы:
    1. Исходные данные
    2. Варианты возможных действий с ними
    3. То, как изменяются данные в процессе
    4. Что должно получиться на выходе
    Основываясь на этом можно применить вышеуказанные методы, например, предположить, что такой алгоритм существует, или, например, составить шаги индукции и определить, для всех ли случаев выполняются условия. В таком контексте, ваши исходные условия - это аксиомы, они нерушимы и не требуют доказательств. На основе аксиом можно строить некоторые леммы - такие себе "частичные доказательства" - какие-то более сложные положения, которые выводятся из аксиом, и помогают позже в конечном доказательстве. Следует также помнить, что условие доказательства можно искусственно усилить, для того, чтобы легче было доказать всю вашу теорему.
    Больше об этом можно послушать в лекциях от MIT.
    Ответ написан
    Комментировать