Збільшення швидкості відправки даних за рахунок швидкості прийому

У мене ADSL-підключення, і я кожен раз відчуваю складності, коли мені потрібно відправити кому-небудь великий файл. Тому що швидкість відправки приблизно в 10 разів нижче, ніж швидкість скачування з інету.

Чому б не збільшити швидкість відправки за рахунок швидкості прийому? Я придумав хитрий спосіб це зробити, не переробляючи обладнання (в цьому інтерес завдання), але поки що не впевнений в його ефективності. Цей піст - не заявка, а просто спроба перевірити теорію. Може бути, все це нісенітниця?

Приклади з життя

Уявіть собі дуже п'яного відвідувача ресторану і дуже (т) швидкого офіціанта. До такої міри, що поки відвідувач буде вимовляти «Картопля, запечений в духовці з овочами і сиром», офіціант уже встигне перебрати всі страви з меню, і людині залишиться лише сказати «так» в потрібний момент. Очевидно, що швидкість замовлення збільшується випадковим чином (якщо пощастить, то потрібне блюдо виявиться на початку вимовленого списку, а якщо ні?)

Інший приклад: автодоповнення в Яндексі. Пишемо «при», миттєво вилазить підказка «привид опери мюзикл», клікнути по якій швидше, ніж набивати весь текст по буквах. Тут теж немає гарантії, що серед 10 підказок відразу з'явиться потрібна, проте у міру набору тексту ймовірність відгадування підвищується.

Перевірка теорії

Припустимо, нам треба передати число 493.

Приблизно так це число виглядає в бітах, якщо не використовувати стиск:
0100.1001.0011 - 12 бітів

Нехай швидкість відправки = 1 біт в хвилину.
Нам треба відправити 12 бітів, і зазвичай це зайняло б 12 хвилин.

Чи спрацює метод, якщо ми можемо відправляти «так / ні» тільки в дискретні проміжки часу?

Щоб це зрозуміти, згадаємо офіціанта: припустимо, у нас є 4 хвилини, і ми можемо говорити «так» строго по годинах, раз в хвилину: в кінці першої хвилини, другий, і так далі. Таким чином, чотирма відповідями ми можемо вибрати лише з 16 страв методом бінарного пошуку (від 0000 до 1111 в двійковій системі).

Ми НЕ можемо сказати «так» саме в той момент, коли офіціант вимовляє потрібне нам блюдо, і це погано.

Знаєте, як за 10 питань на «так / ні» відгадати число від 1 до 1000?

Твоє число більше 500?
Так → Більше 750?
Немає → Більше 250?

І так далі, поки не відгадає.
Це і є метод бінарного пошуку.

Але вибору з 16 варіантів явно недостатньо, щоб визначити число 493. Нам потрібен вибір мінімум з 1000.

умови застосовності

Придуманий метод може спрацювати тільки в такому випадку:
- немає жорсткої синхронізації відповідей по часу (ми можемо говорити в будь-який момент),
- швидкість прийому колосально перевищує швидкість відправки (офіціант говорить набагато швидше нас).

Повернемося до задачі

0100.1001.0011 - 12 бітів

Найпростіший спосіб: перебір всіх варіантів від 0 до 999, це потрібно встигнути зробити за перші 3 хвилини, щоб, якщо наше число = 999, то наша відповідь «Так» в кінці 3-ї хвилини закінчився якраз до кінця 4-ї хвилини . Нагадаю, що наша відповідь триває 1 хвилину.

Наше число = 493, і ми відповімо «Так» вже на 2,5 хвилинах, а починаючи з 3,5 хвилин ми будемо відгадувати вже наступне число.

За підсумками розрахунків, ситуація вийшла з області фантастики:
швидкість прийому = (9 бітів × 1000) / 3 хвилини = 3000 бітів в хвилину,
тобто, в 3 тисячі разів більше швидкості відправки.

За 3 хвилини до нас прийде така послідовність:
0000000000
0000000001
.
1111111111
(1000 пакетів по 9 бітів)

Висновок: відгадування ефективні в людському світі, де є слова, образи, зміст, але майже не приносять користі в світі комп'ютерів. Ідея виявилася провальною :)

Замітка сподобалася? → Поділіться у соціальних мережах: