|
Большой Грызь
|
Дата : 28-08-06, Пнд, 08:39:02
Трое коллег решают подсчитать свою среднюю зарплату. Но никто, естественно, не хочет сообщать, сколько именно он получает. У них есть листок и ручка. Любые написанные числа и расчеты видны всем. Как они могут получить желаемый результат?
|
| Only those who attempt the absurd will achieve the impossible.. (Escher) |
|
|
|
Briska
|
Дата : 28-08-06, Пнд, 15:15:15
это что то из разряда ZERO knowledge proofs? |
|
|
|
Briska
|
Дата : 28-08-06, Пнд, 17:13:18
Ох!!! Атавару поставил. |
|
|
|
Briska
|
Дата : 28-08-06, Пнд, 17:16:28
Думаю надо использовать XOR.
придумать число например X и всем его рассказать.
потом сделать так: первый чел пишет его зарплата XOR X И так далее. так никто не узнает о зарплате других, и только конечный результат наверное надо XORнуть с Х или что то в этом духе...
|
|
|
|
Большой Грызь
|
Дата : 29-08-06, Втр, 02:30:05
А как в уме они могут посчитать СРЕДНЮЮ зарплату?? |
| Only those who attempt the absurd will achieve the impossible.. (Escher) |
|
|
|
Большой Грызь
|
Дата : 29-08-06, Втр, 03:27:58
Не совсем понял.. Они хотят подсчитать среднюю зарплату среди них троих. Т.е. если первый получает X, второй - Y, а третий - Z, то они хотят получить (X+Y+Z) / 3 не открывая при этом значения X,Y,Z. |
| Only those who attempt the absurd will achieve the impossible.. (Escher) |
|
|
|
Briska
|
Дата : 29-08-06, Втр, 05:14:08
impossible... although...
"Only those who attempt the absurd will achieve the impossible.. (Escher)(БГ)" |
|
|
|
Briska
|
Дата : 29-08-06, Втр, 11:29:52
надо внидрить какой нибудь номер. например Х. и что нибудь делать с ним. но каким образом еше не придумал..
|
|
|
|
Большой Грызь
|
Дата : 30-08-06, Срд, 02:33:26
А с чем? |
| Only those who attempt the absurd will achieve the impossible.. (Escher) |
|
|
|
MigaRU
|
Дата : 24-04-07, Втр, 06:36:28
Расскажите решение! |
|
|
|
Паша
|
Дата : 01-05-07, Втр, 06:51:58
Первый передаёт Второму произвольное число, а Третьему сумму этого числа со своей зарплатой. Потом Третий передаёт Второму сумму полученного от Первого числа со своей зарплатой. Второй сообщает всем среднюю зарплату. |
|
|
|
Паша
|
Дата : 01-05-07, Втр, 07:06:11
Я всегда стараюсь идти наикрадчайшей дорогой... |
|
|
|
Паша
|
Дата : 01-05-07, Втр, 07:28:21
Вот так мы и видим разницу между SW и HW инженером. Ты посчитал, что решение короче, так как используется одинаковая функция, я же считаю более коротким решение с тем же количством операций, но с возможностью распараллелить процессы, благо так быстрее. |
|
|
|
Большой Грызь
|
Дата : 01-05-07, Втр, 07:52:48
Паша, во-первых, краткость математического решения выражается в краткости его формулировки. К примеру, если есть решение в две строчки, базирующееся на индукции, то оно короче аналитического решения на две страницы, результатом которого является прямая формула вычисления значения функции в зависимости от значения аргументов. Индуктивное решение - короче. Несмотря на то, что функция вычисляется за О(1), а индукция - за О(N).
А, если уж говорить о распараллеливании процессов... И, если немного подумать, то придешь к выводу, что количество операций в решении из постинга №24 и кол-во операций в твоем решении одинаково.
В твоем решении: 1) в параллель можно выполнить две операции: 1.1) Первый передаёт Второму произвольное число 1.2) Первый передаёт Третьему сумму этого числа со своей зарплатой 2) Эта операция требует завершения операции 1.2: 2.1) Третий передаёт Второму сумму полученного от Первого числа со своей зарплатой. 3) Эта операция требует завершения операции 2.1 и 1.1 3.1) Второй отнимает от полученной от Третьего суммы число, которое сообщил ему Первый, делит результат на три и сообщает всем среднюю зарплату.
Итого три пункта, не поддающиеся распараллеливанию. Причем самая длинная цепочка операций, не поддающаяся распараллеливанию это: суммирование (1.2) + передача числа (1.2) + суммирование (2.1) + передача числа (2.1) + вычитание (3.1) + деление (3.1) Итого три операции сложения/вычитания, одна операция деления и две передачи числа.
В решении из постинга №24 (слегка адаптированном) 1) в параллель можно выполнить следующие операции: 1.1) Первый загадывает число, отнимает его от своей зарплаты и передает это число Второму. 1.2) Второй загадывает число, отнимает его от своей зарплаты и передает это число Третьему. 1.3) Третий загадывает число, отнимает его от своей зарплаты и передает это число Первому. 2) Следующие операции требует завершения всех распараллеленных операций из пункта (1): 2.1) Первый прибавляет к своей зарплате число, полученное от Третьего, и записывает результат на листке 2.2) Второй прибавляет к своей зарплате число, полученное от Первого, и записывает результат на листке 2.3) Третий прибавляет к своей зарплате число, полученное от Второго, и записывает результат на листке 3) Следующая операция требуют завершения всех распараллеленных операций из пункта (2): 3.1) Любой из них суммирует числа, записанные на листике, и делит результат на три.
Итого те же три пункта, не поддающиеся распараллеливанию. И самая длинная цепочка операций, не поддающаяся распараллеливанию это: вычитание (1.1 / 1.2 / 1.3) + передача числа (1.1 / 1.2 / 1.3) + суммирование (2.1 / 2.2 / 2.3) + запись числа (2.1 / 2.2 / 2.3) + суммирование (3.1) + деление (3.1) Итого три операции сложения/вычитания, одна операция деления и две передачи числа (запись числа на листке - та же передача).
Паша, я нигде не ошибся? Мы получили одинаковое время выполнения алгоритмов даже с распараллеливанием? |
| Only those who attempt the absurd will achieve the impossible.. (Escher) [ 01-05-07, Втр, 14:55:16 Отредактировано: Большой Грызь ] |
|
|
|
Паша
|
Дата : 01-05-07, Втр, 10:28:48
Согласен, но в посте 27 я писал о посте 26. Но на самом деле, что первое в голову пришло, то и короче. Тут решений много и все они более или менее аналогичны. |
|
|
|
SoMike
|
Дата : 01-05-07, Втр, 11:52:03
Спросить начальника, он и скажет |
|
|
|
MigaRU
|
Дата : 19-07-07, Чтв, 18:31:03
Автор: SoMike Дата : 01-05-07, Втр, 18:52:03 Спросить начальника, он и скажет
Гениально! |
|
|