ટ્રાન્સપોઝ ગ્રાફ



વારંવાર પૂછવામાં આવે છે એક્સેન્ચર એમેઝોન જેપી મોર્ગન માઈક્રોસોફ્ટ ઝાયકસ
મૂળભૂત સાયપ્ટોગ્રાફી ગ્રાફ

સમસ્યા નિવેદન

સમસ્યા "ટ્રાન્સપોઝ ગ્રાફ" જણાવે છે કે તમને ગ્રાફ આપવામાં આવ્યો છે અને તમારે આપેલ સ્થાનાંતરણને શોધવાની જરૂર છે ગ્રાફ.

ટ્રાન્સપોઝ: નિર્દેશિત ગ્રાફનું ટ્રાન્સપોઝ એ જ ધાર અને નોડ રૂપરેખાંકનો સાથે બીજો ગ્રાફ ઉત્પન્ન કરે છે પરંતુ બધી ધારની દિશા વિરુદ્ધ થઈ છે.

ઉદાહરણ

ટ્રાન્સપોઝ ગ્રાફ

ટ્રાન્સપોઝ ગ્રાફ શોધવા માટેના સોલ્યુશનના પ્રકાર

સંલગ્નતા સૂચિ

અભિગમ

આલેખના દરેક નોડની આડા સ્થાનની સૂચિ. કહો, નોડ છે u, ની નજીકની સૂચિમાં હવે દરેક નોડને પસાર કરો u. કહો, નોડ છે v (એટલે ​​કે યુ -> વી). ટ્રાન્સપોઝ ગ્રાફમાં, ઉમેરો u ની અડીને યાદીમાં v (ત્યાં અસ્તિત્વમાં છે અને વી થી યુ સુધી ધાર છે એટલે કે v -> યુ). જ્યાં સુધી ટ્રાન્સપોઝ્ડ ગ્રાફ પ્રાપ્ત ન થાય ત્યાં સુધી આ પ્રક્રિયાને બધા ગાંઠો (અને તેમની સંબંધિત સંલગ્ન સૂચિઓ) માટે પુનરાવર્તન કરો.

ટ્રાન્સપોઝ ગ્રાફ

કોડ

ટ્રાન્સપોઝ ગ્રાફ શોધવા માટે સી ++ પ્રોગ્રામ
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

// Add Edge from node u to v
void addEdge(vector <int> graph[], int u, int v)
{
    graph[u].push_back(v);
}

int main()
{
    // Construct the Given graph
    int n = 7;
    vector <int> graph[n];
    vector<pair<int,int>> edges = {{0,1},{0,2},{3,2},{3,4},{4,5},{6,5},{6,0}};
    
    for(auto e : edges)
    addEdge(graph,e.first,e.second);
    
    // Print Adjacency list of given Graph
    cout<<"The Adjacency List of Given Graph "<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<i<<"->";
        for(auto node : graph[i])
        cout<<node<<" ";
        
        cout<<endl;
    }
    
    // Obtain transpose of the given graph
    vector <int> transpose[n];
    for(int i=0;i<n;i++)
    {
        for(auto node : graph[i])
        addEdge(transpose,node,i);
    }
    
    // Print Adjacency list of the Transpose
    cout<<endl<<"The Adjacency List of Transpose Graph "<<endl;
    for(int i=0;i<n;i++)
    {
        cout<<i<<"->";
        for(auto node : transpose[i])
        cout<<node<<" ";
        
        cout<<endl;
    }
    
    return 0;
}
The Adjacency List of Given Graph 
0->1 2 
1->
2->
3->2 4 
4->5 
5->
6->5 0 

The Adjacency List of Transpose Graph 
0->6 
1->0 
2->0 3 
3->
4->3 
5->4 6 
6->
ટ્રાન્સપોઝ ગ્રાફ શોધવા માટે જાવા પ્રોગ્રામ
import java.util.*;
import java.io.*;

class TutorialCup
{
    // Add Edge from node u to v
    static void addEdge(ArrayList<ArrayList<Integer>> graph, int u, int v)
    {
        graph.get(u).add(v);
    }
    
