2009-07-23 2 views
1

Когда я учился в колледже, у нас была гостевая лекция от Дэвида Парнаса. В нем он упомянул механизм, который используется для гарантии того, что цикл (в то время как цикл, цикл и т. Д.) В какой-то момент безопасно выходит. Он издевался над тем, что никто не знал, что это такое ... грустно, что спустя годы я тоже не знаю. Кто-нибудь знает, что называется этим механизмом?Механизм для обеспечения контура петли

ответ

2

Судя по его области компетенции (которая включает в себя официальные доказательства правильности), я думаю, что он имел в виду loop variant, что является общей методикой, используемой для доказательства завершения цикла.

+0

Я считаю, что это было. спасибо –

2

Этот вопрос кажется нелогичным.

Существует не один gaurantee, чтобы гарантировать, что петлевые выходы, кроме создания состояния сообщения, которое, как вы знаете, будут удалены, то есть увеличьте счетчик, не дотрагивайтесь до счетчика внутри цикла и не получите максимум для его удара.

Вы также можете создать таймер или другую структуру, чтобы проверить, слишком ли занимает цикл.

Что подразумевал здесь Парнас? Универсальный выход в любой цикл, который не мешает логике или просто конструирует надлежащие условия сообщения?

+0

«создайте условие сообщения, которое, как вы знаете, пострадали», является «одним из гарантов для выхода петли». Во всех случаях это очень простое проектирование. В самом деле, вы ** должны ** разработать условие завершения. –

1

Есть много способов, чтобы гарантировать, что петля выходит благополучно:

  1. Не пишите, что это бесконечное
  2. Остальные оставлены как физические упражнения

Серьезно, лучший это упростить и обеспечить стабильное и полностью протестированное условие завершения (то есть код, который проверяет, должна ли она запускать другую итерацию или выход).

То, что вы описали, вполне может быть переведено в halting problem, что является хорошо известной проблемой без решения.

Кроме того, поиск в Google показывает, что Дэвид Парнас работает в Университете Лимерика, вы можете позвонить им и попросить поговорить с ним. Я уверен, что он был бы рад, вы все еще пытаетесь узнать от того, что он научил тебя тогда :)

+0

+1: Это дисциплина дизайна, обеспечивающая окончание. –

1

Вашего приглашенного лектора может быть ссылкой на Cycle Detection, способ обнаружения бесконечных циклов.

This blog post описывает обнаружение бесконечных циклов в связанном списке. Интересно, что он использует ту же терминологию, что и статья Википедии.

Смежные вопросы