По поводу быстрой генерации не хотелось бы распространяться.
Ну а я секретничать не буду.
Продемонстрирую алгоритм на примере ветви (1,2,3).
Впрочем, ветвь хранится в виде множества своих узлов {1,2,3}, что автоматически устраняет дубляж ветвей (1,2,3,4) и (1,2,4,3).
И так, в базе имеется запись (1,2,3){4,5,6,9}.
Выполняем цикл по всем листьям, в котором:
1. выбираем очередной лист, например 4;
2. создаём новую запись;
3. в первую часть записи заносим родительскую ветвь дополненную выбранным листом, в нашем примере (1,2,3,4);
4. во вторую часть записи заносим всех братьев выбранного листа, в примере {5,6,9};
5. выбранный лист комбинируем со всеми узлами новой ветви используя операции +,-,*;
6. полученные на шаге 5 числа добавляем во вторую часть записи, в примере получим {5,6,7,8,9,12,16}.
В результате первой итерации цикла в базу будет добавлена запись:
(1,2,3,4){5,6,7,8,9,12,16}.
-- 22 апр 2013, 16:42 --Правда сын Льва Толстого?
Наверно, Алексея Толстого?