Skip to main content

Python : Graph Implementation


class Vertex:
   
    def __init__(self,node):
        self.id = node
        self.adjacent = {}
        self.distance = 99999
        self.visited = False
        self.previous = None
   
    def addNeighbour(self,neighbour,weight = 0):
        self.adjacent[neighbour] = weight
   
    def getConnections(self):
        return self.adjacent.keys()
       
    def getVertexID(self):
        return self.id
   
    def getWeight(self,neighbour):
        return self.adjacent[neighbour]
       
    def setDistance(self,dist):
        self.distance = dist
   
    def getDistance(self):
        return self.distance
       
    def setPrevious(self,prev):
        self.previous = prev
       
    def setVisited(self):
        self.visited = True
       
    def __str__(self):
        return str(self.id) + 'adjacent:' + str([x.id for x in self.adjacent])

class Graph:
    def __init__(self):
        self.vertDictionary = {}
        self.numVertices = 0
       
    def __iter__(self):
        return iter(self.vertDictionary.values())
       
    def addVertex(self,node):
        self.numVertices = self.numVertices + 1
        newVertex = Vertex(node)
        self.vertDictionary[node] = newVertex
        return newVertex
   
    def getVertex(self,n):
        if n in self.vertDictionary:
            return self.vertDictionary[n]
        else:
            return None
   
    def addEdge(self,frm,to,cost =0):
        if frm not in self.vertDictionary:
            self.addVertex(frm)
        if to not in self.vertDictionary:
            self.addVertex(to)
   
        self.vertDictionary[frm].addNeighbour(self.vertDictionary[to],cost)
        self.vertDictionary[to].addNeighbour(self.vertDictionary[frm],cost)
       
    def getVertices(self):
        return self.vertDictionary.keys()
       
    def setPrevious(self,current):
        self.previous = current
   
    def getPrevious(self,current):
        return self.previous
       
    def getEdges(self):
        edges = []
        for v in G:
            for w in v.getConnections():
                vid = v.getVertexID()
                wid = w.getVertexID()
                edges.append((vid,wid,v.getWeight(w)))
        return edges

if __name__ == '__main__':
    G = Graph()
    G.addVertex('a')
    G.addVertex('b')
    G.addVertex('c')
    G.addVertex('d')
    G.addVertex('e')
    G.addEdge('a','b',4)
    G.addEdge('a','c',1)    
    G.addEdge('c','b',2)
    G.addEdge('b','e',4)   
    G.addEdge('c','d',4)   
    G.addEdge('d','e',4)
    print'graph Data'
    print G.getEdges()

Comments

Popular posts from this blog

C programing : File

/* Program to take lines 1,4,7,10.... from a text file and to write into a new file. It is written in c with platform devcpp*/ /* eg:- input file -> ab.txt contain 1 lady gaga sdrgrg ergerg 2 oraph winfrey dfgdr dfgdf . output file neww.txt 1 lady gaga 2 oraph winfrey . . */ #include #include #include using namespace std; main() { char c; FILE *fp1,*fp2; if(fp1=fopen("e:\\ab.txt","r")) { cout<<"\n opened fp1"; } else { cout<<"\n failed fp1"; } if( fp2=fopen("e:\\neww.txt","w") ) { cout<<"\n opened fp2"; } else { cout<<"\n failed fp2"; } while(!feof(fp1)) { c=getc(fp1); while(c!='\n') { putc(c,fp2); c=getc(fp1); } putc('\n',fp2); c=getc(fp1); while(c!='\n') { c=getc(fp1); } c=getc(fp1); while(c!='\n') { c=getc(fp1); } } cout<<"\n End"; getch(); return 0; }

OpenCV installation with Visual Studio 2010

Hi all.I will show you how to install OpenCV library in windows with Visual Studio 2010 to use with Visual C++ Here I am show to install OpenCV Ver 2.2. 1. Download the OpenCV from source forge     The link is : http://sourceforge.net/projects/opencvlibrary/files/opencv-win/ 2. Install the OpenCV to any drive.I have installed as C:\OpenCV2.2 3. Next open Visual Studio 2010.Select New>Project 4. Select Win32 Console Application from Visual C++ popup. 5. Give the project a name and press OK . I gave as 'helloworld' 6. Click Finish to continue.You can see a new file has opened where you can type your code. 7. Next select Project> <your project name> Properties . 8. Go to VC++ Directories and select Include Directories.There add the two links to that     a) C:\OpenCV2.2\include     b) C:\OpenCV2.2\include\opencv 9. Next Go to Library Directories and add the following link     a) C:\OpenCV2.2\lib 10. Now Go to Linker option from the left

Install sublime editor

Hi. Sublime editor is a light weight editor and very helpful for developers to write code.It will highlight the code in colors for easy readability. Sublime editor 3 is the latest one available as of now . The below link shows how to install sublime editor in CentOS . http://software-engineer.gatsbylee.com/how-to-install-sublime-3-on-centos-7-rhel-7/ To know about you system OS is 32 bit or 64 bit , use the below command. >uname -a