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