![]() |
|
Задача. Ключи и замки | ☑ | ||
---|---|---|---|---|
0
Ненавижу 1С
гуру
20.07.18
✎
13:11
|
У нас есть N ключей {К1,К2,...,КN} и столько же замков {З1,З2,...,ЗN}. Будем считать, что и те как-то пронумерованы. Каждый ключ подходит ровно к одному замку.
Вы хотите определить какой ключ подходит к какому замку. Для этого разрешается проделывать следующую операцию: Взять любое количество 1<=r<=N ключей и столько же замков и передать ключнику. Ключник проверяет все ключи и замки, отдает их обратно и говорит число пар ключ-замок, которые удалось подобрать, но не говорит сами пары. За сколько таких операций можно узнать все пары соответствующих ключей/замков от количества N? Для N=2 ответ 1. Для N=3 ответ 3. |
|||
1
Fish
гуру
20.07.18
✎
13:16
|
(0) А почему для N=3 ответ 3? Вполне можно и двумя обойтись, если первый и второй ключ подойдут с первой попытки.
|
|||
2
Ненавижу 1С
гуру
20.07.18
✎
13:19
|
(1) а если не подойдет?
|
|||
3
Ненавижу 1С
гуру
20.07.18
✎
13:19
|
+(0) пояснение "можно ГАРАНТИРОВАННО узнать"
|
|||
4
1Сергей
20.07.18
✎
13:22
|
(0)
Для N=2 ответ 1 Для N=3 ответ 2 |
|||
5
1Сергей
20.07.18
✎
13:22
|
хотя, нет. всё-таки 3, да
|
|||
6
Fish
гуру
20.07.18
✎
13:23
|
(3) Ну так, если сразу подойдет, то тоже гарантированно узнаешь. Имхо, правильное уточнение должно звучать так: "какое _максимальное_ кол-во операций для определения".
А для усложнения можно добавить "какое _минимальное_ и какое _максимальное_ кол-во операций." |
|||
7
Малыш Джон
20.07.18
✎
13:24
|
каждый ключ поочередно проверяем с каждым замком(отдаем по одной паре ключ замок). Таким способом первый ключ отыщем гарантированно за N-1 операций(если предпоследний не подошел, последний можно не проверять), второй - за N-2 и т.д.
таким образом имеем арифметическую прогрессию - N-1, N-2, ... 2, 1. Итого операций: N(N-1)/2 |
|||
8
Малыш Джон
20.07.18
✎
13:25
|
+(7) ааа, и проверку последней пары тоже можно не делать.
Тогда - N(N-1)/2-1 |
|||
9
Малыш Джон
20.07.18
✎
13:26
|
+(8) хотя нет, все верно - N(N-1)/2
|
|||
10
Fish
гуру
20.07.18
✎
13:26
|
(8) Так неинтересно :)
А для минимального кол-ва операций посчитаешь? |
|||
11
Малыш Джон
20.07.18
✎
13:28
|
(10) ))))))))
а про минимальное количество условия не было) я вообще хотел сначала N*N написать, но потом сообразил, что это уж слишком избыточное количество |
|||
12
Tatitutu
20.07.18
✎
13:29
|
(3)
"которые удалось подобрать" Ситуация: ключ1 , ключ3, ключ15 и замок2 , замок8 , замок 28 |
|||
13
Ненавижу 1С
гуру
20.07.18
✎
13:31
|
Мое предположение, что при N=4 будет ответ 5
|
|||
14
1Сергей
20.07.18
✎
13:32
|
Что-то не пойму зачем в задачу добавлен выбор R. При R>1 количество операций только увеличивается
|
|||
15
DTX 4th
20.07.18
✎
13:33
|
(7) Тоже по индукции нашёл такое решение, но ведь не факт, что это минимальное число операций.
|
|||
16
Малыш Джон
20.07.18
✎
13:39
|
(13) да, при N=4, попыток будет максимум 5, так что формула из 7 - не минимальное количество
|
|||
17
Ching Woo
20.07.18
✎
20:25
|
(0) Не знаю ответ
|
|||
18
RomanYS
20.07.18
✎
20:38
|
(14) не факт. Проверяя 1 ключ вы получаете 1 бит информации, а проверяя 3 ключа - 2 бита.
|
|||
19
RomanYS
20.07.18
✎
20:49
|
(13) при N=4 меньше чем за 4 точно нельзя. А вот можно ли за 4?
|
|||
20
Ching Woo
20.07.18
✎
21:03
|
(18) откуда там 2 бита?
|
|||
21
RomanYS
20.07.18
✎
21:12
|
(20) 4 результата проверки: 0,1,2,3
Конечно это если N>5. |
|||
22
Ching Woo
20.07.18
✎
21:30
|
(21) Тогда сколько бит получаем если проверяем два ключа?
|
|||
23
RomanYS
20.07.18
✎
21:41
|
(22)
Если бы три варианта были равновероятны (что в данном случае не так), то log2(3). Только зря ты этот вопрос задал, сейчас опять срач не по теме будет ;) |
|||
24
Ching Woo
20.07.18
✎
22:15
|
Короче, максимально много информации получаем если проверяем половину ключей с первого раза.
Нужно теперь понять как получить максимально много информации на второй и последующих проверках. |
|||
25
RomanYS
20.07.18
✎
22:23
|
(24) Это зависит от того какую задачу мы решаем (N=4 или общую).
В общем случае во второй проверке тоже должна быть половина (только в совершенно другой комбинации) |
|||
26
Сияющий в темноте
20.07.18
✎
22:32
|
Если обрзначить каждый замок от 1 до н битом в позиции н,и аналогично ключи от 1 до н битом в позиции н
когда мы даем ключнику замки,то есть число из битов А, и ключи,то есть число из битов Б,то ключник вычисляет логическое И этих двух последовательностей битов,и возвращает как результат,количество битов в числе. далее,требуется построить несколько последовательностей битов,чтобы они различались только одним битом и прогнать их через ключника |
|||
27
Сияющий в темноте
20.07.18
✎
22:35
|
биты ключей мы знаем,а биты замков спрятаны от нас массивом С[з],массив знает только ключник,для каждого замка он выдает позицию бита
нужно определить этот массив |
|||
28
Сияющий в темноте
20.07.18
✎
22:49
|
А дальше аналог алгоритма СРС,мы меняем биты блоками,получая последовательности,где изменение битов искажает конрольную сумму и выполняем сравнения
там формула числа операций двоичный логарифм,и так как две последовательности,то нужно умножить на четыре или,наверное,на три,т.к.четвертая определяется другими словами,делим замки и ключи на две кучи и гоняем 4 раза к ключнику,потом кучи переставляем по алгоритму срс и гоняем снова 4 раза и так по логарифму двух от количества мы прогоним всех по всем |
|||
29
RomanYS
20.07.18
✎
23:20
|
(26)(27)(28) Звучит красиво, про "алгоритм СРС" правда даже яндекс ничего внятного не говорит.
Идея то на поверхности, проблема с "требуется построить несколько последовательностей битов,чтобы они различались только одним битом и прогнать их через ключника". Т.к. независимых последовательностей не так много, и построить по нужному условию не получится. Давайте для N=4 решим |
|||
30
Малыш Джон
21.07.18
✎
08:07
|
(26) Если честно не понял, как ты собрался набор из N ключей(количество перестановок = N!) собрался обозначать двоичным N-значным числом (количество возможных значений = 2^N)...
Может и правда, на примере N=4 продемонстрируешь?) |
|||
31
Сияющий в темноте
21.07.18
✎
09:34
|
А причем здесь перестановка,перествновка ключей ничего не дает,т.к.проследовательность битов от положения ключей не зависит.
А алгоритм срс простой,первый бит,это сумма всех бито по модулю два,второй бит,сумма блоков по одному биту через такой же блок,следующий бит,это сумма чередующихся блоков по два и т.д.по степени двойки Для четырех получаются пары сначала к1,к2 и к3,к4 потом пары к1,к3 и к2,к6 так как из испытаний четверток избыточное,то гоняем 6 раз. к1,к2 з[с[1]],з[c[2]] к1,к2 и з[с[3]],з[с[4]] к3,к4 и з[с[1]],з[с[2]] к1,к3 и з[с[1]],з[с[3]] к1,к3 и з[с[2]],з[с[4]] к2,к4 и з[с[1]],з[с[3]] |
|||
32
Сияющий в темноте
21.07.18
✎
09:41
|
хотя нет,в данном случае гонять первые ключи во вторую группу также не надо,т.к.
к1,к2 и з1,з2 это сколько ключей от первой группы подходит к замкам первой группы.очевидно,что к замкам второй группы подойдут остальные ключи. к3,к4 з1,з2 сколько ключей из второй группы подходит к замкам первой группы. |
|||
33
RomanYS
21.07.18
✎
12:09
|
(32) вот про это и говорилось в (29) что не получится
|
|||
34
Aleksey
21.07.18
✎
12:50
|
(10) А разве минималоьное количество не равно N-1?
|
|||
35
Aleksey
21.07.18
✎
12:51
|
т.е. оно разве не равно "угадал с первой попытки"?
|
|||
36
RomanYS
21.07.18
✎
13:08
|
(34)(35) Тогда уж 0, угадал с первой попытки и не стал проверять.
Естественно в нормальной формулировке вопрос будет содержать "за какое МИНИМАЛЬНОЕ число попыток можно ГАРАНТИРОВАННО узнать" |
|||
37
uno-group
21.07.18
✎
13:44
|
Для краткости 1,2,3,4 - замки; А,Б,С,Д ключи.
В простейшем случае. худший вариант 1а -0 1б -0 1с -0 значит 1д подходят +3 для поиска среди 3 ответ 6 более сложный вариант Отдаем 1а,2б,3с получаем ответ 0,1,2,3 А вот дальше в зависимости от цифры различные действия |
|||
38
Ching Woo
21.07.18
✎
14:06
|
(36) Слово ГАРАНТИРОВАННО тут не приносит никакой пользы. Тот кто не понял оригинальную формулировку, может так же сказать что если угадать с первой попытки, то ГАРАНТИРОВАННО узнаешь какой ключ от какого замка.
|
|||
39
DTX 4th
23.07.18
✎
14:08
|
(13) Похоже, для N=4 хватит четырёх попыток.
|
|||
40
DTX 4th
23.07.18
✎
14:13
|
Не, тупанул. Но тему надо было поднять :)
|
|||
41
RomanYS
23.07.18
✎
14:33
|
(40) +100))
Для N=4 получается за 5, и вроде получается доказать, что нельзя 4. ТС колись. Откуда задача? Она должна аналитически решаться для произвольного N? |
|||
42
Ненавижу 1С
гуру
23.07.18
✎
15:05
|
(41) на просторах интернета нашел
решения не знаю хочется верить в формулу [log2(N!)]+1 при N>2 |
|||
43
Михаил Козлов
23.07.18
✎
15:44
|
(42) Похоже на энтропию.
К планированию экспериментов отношения не имеет? |
|||
44
Xapac
23.07.18
✎
15:56
|
(0) а почему нельзя сразу N отдать, он все и подберет.
нет? |
|||
45
RomanYS
23.07.18
✎
15:59
|
(44) он скажет, что совпало N. Подбирать самому придется)))
|
|||
46
dezss
23.07.18
✎
16:05
|
(42) ну ка при N = 3 посчитай этот факториал)))
|
|||
47
Xapac
23.07.18
✎
16:05
|
а все понял
у меня получилось (N-1) + (N-2) + ... + (N-(N-1) для 2 - 1 для 3 - 3 для 4 - 6 |
|||
48
dezss
23.07.18
✎
16:06
|
(47) ИМХО, должно быть меньше...
нужно другую стратеги выбирать, а не просто перебирать пары... |
|||
49
Ненавижу 1С
гуру
23.07.18
✎
16:10
|
(46) 3!=6
2<log2(6)<3 [log2(6)]=2 итого 3 |
|||
50
dezss
23.07.18
✎
16:28
|
(49) а теперь для 4)
|
|||
51
RomanYS
23.07.18
✎
16:47
|
(50) для 4 тоже сойдется
(48) так это и должна быть другая стратегия. В случае перебора пар ~N^2 будет. (42) а алгоритм под формулу есть, хотя бы приблизительный? |
|||
52
dezss
23.07.18
✎
16:49
|
(51) не сойдется...и для 3 не сходится...для 3-х можно за 2 сравнения все сделать...
формула, вроде, почти правильная...только +1 надо убрать... |
|||
53
Масянька
23.07.18
✎
16:52
|
(52) Для 3-ех за 2 - докажи...
|
|||
54
RomanYS
23.07.18
✎
16:53
|
(53) тоже интересно))
|
|||
55
Ненавижу 1С
гуру
23.07.18
✎
17:00
|
(51)(52) алгоритма пока нет
есть общие соображения всего вариантов ключ-замок равно N! вот если мы сможем за каждый раз "увеличивать информацию вдвое", то вот так и получим в частности при N=3 имеем 6 вариантов и за два хода не удается найти нужную перестановку |
|||
56
Масянька
23.07.18
✎
17:05
|
У меня получилось:
N = 3 -> 3 N = 4 -> 6 N = 5 -> 10 N = 6 -> 15 N = 7 -> 21 А тут мне сунули таракана... И я испугалась :((((((((((((((( |
|||
57
Fish
гуру
23.07.18
✎
17:07
|
(53) Смотри (1).
|
|||
58
Масянька
23.07.18
✎
17:09
|
(57) Если да кабы во рту росли грибы. (С)
Да, не простые... |
|||
59
Fish
гуру
23.07.18
✎
17:12
|
(58) Просто для любых N ключей и N замков есть максимальное кол-во комбинаций, позволяющих подобрать все пары, а есть минимальное.
Для N = 3, минимум - это 2, а максимум 3. |
|||
60
RomanYS
23.07.18
✎
17:16
|
(55) Уже при N=4 "увеличивать информацию вдвое" не получается. При проверке двух пар в 16 случаях из 24 мы получим 1, т.е в этом случае область поиска сократится только в полтора раза. Проверять одну пару ещё хуже.
|
|||
61
Масянька
23.07.18
✎
17:19
|
(55) А как ты себе это представляешь?
По любому, нужно или один ключ к каждому замку проверять, или один замок к каждому ключу. И получается треугольник с катетами N-1. |
|||
62
Ненавижу 1С
гуру
23.07.18
✎
17:19
|
(60) тоже об этом думал, но мы еще автоматически узнаём, что и в другой паре 1.
но пока мало понятно |
|||
63
RomanYS
23.07.18
✎
17:25
|
(62) "еще автоматически узнаём, что и в другой паре 1" это уже учтено в том, что 8 вариантов исключены, а 16 осталось.
Правда вторая проверка (тоже 2 пар) позволяет сузить область до 8 вариантов. Т.е. заветный 1бит во второй проверке мы получаем. |
|||
64
Сияющий в темноте
24.07.18
✎
00:45
|
А почему для четырех четыре нельзя?
гоним к1,к2 и з1,з2 результат 0,1 или 2 (попутно тот же результат получается для к3,к4 и з3,з4) если ответ 0,то меняем замки местами з1,з2 на з3,з4 и мы как бы получили 2. Если 1,то гоним пару к1,к3 з1,з3 тут тоже ответ будет 0,1 или 2 если ноль,то к1 для з4,а к4 для з1,к3 остается для з2,а к2 для з3 если 1,то мы уперлись в к1 для з3 или к3 для з1,что то одно,нужно прогнать к1 и з3,чтобы это получить если 1,то к1 для з3,к3 для з2,к2 для з4 и к4 для з1 то есть,три прогона. или что то не так? |
|||
65
Сияющий в темноте
24.07.18
✎
09:27
|
Четыре прогона,т.к.вторую пару точно также нужно гнать.
|
|||
66
Сияющий в темноте
24.07.18
✎
09:37
|
Вообще,максимальная информативность,когда гоним половину,то есть Н/2,всего исходов Н факториал.
то есть грубая оценка ((Н/2)+1)^Х=Н! наш х число прогонов. только получается целая часть от Н/2. когда 3,то 2^Х>=6, то есть х=3 когда 4,то 3^Х>=24,то получается 3, значит,нужно искать способ найти за 3 шага. |
|||
67
Сияющий в темноте
24.07.18
✎
09:41
|
Для 5 получается 5 вариантов,нужно смотреть.
|
|||
68
RomanYS
24.07.18
✎
10:30
|
(66) Прочитай (60) и (63)
Исходы проверок сильно неравномерно распределены. Для проверки двух пар при N=4 в четырех случаях вернется "0" четырех - "2" шестнадцати(!) - "1". Твои рассуждения (и оценка) были бы верны, если после каждой проверки число вариантов сокращалось бы втрое. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |