Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os.path
- def checkFile(filename):
- return os.path.isfile(filename)
- def checkConsistency(filename):
- inFile = open(filename, 'r')
- character = inFile.read()
- validcharacters = 0
- while not (character == ''):
- if character == '0' or character == '1':
- validcharacters += 1
- size = sqrt(validcharacters)
- if size.is_integer():
- return True, size
- else:
- return False, 0
- def adjMatrixToLists(inMat):
- adjlist = []
- for i in range(len(inMat)):
- ilist = []
- for j in range(len(inMat[i])):
- if inMat[i][j] == 1:
- ilist.append(j)
- adjlist.append(ilist)
- return adjlist
- def adjListToMatrix(inList):
- matrix = [[0 for x in range(len(inList))] for x in range(len(inList))]
- for i in range(0, len(inList)):
- for j in inList[i]:
- matrix[i][j] = 1
- return matrix
- def readGraphIntoMatrix(filename, n):
- inFile = open(filename, 'r')
- matrix = [['3' for x in range(n)] for x in range(n)]
- for i in range(0,n):
- for j in range(0,n):
- matrix[i][j] = int(inFile.read(1))
- return matrix
- def printMatrix(matrix):
- for i in matrix:
- for j in i:
- print(j, end="")
- print();
- def graphFacts(adjMatrix):
- numVerticies = len(adjMatrix)
- numEdges = 0
- Degrees = [0] * numVerticies
- iIndex = 0
- jIndex = 0
- for i in adjMatrix:
- for j in i:
- if iIndex == jIndex:
- break
- if j == 1:
- numEdges += 1
- Degrees[iIndex] += 1
- Degrees[jIndex] += 1
- jIndex += 1
- jIndex = 0;
- iIndex += 1
- print("Number of verticies:\t", numVerticies);
- print("Number of edges:\t", numEdges);
- print("\nVertex\tDegree")
- for i in range(0,numVerticies):
- print(i, "\t", Degrees[i])
- def greedyColouring1(inList):
- colours = [0] * len(inList)
- for i in range(0, len(inList)):
- adjColours = []
- for j in inList[i]:
- adjColours.append(colours[j])
- colours[i] = max(adjColours) + 1
- print("Coloured using", max(colours), "colours.")
- return colours
- def greedyColouring2(inList):
- colours = [0] * len(inList)
- for x in range(0, len(inList)):
- lowestColourDict = {}
- for i in range(0, len(inList)):
- if colours[i] != 0:
- continue
- adjColours = []
- for j in inList[i]:
- adjColours.append(colours[j])
- lowestColourDict[i] = max(adjColours) + 1
- minVert = min(lowestColourDict, key = lowestColourDict.get)
- colours[minVert] = lowestColourDict[minVert]
- print("Coloured using", max(colours), "colours.")
- return colours
- def checkColouring(adjList, colours):
- iIndex = 0
- for i in adjList:
- for j in i:
- if colours[j] == colours[iIndex]:
- return False
- iIndex += 1
- return True
- matrix = readGraphIntoMatrix("SampleGraphs/CTexampledigraph17.txt", 17)
- lists = adjMatrixToLists(matrix)
- colours = greedyColouring1(lists)
- print("Legit colouring?", checkColouring(lists, colours))
- colours = greedyColouring2(lists)
- print("Legit colouring?", checkColouring(lists, colours))
Advertisement
Add Comment
Please, Sign In to add comment