Алгоритм должен приводить к результату за время O(N*log(N))
Вам нужен итеративный алгоритм, подходящий к результату сколь угодно близко, или точная формула? В случае точной формулы ответ вот:
взять точку внутри многоугольника и окружность с центром в этой точке и радиусом, равным расстоянию до ближайшей стороны, и двигать центр, увеличивая радиус, пока это возможно.
Из физических соображений видно, что для выпуклого треугольника решение существует и единственно. Ну и ищите градиентным методом попеременно на прямых, параллельных то оси Ox, то оси Oy. Максимум расстояния на каждой прямой ищите двоичным поиском, вычисляя расстояния до всех ребер - итого
операция на каждом шаге, а всего значит
, что несущественно медленнее, чем
Попробуйте это для начала. Возможно, что-то по ходу дела придумаете сами. Если мало, то надо рыться в книгах и статьях, там не совсем все так просто и до наиболее оптимального алгоритма додуматься, не зная вспомогательных алгоритмов, бывает трудно (на АСМ-олимпиадах нужно знать именно оптимальные алгоритмы).