У меня есть следующая проблема. На данной горе застряла девушка, и есть два пути. Один путь приведет ее к спасателю (левый поворот), а второй (правый поворот) приведет ее в джунгли, откуда нет шансов вернуться. Теперь она встречает группу людей, которые говорят n, которые всегда говорят правду, и некоторые люди говорят, что m может/не может говорить правду. Нам дано, что n больше m. Поэтому девушка может попросить случайного человека - каким образом это спасатели, проблема в том, что она не знает, о какой из них она просит (n или m). Я хочу знать, есть ли алгоритм Big Theta (n + m), чтобы узнать, сколько людей говорит правду? или, строго говоря, значение n?Оптимальный алгоритм
Я могу решить более простую версию этого. Скажи там только два человека, 1 всегда говорит правду, а другой всегда лжет. Она может задать вопрос, для которого оба они дадут тот же ответ. Например: говорящему по правде, она может спросить: «Эй, по словам другого парня, каким образом он берет спасителя?». Истинный оратор скажет - правый поворот (потому что другой парень лежит). Теперь она может задать тот же вопрос лжецу - он ответит, сказав - правый поворот (потому что истинный ответ оставлен, но поскольку он всегда лжет, он скажет правильно). Теперь она может уйти налево, зная, что это правильный ответ.
Проблема в том, что в первом случае второй набор людей может/не может лежать. Но я думаю, что ключ состоит в том, что n> m i.e. Число людей, которые всегда говорят правду, больше, чем число людей, которые могут/не могут говорить правду. Так выглядит, что это что-то отменит.
Любая помощь будет оценена по достоинству. Благодарю.
'm' люди, некоторые из которых всегда лгут, а некоторые из них всегда говорят правду, или все они могут лгать или говорить правду по любому вопросу? – Dukeling
Этот вопрос кажется не по теме, потому что это головоломка, это не имеет большого отношения к программированию. – Dukeling
[Загадочный сайт] (http://area51.stackexchange.com/proposals/45128) может быть хорошим местом для этого, как только он встанет и работает. – Dukeling