2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 задачи о взвешиваниях, и подобные им
Сообщение28.11.2005, 03:21 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Только что разбиралась Помогите найти радиоактивные мячи- всего 15, 2 плохие, 7 опыта. Могу привести еще одну классическую задачу: За три взвешивания на равноплечных весах без гирь найти одну фальшивую монету (неизвестно, она легче или тяжелее) из двенадцати. Вроде, такие задачи относятся к комбинаторике.

Вопрос(ы): а существуют ли общие методы построения решений подобных задач? Определения достаточного количества тестов (оценка снизу - информационная - понятна, а более точная)? Есть ли какая-нибудь теория, или это остается делом натырканости?

 Профиль  
                  
 
 
Сообщение28.11.2005, 09:56 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Мне известны следующие факты:

1. Пусть дано n монет, среди них не более одной фальшивой (может не быть ни одной), причем неизвестно - легче или тяжелее фальшивая монета, требуется разрешить ситуацию за k взвешиваний. Тогда n и k связаны следующим соотношением: $n\le\frac{3^k-3}{2}$, причем эта оценка достигается.

Этот результат описывает как раз задачу с 12 монетами и 3 взвешиваниями. Большее число монет тремя взвешиваниями обработать нельзя.

2. Пусть в условиях предыдущей задачи мы имеем (помимо данных n) еще одну контрольную (заведомо настоящую) монету. Тогда соотношение между параметрами имеет вид $n\le\frac{3^k-1}{2}$, причем эта оценка достигается.

Таким образом, если у нас есть 13 неизвестных монет плюс одна настоящая, то эту ситуацию можно также разрешить тремя взвешиваниями. Большее число монет тремя взвешиваниями разрешить нельзя.


Думаю, что есть и другие результаты подобного рода.

 Профиль  
                  
 
 
Сообщение28.11.2005, 18:48 
Заслуженный участник
Аватара пользователя


09/10/05
1142
Типовых решений таких задач на самом деле очень много, просто все они находят своё примененние в информатике. Алгоритмы, которые делают поиски или сортировку по array и stack, представляют собой как раз общии решения таких вот задач на переборы... MergeSort, например, очень близок к моему решению. Формула вычисления - это примерный расход времени на перебор.

 Профиль  
                  
 
 
Сообщение29.11.2005, 14:42 
Вообще можно 13 монет проверить за три взвешивания:)

  
                  
 
 
Сообщение29.11.2005, 16:38 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Star писал(а):
Вообще можно 13 монет проверить за три взвешивания:)


Это если известно, что фальшивая среди них точно есть. И при этом мы ее находим, но не всегда можем сказать - легче она или тяжелее.

А если фальшивой монеты может не быть, тогда 13 за три попытки не разрешить.

 Профиль  
                  
 
 
Сообщение29.11.2005, 20:00 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
ψυ& писал(а):
Типовых решений таких задач на самом деле очень много, просто все они находят своё примененние в информатике. Алгоритмы, которые делают поиски или сортировку по array и stack, представляют собой как раз общии решения таких вот задач на переборы... MergeSort, например, очень близок к моему решению. Формула вычисления - это примерный расход времени на перебор.

А можно пример таких алгоритмов из информатики? Все, что я могу вспомнить, основано на попарном сравнение, а все подобные задачи - на групповом сравнении, или измерении. Соответсвенно и результаты - $n-1$ супротив $\log_3 {(2 n + 1)}$.

Я не уверен, что решение этой задачи можно охарактеризовать, как перебор. Здесь скорее довольно нетривиальная переменная структура данных, возникающая в зависимости от результатов предыдущих измерений. И, вопрос-то, в общем, сводится к тому, как создавать и представлять подобные структуры, чтобы максимально использовать информацию предыдущих измерений.

Еще одна сходная в чем-то проблема - игра "быки и коровы" (mastermid и иже с ним). Кое-что разобрано в "Этюды для программистов" Уэзерелла. Но единственный способ, который я знаю, для построения оптимальной игровой программы требует заметной памяти и полных переборов. Не оптимально, я бы пытался решить эту задачу методами эволюционного программирования (по крайней мере, для построения автоматического партнера).

 Профиль  
                  
 
 
