def knightGraph(bdSize):
    g = Graph()
    for col in range(bdSize):
        for row in range(bdSize):
            nodeId = posToNodeId(row, col, bdSize)
            moves = getLegalMoves(row, col, bdSize)
            for move in moves:
                nid = posToNodeId(move[0], move[1], bdSize)
                g.addEdge(nodeId, nid)
    return g
def knightGraph(bdSize):
    g = Graph()
    for col in range(bdSize):
        for row in range(bdSize):
            nodeId = posToNodeId(row, col, bdSize)
            moves = getLegalMoves(row, col, bdSize)
            for move in moves:
                nid = posToNodeId(move[0], move[1], bdSize)
                g.addEdge(nodeId, nid)
    return g
Esempio n. 3
0
def knightGraph(bdSize):
    """
    建立KtGraoh
    """
    ktGraph = Graph()
    for row in range(bdSize):
        for col in range(bdSize):
            nodeId = posToNodeId(row, col, bdSize)  # 获取当前的NodeId
            newPositions = genLegalMoves(row,col,bdSize)  # 返回可移动位置的列表
            for e in newPositions:
                nid = posToNodeId(e[0], e[1], bdSize)  # 产生可移动结点的NodeId
                ktGraph.addEdge(nodeId, nid)
    return ktGraph
def buildGraph(wordfile):
    d = {}
    g = Graph()
    with open(wordfile, 'r') as file:
        for line in file:
            word = line[:-1]
            for i in range(len(word)):
                bucket = word[:i] + '_' + word[i + 1:]
                if bucket in d:
                    d[bucket].append(word)
                else:
                    d[bucket] = [word]
    for bucket in d.keys():
        for word1 in d[bucket]:
            for word2 in word1:
                if word1 != word2:
                    g.addEdge(word1, word2)
    return g
Esempio n. 5
0
def buildGraph(wordFile):
    d = {}
    g = Graph()
    wfile = open(wordFile, 'r')
    # create buckets of words that differ by one letter
    for line in wfile:
        word = line[:-1]
        for i in range(len(word)):
            bucket = word[:i] + '_' + word[i + 1:]
            if bucket in d:
                d[bucket].append(word)
            else:
                d[bucket] = [word]
    # add vertices and edges for words in the same bucket
    for bucket in d.keys():
        for word1 in d[bucket]:
            for word2 in d[bucket]:
                if word1 != word2:
                    g.addEdge(word1, word2)
    return g
def buildGraph(wordFile):
    d = {}
    g = Graph()
    wfile = open(wordFile, 'r')
    # create buckets of words that differ by one letter
    for line in wfile:
        word = line[:-1]
        for i in range(len(word)):
            bucket = word[:i] + '_' + word[i + 1:]
            if bucket in d:
                d[bucket].append(word)
            else:
                d[bucket] = [word]
    # add vertices and edges for words in the same bucket
    for bucket in d.keys():
        for word1 in d[bucket]:
            for word2 in d[bucket]:
                if word1 != word2:
                    g.addEdge(word1, word2)
    return g
Esempio n. 7
0
def BulidGraph(wordFile):
    """
     :param wordFile: 传入一个记录所有相同长度的单词的列表
    :return: 返回按照特性连接的图
    """
    g=Graph()
    d={}   # 以三个相同字母+_为键,包含这三个字母的单词为值,记录wordFile中仅有一个字母不同的单词的集合,便于利用该字典添加边
           # addEdge的原则:当两个相同长度单词间仅有一个字母不同时,添加一条无向边
    words=open(wordFile,'r') # words-包含wordFile中所有单词的列表
    for lines in words:
        word=lines[:-1]  # 提取掉'\n'
        for i in range(len(word)):
            bucket=word[:i]+'_'+word[i+1:]
            if bucket in d:
                d[bucket].append(word)
            else:
                d[bucket]=[word]  # 注意这里一个key可能对应着多个word,所以word要存储在列表中
    """提取绘图字典d"""
    for bucket in d.keys():
        for word1 in d[bucket]:
            for word2 in d[bucket]:
                if word1!=word2:
                    g.addEdge(word1,word2)
    return g