Если временно оставить чисто математический анализ задачи, поскольку я даже не представляю, как к нему подступиться...
Насчёт практического подхода сейчас подумал следующее.
Мы немного расширяем идею переменных AChan_count и BChan_count из примера в посте. Теперь это будет не счётчик, а скажем, репутация у A-chan и B-chan. Или склонность к какой-то концовке в более общем смысле, ведь концовка может вообще не быть связана с персонажем. Ну, пусть будет у переменных префикс Rep.
Перед финальным поворотом сюжета надо просто выбрать максимум. При вот таких отличиях, вроде 2.5 и 2.49999 ничья будет достаточно маловероятна, чтобы её можно было проигнорировать. Потом максимум надо сравнить с некоторым пороговым значением, которое можно посчитать исходя из суммарных значений этих приращений по разным путям (просто забить их в простую программу на C в массив и посчитать все пути тупо перебором). Вариант: пороговое значение может зависеть от концовки. Если максимум превышает порог — выбираем концовку. Иначе — jump bad_end.
В принципе, народ что-то подобное и делает. Чтобы не мудрить с ничьей, добавил вот эти мелкие отличия в приращениях. Их даже можно обосновать сюжетно — ведь не может же быть, чтобы два персонажа реагировали полностью одинаково.
Разумеется, если бы я планировал какой-нибудь дейтсим или более сложную игру, то можно было бы напридумывать специальных объектов под неё. Но я всё же склоняюсь к тому, что у меня будет скорее книга, чем игра. Почти линейный сюжет с мелкими выбираемыми деталями, рассказывающий общую часть истории. А потом на основе ранее сделанных выборов происходит одно ветвление на несколько концовок, где можно рассмотреть несколько вариантов последствий этого выбора (как фанфики пишут часто с вопросом «а что, если бы...»). Поэтому для меня на практике такая простая система вполне подойдёт. Вроде бы, если не найду подводных камней.
Но с теоретическим анализом всё же было бы интересно разобраться. Увы, мне пока даже в голову не приходит, как формализовать такую модель.