Сообщение01.12.2005, 21:16 
Заслуженный участник
Аватара пользователя


09/10/05
1142
Привет!

Вообщем-то Вы конечно правы, но можно ведь сделать и сортировку (хотя в случае с монетами это выглядет туповато). На самом деле я сейчас так на вскидку не смогу сказать, но различные алгоритмы имеют различные complexity. К тому-же надо различать между time и place complexity.. Мой совет: прочитать книгу Вирта (по моему она есть в библиотеке), она хоть и старовата, но там более менее всё подробно описано (хотя конечно есть и более современные и хорошии)

 Профиль  
                  
 
 
Сообщение01.12.2005, 22:27 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
ψυ& писал(а):
но можно ведь сделать и сортировку

Конечно можно, но не за четыре взвешивания. Кроме того, окончив сортировку, еще надо решить, которая из монет фальшивая - первая или последняя.

ψυ& писал(а):
... различные алгоритмы имеют различные complexity. К тому-же надо различать между time и place complexity..

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

ψυ& писал(а):
Мой совет: прочитать книгу Вирта

Непременно посмотрю. И "Алгоритмы + структуры данных = программы", и "Алгоритмы и структуры данных". Я их читал давно, забыл все. Если Вы сможете вспомнить место более точно, Вы мне очень поможете.

 Профиль  
                  
 
 
Сообщение07.12.2005, 12:07 


22/11/05
1
PAV писал(а):
Мне известны следующие факты:

1. Пусть дано n монет, среди них не более одной фальшивой (может не быть ни одной), причем неизвестно - легче или тяжелее фальшивая монета, требуется разрешить ситуацию за k взвешиваний. Тогда n и k связаны следующим соотношением: $n\le\frac{3^k-3}{2}$, причем эта оценка достигается.

Этот результат описывает как раз задачу с 12 монетами и 3 взвешиваниями. Большее число монет тремя взвешиваниями обработать нельзя.

2. Пусть в условиях предыдущей задачи мы имеем (помимо данных n) еще одну контрольную (заведомо настоящую) монету. Тогда соотношение между параметрами имеет вид $n\le\frac{3^k-1}{2}$, причем эта оценка достигается.

Таким образом, если у нас есть 13 неизвестных монет плюс одна настоящая, то эту ситуацию можно также разрешить тремя взвешиваниями. Большее число монет тремя взвешиваниями разрешить нельзя.


Думаю, что есть и другие результаты подобного рода.

А вы не подскажите, как эти неравенства получить ?

 Профиль  
                  
 
 Доказательство
Сообщение08.12.2005, 11:26 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Доказательство приведенных мною неравенств состоит из 5 шагов. Я узнал его от В.Лебедева на одном семинаре в Институте Проблем Передачи Информации.

1. Общая теоретико-информационная оценка. Пусть некоторая система может находиться в одном из S состояний. Требуется определить состояние системы с помощью серии проверок, каждая из которых дает один из q возможных результатов. Тогда если эта задача решается за k проверок, то должно выполняться неравенство $S\le q^k$, поскольку число всех возможных результатов проверок не может быть меньше числа состояний.

2. Рассмотрим задачу с n монетами, среди которых не более одной фальшивой, причем фальшивая может быть как легче, так и тяжелее. В этой задаче $S=2n+1$, $q=3$. Отсюда следует, что теоретико-информационная оценка имеет вид $n\le\frac{3^k-1}{2}$.

3. Рассмотрим вспомогательную задачу. Пусть монеты разбиты на две группы A и B: $n=a+b$. Пусть фальшивая точно имеется, причем известно, что если она в группе A, то она легче настоящей, а если в группе B - то тяжелее. Тогда число состояний $S=n$ и общая теоретико-информационная оценка имеет вид $n\le 3^k$.