    public static void main (String[] args)
    {
        // Construct the Given graph
        int n = 7;
        ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
        
        for(int i=0;i<n;i++)
        graph.add(new ArrayList<Integer>());
        
        int [][] edges = {{0,1},{0,2},{3,2},{3,4},{4,5},{6,5},{6,0}};
        
        for(int i=0;i<edges.length;i++)
        addEdge(graph,edges[i][0],edges[i][1]);
        
        // Print Adjacency list of given Graph
        System.out.println("The Adjacency List of Given Graph ");
        for(int i=0;i<n;i++)
        {
            System.out.print(i+"->");
            
            Iterator itr = graph.get(i).iterator();
            
            while(itr.hasNext())
            {
                int node = (Integer)itr.next();
                System.out.print(node+" ");
            }
            
            System.out.println();
        }
        
        // Obtain transpose of the given graph
        ArrayList<ArrayList<Integer>> transpose = new ArrayList<>();
        
        for(int i=0;i<n;i++)
        transpose.add(new ArrayList<Integer>());
        
        for(int i=0;i<n;i++)
        {
            Iterator itr = graph.get(i).iterator();
            
            while(itr.hasNext())
            {
                int node = (Integer)itr.next();
                addEdge(transpose,node,i);
            }
        }
        
        // Print Adjacency list of the Transpose
        System.out.println("\nThe Adjacency List of Transpose Graph ");
        for(int i=0;i<n;i++)
        {
            System.out.print(i+"->");
            
            Iterator itr = transpose.get(i).iterator();
            
            while(itr.hasNext())
            {
                int node = (Integer)itr.next();
                System.out.print(node+" ");
            }
            
            System.out.println();
        }
        
    }
}
The Adjacency List of Given Graph 
0->1 2 
1->
2->
3->2 4 
4->5 
5->
6->5 0 

The Adjacency List of Transpose Graph 
0->6 
1->0 
2->0 3 
3->
4->3 
5->4 6 
6->

અડીને સૂચિનો ઉપયોગ કરીને ટ્રાન્સપોઝ ગ્રાફ માટે જટિલતા વિશ્લેષણ

  1. સમય જટિલતા: ટી (એન) = ઓ (વી + ઇ), અડીને સૂચિનું પુનરાવર્તિત આડઅસર. કારણ કે આપણે આલેખમાંના બધા ગાંઠો ઉપર હમણાં જ ફર્યા છે.
  2. અવકાશ જટિલતા: એ (એન) = ઓ (વી + ઇ), કારણ કે અમને ટ્રાન્સપોઝ ગ્રાફ સ્ટોર કરવા માટે નવી અડીને સૂચિની જરૂર છે.

વી = ગ્રાફમાં શિરોબિંદુઓની સંખ્યા.

E = ગ્રાફમાં ધારની સંખ્યા.

સંલગ્નતા મેટ્રિક્સ

અભિગમ

દ્વારા વ્યાખ્યાયિત ગ્રાફનું ટ્રાન્સપોઝ nxn અડીને મેટ્રિક્સ (જ્યાં n = ગાંઠોની સંખ્યા) તે મેટ્રિક્સ ટ્રાન્સપોઝ છે.

અલ્ગોરિધમ

  1. અડીને મેટ્રિક્સનો ઉપયોગ કરીને ગ્રાફ વ્યાખ્યાયિત કરો.
  2. આપેલ ગ્રાફનું ટ્રાન્સપોઝ મેળવવા માટે સંલગ્ન મેટ્રિક્સનું ટ્રાન્સપોઝ કરો.

ટ્રાન્સપોઝ ગ્રાફ

કોડ

