О зарплатах№ 1
Большой Грызь

Трое коллег решают подсчитать свою среднюю зарплату. Но никто, естественно, не хочет сообщать, сколько именно он получает.
У них есть листок и ручка.
Любые написанные числа и расчеты видны всем.
Как они могут получить желаемый результат?
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 2
Briska

это что то из разряда ZERO knowledge proofs?
Профиль 

О зарплатах№ 3
Большой Грызь

Ты не умничай
Ты алгоритм напиши
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 4
Briska

BriskaБольшой Грызь

Tak если я буду знать что это из этой области, можно подумать а так сложно..

Далее подозреваю что можно scale up and down так как average останется одинаковой..
Профиль 

О зарплатах№ 5
Briska

Ох!!!
Атавару поставил.
Профиль 

О зарплатах№ 6
Briska


Думаю надо использовать XOR.

придумать число например X и всем его рассказать.

потом сделать так:

первый чел пишет его зарплата XOR X
И так далее.

так никто не узнает о зарплате других, и только конечный результат наверное надо XORнуть с Х или что то в этом духе...
Профиль 

О зарплатах№ 7
Большой Грызь

Если все будут знать Х, тогда из написанной "зарплаты XOR X" каждый сможет легко вычислить саму зарплату.

Да и как из "зарплаты XOR X" ты среднюю зарплату вычислишь?
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 8
Маня

Да пусть в уме считают - и никаких проблем
Профиль 

О зарплатах№ 9
Большой Грызь

А как в уме они могут посчитать СРЕДНЮЮ зарплату??
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 10
Маня

Сложить зарплаты за несколько месяцев и поделить на кол-во месяцев При такой бешеной секретности от коллег можно и поднатужиться
 
[ 29-08-06, Втр, 10:22:37 Отредактировано: Маня ]
Профиль 

О зарплатах№ 11
Большой Грызь

Не совсем понял..
Они хотят подсчитать среднюю зарплату среди них троих. Т.е. если первый получает X, второй - Y, а третий - Z, то они хотят получить (X+Y+Z) / 3 не открывая при этом значения X,Y,Z.
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 12
Briska

impossible... although...

"Only those who attempt the absurd will achieve the impossible.. (Escher)(БГ)"
Профиль 

О зарплатах№ 13
Большой Грызь

Да всё "поссибле" на самом деле
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 14
Маня

Тю, а я думала - каждый свою считает
Профиль 

О зарплатах№ 15
Большой Грызь

Так а со своей - какие проблемы?? Можно и в уме подсчитать.
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 16
Briska

надо внидрить какой нибудь номер. например Х. и что нибудь делать с ним. но каким образом еше не придумал..
Профиль 

О зарплатах№ 17
Большой Грызь

Думай-думай
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 18
Танкист

А можно без пера и бумаги?   
 Не соблазняйтесь, если, зачешутся вдруг руки,
Одеть чего не надо куда-то не туда.
Профиль 

О зарплатах№ 19
Большой Грызь

А с чем?
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 20
Танкист

Без всего, с условием, что инженеры умеют считать в уме. Я, по-моему, нашел неожиданное решение.
 Не соблазняйтесь, если, зачешутся вдруг руки,
Одеть чего не надо куда-то не туда.
Профиль 

О зарплатах№ 21
Большой Грызь

Давай в привате
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 22
MigaRU

Расскажите решение!
Профиль 

О зарплатах№ 23
Паша

Первый передаёт Второму произвольное число, а Третьему сумму этого числа со своей зарплатой. Потом Третий передаёт Второму сумму полученного от Первого числа со своей зарплатой. Второй сообщает всем среднюю зарплату.
Профиль 

О зарплатах№ 24
Большой Грызь

Можно и так

Было еще и такое решение:
Первый со Вторым договариваются о каком-то числе. Один из них отнимает число от своей зарплаты, а второй прибавляет.
Затем тоже самое делает Второй и Третий. А затем Первый и Третий.
После чего каждый из них записывает на листке (том, который виден всем) полученное число. Числа суммируются и сумма делится на три.
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 25
Паша

Я всегда стараюсь идти наикрадчайшей дорогой...
Профиль 

О зарплатах№ 26
Большой Грызь

Это решение не краткостью красиво, а симметрией
А по краткости есть решение наподобие твоего, но еще более короткое.
Первый не должен передавать какие-то числа двум людям сразу. Всё проще
Первый прибавляет к своей зарплате некое число и сообщает сумму Второму. Второй приплюсовывает свою зарплату и сообщает Третьему. Третий приплюсовывает свою зарплату и сообщает Первому. Первый отнимает упомянутое число и делит результат на три.
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 27
Паша

Вот так мы и видим разницу между SW и HW инженером. Ты посчитал, что решение короче, так как используется одинаковая функция, я же считаю более коротким решение с тем же количством операций, но с возможностью распараллелить процессы, благо так быстрее.
Профиль 

О зарплатах№ 28
Большой Грызь

Паша, во-первых, краткость математического решения выражается в краткости его формулировки. К примеру, если есть решение в две строчки, базирующееся на индукции, то оно короче аналитического решения на две страницы, результатом которого является прямая формула вычисления значения функции в зависимости от значения аргументов. Индуктивное решение - короче. Несмотря на то, что функция вычисляется за О(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 Отредактировано: Большой Грызь ]
Профиль 

О зарплатах№ 29
Паша

Согласен, но в посте 27 я писал о посте 26. Но на самом деле, что первое в голову пришло, то и короче. Тут решений много и все они более или менее аналогичны.
Профиль 

О зарплатах№ 30
Большой Грызь

Решений действительно много

Беда в том, что до сих пор не найдено решение без приватной передачи каких-либо данных от одного человека другому в тайне от третьего. И не найдено док-во несуществования подобного решения.

Т.е. такого решения, при котором все расчеты ведутся публично.
 Only those who attempt the absurd will achieve the impossible.. (Escher)
Профиль 

О зарплатах№ 31
SoMike

Спросить начальника, он и скажет
Профиль 

О зарплатах№ 32
MigaRU

Автор: SoMike
Дата : 01-05-07, Втр, 18:52:03

Спросить начальника, он и скажет


Гениально!
Профиль 


Вы не зарегистрированы либо не вошли в портал!!!
Регистрация или вход в портал - в главном меню.



 Просмотров:   008504    Постингов:   000032