Покажем, что эта оценка достигается. Используем индукцию по k. Основание $k=1$ легко проверить непосредственно. (Примечание: если $a=b=1$, то для решения требуется одна настоящая монета. Если мы используем индукцию, то эта монета появится после первого же шага.) Далее, для произвольного k мы делим все монеты на три группы G1, G2 и G3 так, чтобы объемы $|G_1|=|G_2|=3^{k-1}$, $|G_3|\le 3^{k-1}$, и так чтобы в G1 и G2 было поровну монет из групп A и B. Взвешиваем G1 и G2. Если они равны, то фальшивая монета в группе G3 и по индукции мы находим ее за $k-1$ взвешиваний. Если G1 весит меньше G2, то берем монеты из групп $A\cap G_1$ и $B\cap G_2$ (если G1 весит больше G2, то наоборот). В новой группе ровно $3^{k-1}$ монет и по индукции мы находим фальшивую за $k-1$ взвешиваний.

4. Покажем, что если в основной задаче (пункт 2) имеется еще одна настоящая монета, то приведенная там оценка достигается. Также используем индукцию по k. Основание k=1 тривиально. Шаг индукции. Отбираем $m=\frac{3^{k-1}-1}{2}$ монет. Остается $n-m\le 3^{k-1}$ монет. Если это число нечетное, то добавляем имеющуюся в наличии настоящую монету, затем делим пополам и взвешиваем. Если получилось равенство - то фальшивая находится среди отобранных m, и мы по индукции находим ее за k-1 проверок. Если же не равны, то подозрительные $\le 3^{k-1}$ монет оказываются разделенными на две группы и согласно результату вспомогательной задачи мы также найдем фальшивую за k-1 взвешиваний.

5. Покажем, что если в основной задаче нет дополнительной правильной монеты, то оценку можно улучшить: $n\le\frac{3^k-3}{2}$. Допустим, что k проверок достаточно. Первая проверка всегда заключается в том, что сравниваются между собой две группы по x монет. Если в результате получилось равенство, то за оставшиеся k-1 проверок должны решить исходную задачу с n-2x монетами. Согласно общей оценке тогда должно выполняться неравенство $n-2x\le\frac{3^{k-1}-1}{2}$. Заметим, что это условие не только необходимое, но и достаточное (согласно пункту 4), так как дополнительные настоящие монеты уже имеются. Если же в результате первого взвешивания получили неравенство, то находимся в условиях пункта 3. Необходимым и достаточным условием для этого является неравенство $2x\le 3^{k-1}$. Заметим, что левая часть четная, а правая начетная, поэтому можно усилить неравенство следующим образом: $2x+1\le 3^{k-1}$. Складывая оба полученных неравенства получаем ровно то, что требовалось. Чтобы показать, что это неравенство достаточно, осталось показать, что всегда можно подобрать x так, чтобы оба приведенных неравенства выполнялись, а они были достаточные.

Вот и все.

 Профиль  
                  
 
 Найти фальшивую монету.
Сообщение08.07.2006, 07:19 
Заслуженный участник


09/02/06
4397
Москва
Среди n монет одна фальшивая (различается по весу). Найти минимальное количество взвешиваний, гарантирующих нахождение фальшивой монеты при условии:
1) Фальшивая монета легче настоящей.
2) Заранее неизвестно легче или тяжелее фальшивая монета.

 Профиль  
                  
 
 
Сообщение08.07.2006, 08:02 


20/02/06
113
Ответ типа :
\[
\log _2 n ?
\]
Или существуют более короткие способы?
Это правда когда мне совсем все равно какого она веса.

 Профиль  
                  
 
 
Сообщение08.07.2006, 08:27 
Заслуженный участник


09/02/06
4397
Москва
Существует метод определения покороче.

 Профиль  
                  
 
 
Сообщение08.07.2006, 11:48 
Экс-модератор
Аватара пользователя


23/12/05
12063
C0rWin писал(а):
Ответ типа :
\[\log _2 n ?\]
Или существуют более короткие способы?

Делить надо на три, а не на две части - если две равны, то фальшивая в третьей

 Профиль  
                  
 
 
Сообщение08.07.2006, 21:48 


12/02/06
110
Russia
Руст, а ответ можно, или еще не время?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group