IMHO, надо выбирать из конструкций с кардиоидной (и т.п.) характеристикой направленности.
Г) файлы с индексами - обработка python-ом Я думаю что вариант Г) - оптимальный
Вот современная реализация на Python https://github.com/bbayles/python-pure-cdb (есть на PyPI)
this package can produce and consume "64-bit" constant databases that don't have the usual 4 GiB restriction.
type extFreq map[string]*uint64
atomic.AddInt64(s.stats.extFreq[ext], 1)
И есть основание полагать, что имеет решение со сложностью O(n)в один проход? Возможно и есть, например динамическим программированием, ценой расходов памяти, храня промежуточные результаты в матрице и оптимизируя очередью или стеком.