|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovmini.weblabAleksandr Sharahov, для вас, как я поняла, - это типовая задача а предметную область обозначить можно? ( в смысле куда копать, чтоб по фэншую? =) ) По фэншую 2 сообщения kealon(Ruslan): 18700090 и 18700779 практически полностью и составляют решение. Т.е. суть задачи состоит в перечислении всех подмножеств множества из N=3 битов. Всего их (вспоминаем сумму биномиальных коэффициентов) 2^N=8. Перейти от одного подмножества к другому можно за одну операцию объединение или разности (в нашем случае xor). Для каждого отдельного бита все эти xor'ы выродятся в те самые суммы. На подмножества можно смотреть как на функции перехода xor'ом от одного значения к другому. -1 появляется от того, что тождественная функция нам не нужна. переформулирую, допустим, для беглого ознакомления с вопросом, что гуглить? основы криптографии? что-нибудь по основам CS? что? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:36 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabkealon(Ruslan), ну когда табличку привели, объяснили, что и как нужно нажимать, то решение додумать уже не проблема :-) идея метода в 18701187 (это в моем понимании, хотя, может, Александр и не согласится) ПС: честно говоря, пока не увидела решение Александра, даже в голову не пришло посмотреть на задачу именно в таком ключе :) Вы неявно предполагаете, что такая таблица существует для любого количества переключателей. На самом деле это не доказано и опираться на это нельзя. Пока лишь доказано, что таблица существует для (2^N)-1 переключателей, где N - любое натуральное. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:37 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:43 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabAleksandr Sharahov, хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите? правильно будет так: если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:46 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabпереформулирую, допустим, для беглого ознакомления с вопросом, что гуглить? основы криптографии? что-нибудь по основам CS? что? Достаточно общих знаний по: теории множеств (операции, включения-исключения), двоичной системе (биты, xor), комбинаторике (биномиальные коэффициенты, основное тождество). Чтобы досконально разобраться попробуйте по-честному построить все функции перехода для N=4 бит номера комнаты через xor. Это не так трудно, поверьте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:52 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Спасибо, вы дали отличную подсказку, думаю, теперь я смогу разрулить задачу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:52 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabmini.weblabAleksandr Sharahov, хм.., т.е. если у вам будет 3 переключателя, то задачу с 4 комнатами вы не решите? правильно будет так: если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите? Не знаю, но почти уверен, что 6-ти переключателей на 7 комнат не хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 15:56 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahovmini.weblabпропущено... правильно будет так: если у вас будет 4 переключателя, то задачу с 5 комнатами вы не решите? Не знаю, но почти уверен, что 6-ти переключателей на 7 комнат не хватит. ИМХУ Дверей для алгоритма может быть только 2^N, а не произвольное число. Т.к. алгоритм оперирует двоичными разрядами, т.е. ожидает N двоичных разрядов номера двери. Т.е. для 4х дверей надо 2 разряда (0 ... 3) для 5 дверей надо три разряда, поэтому уже 7 переключателей. Для 9 дверей надо 15 переключателей. Т.е. если надо 5 дверей, то кодировать все равно 8 дверей, а использовать только первые 5. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 16:19 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
да чего там, для 3 дверей уже 2х переключателей не хватит теперь я не понимаю, как рассчитать достаточное количество переключателей интересует ход мыслей, как это можно сделать (как получить формулу?) посмотрела бы на доказательство результата, что привели Александр и Руслан ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:05 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabда чего там, для 3 дверей уже 2х переключателей не хватит теперь я не понимаю, как рассчитать достаточное количество переключателей интересует ход мыслей, как это можно сделать (как получить формулу?) посмотрела бы на доказательство результата, что привели Александр и Руслан Тогда ложись спать. Я постом выше написал больше чем требуется для ответа на этот вопрос. Утром не поймешь - переспроси. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:15 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, я неправильно сформулировала, я могу применить формулу и посчитать по ней нужное количество переключателей, но я не понимаю, как выводится формула ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:22 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Переведи все в двоичную систему. 1 есть во всех строках, т.е. изменяя 1й выключатель мы получаем X ^= 0b111 т.е. инверсию всех битов. 2 есть в 1 и 3 строке, т.е. изменение 2 выключателя равносильно X ^= 0b101 и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:40 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Тут есть еще засада с нумерацией: надо нумеровать с нуля, но по задаче нумеруется с 1, т.е. 5 дверей это с 1 по 5, а не с 0 по 4. Битовая математика работает с нуля, надо это учитывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 20:43 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabDima T, я неправильно сформулировала, я могу применить формулу и посчитать по ней нужное количество переключателей, но я не понимаю, как выводится формула Доказывается необходимость и достаточность. Давайте сначала мы докажем в ту сторону, куда проще. В нашем случае необходимость для 2^N дверей как минимум 2^N-1 переключателей. За одну операцию кодирования двери мы можем переключить только 1 переключатель или не переключать ни одного. Из некоторого исходного положения мы должны иметь возможность закодировать 2^N дверей различных дверей. Значит нужно иметь не менее 2^N-1 различных переключателей. Теперь в обратную сторону, достаточность. Мы просто укажем способ кодирования, который всегда позволяет от произвольного случайного значения кода перейти к одному из кодов любой заранее заданной двери (вы, разумеется, понимаете что каждая дверь может имеет несколько двоичных кодов, состоящих из 2^N-1 бит). Нам достаточно найти только один подходящий код. Вот тут и есть то самое место, которое, как мне кажется, всех сбивает с толку. По счастливой случайности битов в нашем распоряжении ровно столько, сколько нужно чтобы закодировать все подмножества (за исключением пустого) множества из N битов. И мы так и поступим. Т.е. каждый бит у нас будет соответствовать некоторому подмножеству. Таким образом, у нас будет свой кодирующий бит для каждого исходного бита множества, свой кодирующий бит для каждой пары исходных битов, для каждой тройки, ... и, наконец, кодирующий бит для всех N битов исходного множества. Это важно твердо понимать. Теперь двинемся дальше. Попробуем понять, что означает некоторый двоичный код, который мы видим перед собой. Давайте посмотрим на все эти подмножества и соответствующие им биты кода как на операции, которые позволяют перейти от пустого множества к тому, которое кодирует эта операция. Но тогда весь код означает суперпозицию операций. С последовательностью применения закодированных операций не возникнет вопросов, если мы выберем XOR над элементами множества (теми самыми N битами). Важно понимать, что код также задает некоторое подмножество, полученное из пустого. Опять же по счастливой случайности такое определение операции позволит нам изменением всего одного бита случайного кода в получить код, который в результате последовательного применения всех закодированных в нем операций в конце концов позволит получить любое заданное подмножество исходных N бит. Понятно, что мы всегда сможем найти такой кодирующий бит, т.к. у нас есть свой бит для любого подмножества, в том числе и для подмножества, закодированного упомянутым случайным кодом и подмножеством, которое мы хотим получить. Вот и все ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 23:13 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Сорри, исправлю здесь же самые дикие опечатки: Доказывается необходимость и достаточность. Давайте сначала докажем в ту сторону, куда проще. В нашем случае необходимость для 2^N дверей иметь как минимум 2^N-1 переключателей. За одну операцию кодирования двери мы можем переключить только 1 переключатель или не переключать ни одного. Из некоторого исходного положения мы должны иметь возможность закодировать 2^N различных дверей. Значит нужно иметь не менее 2^N-1 различных переключателей. Теперь в обратную сторону, достаточность. Мы просто укажем способ кодирования, который всегда позволяет от произвольного случайного значения кода перейти к одному из кодов любой заранее заданной двери (вы, разумеется, понимаете что каждая дверь имеет несколько двоичных кодов, состоящих из 2^N-1 бит). Нам достаточно найти только один подходящий код. Вот тут и есть то самое место, которое, как мне кажется, всех сбивает с толку. По счастливой случайности битов в нашем распоряжении ровно столько, сколько нужно чтобы закодировать все подмножества (за исключением пустого) множества из N битов. И мы так и поступим. Т.е. каждый бит у нас будет соответствовать некоторому подмножеству. Таким образом, у нас будет свой кодирующий бит для каждого исходного бита множества, свой кодирующий бит для каждой пары исходных битов, для каждой тройки, ... и, наконец, кодирующий бит для всех N битов исходного множества. Это важно твердо понимать. Теперь двинемся дальше. Попробуем понять, что означает некоторый двоичный код, который мы видим перед собой. Давайте посмотрим на все эти подмножества и соответствующие им биты кода как на операции, которые позволяют перейти от пустого множества к тому, которое кодирует эта операция. Но тогда весь код означает суперпозицию операций. С последовательностью применения закодированных операций не возникнет вопросов, если мы выберем XOR над элементами множества (теми самыми N битами). Важно понимать, что код также задает некоторое подмножество, полученное из пустого. Опять же по счастливой случайности такое определение операции позволит нам изменением всего одного бита случайного кода в получить код, который в результате последовательного применения всех закодированных в нем операций в конце концов позволит получить заданное подмножество исходных N бит. Понятно, что мы всегда сможем найти такой кодирующий бит, т.к. у нас есть свой бит для любого подмножества, в том числе и для подмножества, полученного XOR'ом подмножества, закодированного упомянутым случайным кодом, и подмножества, которое мы хотим получить. Вот и все )[/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2016, 23:29 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, Dima T Спасибо! Более менее разобралась. Меня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить. Насколько я поняла, нужно связывать побитовое инвертирование последовательности чисел (допустим, от 1 до 8, как в задаче) и заданную кодировку (инвертирование 1 бита в ключе) Определим ключ как последовательность значимых переключателей я попробовала переформулировать задачу Пусть имеются числа от 1 до n. Требуется закодировать заданное число от 1 до n. Метод кодировки: изменение одного бита в произвольно заданном ключе Задача: Рассчитать необходимый и достаточный размер ключа ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 02:06 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
mini.weblabМеня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить. Насколько я поняла, нужно связывать побитовое инвертирование последовательности чисел (допустим, от 1 до 8, как в задаче) и заданную кодировку (инвертирование 1 бита в ключе) Первое из чисел - количество подмножеств множества из N элементов. В нашем случае элементами являются отдельные биты некоторого числа. В нашем случае некоторым числом является номер комнаты. Второе из чисел - количество подмножеств множества из N элементов, за исключением пустого подмножества. Оно нам не нужно, т.к. с его помощью мы не будем задавать никаких операций, ведь XOR с нулем не меняет числа. Тождественная операция у нас и так всегда есть по условию - мы имеем право в качестве кода использовать само исходное случайное значение. Важно понимать, что инвертирование битов числа является следствием операции XOR над множеством его битов. Именно поэтому проще всего программа получится когда интервал возможных значений начинается с 0 и заканчиваться числом, в двоичной записи которого все биты равны 1. В противном случае если вы хотите получить минимальную длину кода, вам могут потребоваться дополнительные сдвиги диапазона, чтобы попасть в указанный интервал. mini.weblabОпределим ключ как последовательность значимых переключателей Пусть имеются числа от 1 до n. Требуется закодировать заданное число от 1 до n. Метод кодировки: изменение одного бита в произвольно заданном ключе Задача: Рассчитать необходимый и достаточный размер ключа Это хороший повод поговорить по душам с тестирующим ) Плюс в том, что разговор может получиться длинным и своем поле. Минус в том, что при этом его легко обидеть. Ваши шансы возрастают, если разговор будет на троих ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 09:59 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr Sharahov, простите, но мне непонятно ваше доказательство, более того, я плохо понял что вы пытались доказать. Думаю что это связано с большим уровнем 'шума'. Не могли бы вы прокомментировать более подробно ваше доказательство, пожалуйста mini.weblabAleksandr Sharahov, Dima T Спасибо! Более менее разобралась. Вы уверены что понимаете как была построена таблица выше и почему она имеет право быть построенной так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:13 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovПервое из чисел - количество подмножеств множества из N элементов. Этим ты и запутал. Элементов не N а 2^N Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:16 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima TAleksandr SharahovПервое из чисел - количество подмножеств множества из N элементов. Этим ты и запутал. Элементов не N а 2^N Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3 Просьба не навязывать мне свои обозначения. Можете считать, что мне лень в них вникать. В моем тексте используются мои обозначения. Хотите критиковать меня - пожалуйста, но используйте при этом мои обозначения. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:44 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Dima T, см. 18704296 , где написано Первое из чисел - количество подмножеств множества из N элементов. В нашем случае элементами являются отдельные биты некоторого числа. В нашем случае некоторым числом является номер комнаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:48 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovПросьба не навязывать мне свои обозначения. Можете считать, что мне лень в них вникать. Ну так будь добр заранее об этом сообщать. Иначе это выглядит как бред Aleksandr Sharahovmini.weblabМеня смутили числа 2^N и 2^N - 1 , и я долго думала, откуда они взялись ... Первое из чисел - количество подмножеств множества из N элементов ... о чем я и написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:50 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
Aleksandr SharahovDima Tпропущено... Этим ты и запутал. Элементов не N а 2^N Т.е. N это количество бит, которое необходимо чтобы пронуменовать все элементы. Если дверей 8 то N=3 Просьба не навязывать мне свои обозначения. Можете считать, что мне лень в них вникать. Это я больше для mini.weblab писал, на это mini.weblabМеня смутили числа 2^N и 2^N - 1, и я долго думала, откуда они взялись и как их получить. Предположил что именно могло ее запутать. Возможно ошибся. А твои доказательства целиком не читал, много букав. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 10:58 |
|
из тестового задания
|
|||
---|---|---|---|
#18+
SashaMercuryAleksandr Sharahov, простите, но мне непонятно ваше доказательство, более того, я плохо понял что вы пытались доказать. Доказывается необходимость и достаточность 2^N-1 переключателей для 2^N дверей. Какое место в доказательстве непонятно? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2016, 11:44 |
|
|
start [/forum/topic.php?fid=16&msg=39150738&tid=1339609]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 9ms |
total: | 141ms |
0 / 0 |