Если два человека A & B имеют два больших логических списка, как найти первое несоответствие в списках с наименьшей передачей данных между двумя людьми? - PullRequest
0 голосов
/ 19 марта 2019

Скажем, список с человеком A = [T, T, F, T, F ...] и список с человеком B = [T, T, F, T, T ...], тогда нам нужно скажем, что индекс 4 является первой позицией несоответствия в списках.
Количество записей в списках может быть очень большим (~ 50 миллионов). Как эффективно выполнить этот поиск с наименьшим количеством данных (байтов), передаваемых между двумя людьми?

1 Ответ

0 голосов
/ 22 марта 2019

Вы можете использовать древовидную структуру Merkle и найти несоответствие в O(log n) передачах. Для 256-битной хеш-функции (например, SHA256) вы можете разбить массив на части по 256 элементов. Эта часть будет листьями Меркле.

...