Это похоже на проблему упаковки бункера , но с некоторыми изменениями.
То, что у меня есть, это временные ряды аннотированных данных, и когда я рисую график, я хочу разместить аннотации в положении, которое в целом минимизирует расстояние от аннотированной точки.
Этот график (безвозмездно украденный) показывает, что я хотел бы сделать:
.
Я знаю, что это проблема оптимизации, но я не знаю, с чего начать. Сначала я поместил его в соответствующий x и переместился вверх / вниз по y, чтобы найти место, которое было доступно, и сохранить область, которая была нарисована. Несмотря на то, что это сработало, на самом деле оно не наилучшим образом использует доступное пространство, и мне интересно, есть ли что-нибудь лучше.
Мне интересно, есть ли какие-нибудь известные алгоритмы, которые атакуют эту или подобные проблемы?
Добавлено примечание: оно не должно быть оптимальным, но оно обязательно должно быть быстрым. Это делается во время рендеринга, поэтому пользовательский интерфейс блокируется во время выполнения.