根据python

时间:2018-10-25 20:08:18

标签: python dictionary path graph-theory

我有以下图形: graph of five states

初始状态为“ A”。如果输入为0,则可以转到“ B”或“ D”,如果输入为1,则可以转到“ E”。我想要一个字符串的所有可能路径。例如,如果输入是字符串'100',我希望最后输入:

'AEBD' 'AEDB'

我用两个单独的字典制作了一个函数,一个用于“ 0”转换,另一个用于“ 1”转换。

这是我的代码:

def possible_moves(play):
    posibles_one= {'A':['E'],
           'B':['A','C','E'],
           'C':['E'],
           'D':['A','E'],
           'E':['A','C']}
    posibles_zero= {'A':['B','D'],
           'B':['D'],
           'C':['B'],
           'D':['B'],
           'E':['B','D']}
    new_list = []
    state= 'A'
    for c in play:
        if c == '1':
            for k,v in posibles_one.items():
                if k == state:
                    new_list.extend([k,v])  
        state= new_list[-1][-1]     
        if c == '0':
            for k,v in posibles_zero.items(): 
                if k == state:
                    new_list.extend([k,v]) 
        state = new_list[-1][-1]      
    return new_list

运行函数时,我得到以下列表:

print(possible_moves('100'))
['A', ['E'], 'E', ['B', 'D'], 'D', ['B']]

我的代码部分起作用。 'A',['E']是输入1的第一个路径。然后,“ E”可以转到“ B”或“ D”。从“ E”开始,到“ 0”,您可以通过['B','D']。但是,我只有'D'而不是'B'的最后可能路径。我不知道如何遍历正在生成的列表中的元素。对解决问题有任何想法吗?

0 个答案:

没有答案