Доказательство обнаружения начала цикла в связанном списке [дубликаты]
На этот вопрос уже есть ответ:
Объясните, как работает поиск начального узла цикла в связанном списке циклов? 20 ответовИз нескольких постов внутри stackoverflow и снаружи я узнал, как определять циклы в связанном списке, длину цикла. Я также нашел метод определения начала цикла.
Вот снова шаги для справки.
Обнаружение петли:
Имеют два указателя, классически называемых зайцем и черепахой. Переместите зайца на 2 шага, а черепаху на 1. Если они встретятся в какой-то момент, то, несомненно, существует цикл, и точка встречи, очевидно, находится внутри цикла.
Поиск длины цикла:
Сохраняйте один указатель фиксированным в месте встречи, в то время как другой приращивайте, пока они снова не станут прежними. Увеличивайте счетчик по мере продвижения, и значение счетчика при встрече будет равняться длине цикл
Найди начало цикла
Возьмите один указатель в начало списка, а другой оставьте в месте встречи. Теперь приращение как на единицу, так и точка встречи - начало цикла. Я проверил метод, используя некоторые случаи на бумаге, но я не понимаю, почему он должен работать.
Кто-нибудь может предоставить математическое доказательство того, почему этот метод работает?