ટ્રાન્સપોઝ ગ્રાફ શોધવા માટે સી ++ પ્રોગ્રામ
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    // Define The Adjacency Matrix
    vector<vector<int>> graph = {{0,1,1,0,0,0,0},
                                {0,0,0,0,0,0,0},
                                {0,0,0,0,0,0,0},
                                {0,0,1,0,1,0,0},
                                {0,0,0,0,0,1,0},
                                {0,0,0,0,0,0,0},
                                {1,0,0,0,0,1,0}};
    
    cout<<"Adjacency Matrix of Given Graph."<<endl;
    
    for(auto node : graph)
    {
        for(auto neighbor : node)
        cout<<neighbor<<" ";
        
        cout<<endl;
    }
    
    // Perform Matrix Transpose
    for(int i=0;i<graph.size();i++)
    {
        for(int j=i+1;j<graph[0].size();j++)
        swap(graph[i][j],graph[j][i]);
    }
    
    // Print the Matrix Transpose
    cout<<"\nAdjacency Matrix of Transpose Graph."<<endl;
    for(auto node : graph)
    {
        for(auto neighbor : node)
        cout<<neighbor<<" ";
        
        cout<<endl;
    }
    
    return 0;
}
Adjacency Matrix of Given Graph.
0 1 1 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 1 0 1 0 0 
0 0 0 0 0 1 0 
0 0 0 0 0 0 0 
1 0 0 0 0 1 0 

Adjacency Matrix of Transpose Graph.
0 0 0 0 0 0 1 
1 0 0 0 0 0 0 
1 0 0 1 0 0 0 
0 0 0 0 0 0 0 
0 0 0 1 0 0 0 
0 0 0 0 1 0 1 
0 0 0 0 0 0 0 
ટ્રાન્સપોઝ ગ્રાફ શોધવા માટે જાવા પ્રોગ્રામ
import java.util.*;
import java.io.*;

class TutorialCup
{
    public static void main (String[] args)
    {
        // Define The Adjacency Matrix
        int [][] graph =            {{0,1,1,0,0,0,0},
                                    {0,0,0,0,0,0,0},
                                    {0,0,0,0,0,0,0},
                                    {0,0,1,0,1,0,0},
                                    {0,0,0,0,0,1,0},
                                    {0,0,0,0,0,0,0},
                                    {1,0,0,0,0,1,0}};
        
        System.out.println("Adjacency Matrix of Given Graph.");
        
        for(int i=0;i<graph.length;i++)
        {
            for(int j=0;j<graph[0].length;j++)
            System.out.print(graph[i][j]+" ");
            
            System.out.println();
        }
        
        // Perform Matrix Transpose
        for(int i=0;i<graph.length;i++)
        {
            for(int j=i+1;j<graph[0].length;j++)
            {
                int temp = graph[i][j];
                graph[i][j] = graph[j][i];
                graph[j][i] = temp;
            }
        }
        
        // Print the Matrix Transpose
        System.out.println("\nAdjacency Matrix of Transpose Graph.");
        for(int i=0;i<graph.length;i++)
        {
            for(int j=0;j<graph[0].length;j++)
            System.out.print(graph[i][j]+" ");
            
            System.out.println();
        }
    }
}
Adjacency Matrix of Given Graph.
0 1 1 0 0 0 0 
0 0 0 0 0 0 0 
0 0 0 0 0 0 0 
0 0 1 0 1 0 0 
0 0 0 0 0 1 0 
0 0 0 0 0 0 0 
1 0 0 0 0 1 0 

Adjacency Matrix of Transpose Graph.
0 0 0 0 0 0 1 
1 0 0 0 0 0 0 
1 0 0 1 0 0 0 
0 0 0 0 0 0 0 
0 0 0 1 0 0 0 
0 0 0 0 1 0 1 
0 0 0 0 0 0 0

અડીને મેટ્રિક્સનો ઉપયોગ કરીને ટ્રાન્સપોઝ ગ્રાફ માટે જટિલતા વિશ્લેષણ

  1. સમય જટિલતા: ટી (એન) = ઓ (વી એક્સ વી) અહીં પણ આપણે આલેખમાંના દરેક નોડ માટે બધા ગાંઠોમાંથી પસાર થઈ ગયા છે. આમ ઓ (વી * વી), તે બહુ-સમયની જટિલતા છે.
  2. અવકાશ જટિલતા: એ (એન) = ઓ (1), કોઈ વધારાની જગ્યા ઉપયોગમાં નથી. અહીં અમે ઇન-પ્લેસ કાર્ય કર્યું છે, આપણે પ્રારંભિક મેટ્રિક્સમાં મૂલ્યો બદલી દીધા છે. આમ સતત જગ્યા લેવામાં આવે છે.

વી = ગ્રાફમાં શિરોબિંદુઓની સંખ્યા.

E = ગ્રાફમાં ધારની સંખ્યા.