Алгоритм восстановление структуры на Python

Проблема

У меня стоит достаточно интересная задачка, к которой я пытаюсь придумать шустрый алгоритм решения. Коротко, что требуется.

Существует структура данных вида:

1. Сборочная единица 1 (далее СБ)  
1.1 СБ 2  
1.1.1 Деталь 1 (далее ДТ)  
1.1.2 СБ 3  
1.1.2.1 ДТ 2  
1.1.2.2 ДТ 2  
1.2 СБ 2  
1.3 СБ 3  
1.3.1 ДТ 1  
...

Как видно, все элементы СБ имеют некоторую структуру, причем в неё может входить и другие СБ. СБ могут повторяться. Проблема в том, что у некоторых СБ структура пропущена, но точно известно что где-то в общей структуре есть такой же СБ но со структурой (донор). Задача: скопировать структуру в СБ из донора (такое СБ, где структура есть).

Как делаю сейчас

Сейчас я решаю задачу в лоб (использую python). Считываю структуру в list, иду по нему, если встречаю СБ без структуры - начинаю идти по всей структуре заново и искать донора (такой же СБ только со структурой). С учетом, что в листе 12к элементов и приходиться вставлять элементы в середину листа, то задача решается долго и не оптимально.

Наброски нового решения

Я думаю использовать словарь, куда сначала считать всех доноров и потом обращаться к нему. Но это упростит поиск донора, но все равно придется вставлять элементы в list, что не очень хорошо, как я понимаю.

Постарался описать все максимально подробно, но не уверен что на 100% описал все нюансы, так как глаз уже замылился. Буду рад любым советам как по общему алгоритму решения такой задачи, так и по конкретным инструментам, которые могут мне помочь. Желательно на python, так как дальше со этой структурой работают другие скрипты на нём.

Какой-то совсем заоблачной скорости не требуется. Просто сейчас задача решается за 1-2 минуты, а хотелось бы за <20 секунд (если такое вообще возможно).


Ответы (0 шт):