Пожалуйста, мне нужно создать контекстное дерево следующим образом: я работаю с python, так как многие советуют мне, что это один из лучших языков для этого типа программ. Проблема, которую я должен решить, заключается в следующем:
У меня есть 3 вектора
v1 = [0, 1]
v2 = [0, 1, 2]
v3 = [‘a’, ‘b’, ‘c’]
Зная, что мой начальный вектор IV=[0,0,’a’]
, мне нужно сгенерировать дерево всех возможных следующих векторов на основе следующих условий:
- если
v1=0
, на следующем уровне v1
может принимать два возможных значения v1=0
или v1=1
, но если v1=1
, оно никогда не вернется к 0, поэтому оно всегда будет равно 1 ( v1 = 1) * +1025 *
- Каким бы ни было значение v2, на следующем уровне он всегда будет генерировать все возможности,
v2=0
, v2=1
и v2=3
- Если
v3=’a’
, то на следующем уровне v3 будет либо v3=’a’
, либо v3=‘b’
; Если v3=’b’
, то на следующем уровне v3 может быть равен v3=’a’
или v3=‘b’
или v3=‘c’
; Если v3=’c’
, то на следующем уровне v3 будет либо v3=‘c’
, либо v3=‘b’
Итак, из первого вектора [0,0,a]-> [0,0,a] [0,0,b] [0,1,a] [0,1,b] [0,2,a] [0,2,b] [1,0,a] [1,0,b] [1,1,a] [1,1,b] [1,2,a] [1,2,b]
Затем для каждого сгенерированного вектора я должен выполнять ту же процедуру, пока не достигну 5 уровней глобального дерева.
Не могли бы вы помочь мне, пожалуйста?
Я начал с этого кода для генерации первого уровня, но теперь я застрял на генерации следующих уровней, выполняя следующие условия:
import numpy as np
import itertools
v1 = [0, 1]
v2 = [0, 1, 2]
v3 = ['a', 'b', 'c']
array = [v1, v2, v3]
AllCombinations = list(itertools.product(*array))
m1 = np.asarray(AllCombinations)
root = (0, 0, 'a')