Цитата(Tanya @ Jan 21 2007, 18:55)

Сводим на вышеупомянутый интервал.
Вычисляем 10 - (Xmax - Xmin) =A
Находим максимальное расстояние между ближайшими соседями. Если оно больше A, то переносим все, что левее вправо. Или наоборот... Если нет такого расстояния, то все уже в порядке.
Спасибо. Можно еще так представить. После того, как значения приведены к интервалу 0...10 и обозначены на этом отрезке точками, сворачиваем этот интервал в кольцо. Теперь находим на кольце максимальное расстояние между соседними точками, и в этом месте разрываем кольцо, снова превращия его в отрезок. Порядок расположения точек на получившимся отрезке даст максимально "плотное округление".
А теперь такой вопрос.
Вместо описанного Вами "оптимального" алгоритма используется такой упрощенный алгоритм:
- определяется самый длинный кабель с временем Тмакс, задержка к нему добавляться не будет
- для любого кабеля с задержкой Тх определяется разность Тр=Тмакс-Тх
- полученное значение Тр самым обычным способом округляется до ближайшего кратного 10 нс, это будет добавленная задержка
Численный пример, приводившийся ранее:
1 нс
1.1 нс
9 нс
9.1 нс
Самая большая задержка 9.1 нс
для 1 нс разность 9.1-1=8.1, округляем до 10 нс, в сумме 1+10 = 11 нс
для 1.1 нс разность 9.1-1.1=8.0, округляем до 10 нс, в сумме 1.1+10 = 11.1 нс
для 9 нс разность 9.1-9=0.1, округляем до 0 нс, в сумме 9+0 = 9 нс
Получили такой же результат, какой дал бы "оптимальный" алгоритм, однако намного более простым способом.
В каких случаях этот алгоритм будет хуже "оптимального"? Вернее, насколько он будет хуже "оптимального" в самом благоприятном для "оптимального" случае?
"На глазок" он проигрывает оптимальному пренебрежимо мало.