Кажется, что ваш входной набор должен быть очень большим, если таблица поиска будет слишком большой для хранения на диске. Я предполагаю, что тогда данные не будут помещаться в ОЗУ, а это означает, что любой алгоритм, который вы используете, должен быть настроен так, чтобы минимизировать количество операций чтения и записи. Всякий раз, когда на дисках задействовано пространство == время, потому что запись на диск очень медленная.
Точный алгоритм, который вы должны использовать, зависит от того, какой у вас график. Эта исследовательская работа может быть вам интересна. Полное раскрытие: я сам не читал, но, похоже, это то, что вы ищете.
Edit:
Если граф (почти) соединен, то есть с сетью маленького мира, справочная таблица не может быть меньше V ^ 2. Это означает, что для всех поисков потребуется доступ к диску. Если края помещаются в основную память, возможно, каждый раз будет проще вычислять путь. В противном случае вы можете вычислить путь из таблицы, содержащей длины всех кратчайших путей. Вы можете восстановить путь из этой таблицы.
Ключ должен убедиться, что записи в таблице, которые расположены близко друг к другу в обоих направлениях, также расположены близко друг к другу на диске. Этот шаблон хранения выполняет:
1 2 1 2 5 6
3 4 3 4 7 8
9 10 13 14
11 12 15 16
Он также будет хорошо работать с иерархией кеша.
Для вычисления таблицы вы можете использовать модифицированный Floyd-Warshall , где вы обрабатываете данные в блоках. Это позволит вам выполнить вычисления за разумное время, особенно если вы распараллелите его.