Probleme Algoritmica Grafurilor

download Probleme Algoritmica Grafurilor

of 28

Transcript of Probleme Algoritmica Grafurilor

  • 8/3/2019 Probleme Algoritmica Grafurilor

    1/28

    Student:Pruna Marian

    Profesor Indrumator:Toader Florentina

    Specializare:Informatica

    Grupa:4138,An II

    Pag 1 / 28

  • 8/3/2019 Probleme Algoritmica Grafurilor

    2/28

    Probleme de nota 5-6

    sub1. Fie G un graf orientat si A o submultime de varfuri . Determinati multimea arcelor

    incidente cu A catre exterior si multimea arcelor incidente cu A catre interior.

    #include

    #include

    void main (void)

    {

    int n,i,j,a[20][20], A[20];

    FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    3/28

    sub2. Fie G un graf.Gradul minim, maxim, mediu.

    #include

    #include

    void main (void)

    {

    int n,i,j,a[20][20],grad[20],min,max;

    float mediu;

    FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    4/28

    int n,i,j,a[20][20],ok1,ok2;

    FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    5/28

    printf("%4d",a[i][j]);

    printf("\n");

    }

    ok1=1;

    int k;

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    6/28

    else printf("Graful nu este %d-graf",p);

    getch();

    }

    sub6.Tipul grafului:graf turneu.

    #include

    #include

    void main (void)

    {

    int n,i,j,a[20][20],ok1=1,ok2=1,ok3=1;

    FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    7/28

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    8/28

    if(a[i][j]==1) nr++;

    grad[i]=nr;

    }

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    9/28

    if(!ok) printf("graful nu e tare conex");

    else

    printf("graful e tare conex");

    getch();

    }

    sub10.Tipul grafului: cvasi-tare conex

    #include"stdio.h"

    #include"conio.h"

    int a[10][10],n,i,j,k,ok=1;

    FILE *f;

    void main(void)

    {

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    10/28

    sub11.Algoritmi pentru determinarea drumurilor intr-un graf

    Algoritmul Roy-Warshall */

    #include"stdio.h"

    #include"conio.h"

    void main(void)

    {

    int a[10][10],n,j,i,k,b[10][10];FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    11/28

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    12/28

    if(i!=j && a[i][j]==0) ok2=0;

    if (ok2) printf("\n Muchia %d-%d nu este critica",x,y);

    else printf("\n Muchia %d-%d este critica",x,y);

    }

    getch();

    }

    sub13.Determinati daca un varf intr-un graf neorientat conex este critic

    #include

    #include

    void main (void)

    {

    int n,i,j,a[20][20],k;

    FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    13/28

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    14/28

    printf("%d ",a[i][j]);

    }

    }

    int min(int x,int y)

    {

    if(x

  • 8/3/2019 Probleme Algoritmica Grafurilor

    15/28

    sub15. Algoritmul pentru determinarea distantei minime intr-un graf : Roy-Floyd

    #include"stdio.h"

    #include"conio.h"

    void main(void)

    {

    int a[10][10],n,j,i,k;

    FILE *f;clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    16/28

    citire_matrice(m);

    printf("\n");

    scriere_matrice(m);

    printf("\n");

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    17/28

    nod=i;

    }

    if(min==inf) break;

    u[nod]=1;

    for(i=1;id[nod]+m[nod][i])

    {

    d[i]=d[nod]+m[nod][i];

    pred[i]=nod;

    }

    }

    }

    sub17. Algoritmul pentru determinarea distantei minine intr-un graf : Beldman-Ford

    #include

    #include

    void main(void)

    {

    int a[20][20],i,j,s,n,d[20],u,v;

    FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    18/28

    else

    for (i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    19/28

    if(v[i]==0)

    {

    s=i;

    break;

    }

    nr++;

    printf("componenta conexa %3d este", nr);

    for(j=1;j

  • 8/3/2019 Probleme Algoritmica Grafurilor

    20/28

    }

    int eulerian(int varfuri[20],int m,int a[20][20])

    {

    int ok,i;

    ok=1;

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    21/28

    for (i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    22/28

    int i,j,min,l,col;

    min=999;

    for (i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    23/28

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    24/28

    clrscr();

    citire_matrice(a);

    printf("\n");

    scriere_matrice(a);

    printf("\n");

    printf("nodul de start este=");scanf("%d",&x);

    prim(x);

    getch();

    }

    sub22. Algoritmul de gasire a arborilor de cost minim intr-un graf: Krushal

    #include

    #include

    typedef struct muchie_min

    {

    int coloana;

    int linie;

    } muchie_min;

    int a[30][30], t[30][30],n, k, ok, v[30], w[30];

    void initializare(int w[30])

    {

    int i;

    for( i=1;i1 && t[w[k]][w[k-1]]==0 || t[w[k]][w[k-1]]==999)

    return 0;

    for(i=2;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    25/28

    }

    void afisare( int a[30][30], int n)

    {

    int i,j;

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    26/28

    {

    x=minim(a,n).linie;

    y=minim(a,n).coloana;

    t[x][y]=a[x][y];

    t[y][x]=t[x][y];

    if(i>2)

    {

    ok=0;

    bktr(1,y);

    if(ok==1)

    {

    t[x][y]=0;

    t[y][x]=0;

    k++;}

    }

    a[x][y]=a[y][x]=999;

    }printf("\n Arborele de cost minim este: \n");

    afisare(t,n);

    getch();

    }

    sub23.Algoritmul pentru colorarea grafului : Greedy

    #include

    #include

    void main (void)

    {

    int n,a[20][20],F[20],nr,c1[20],o[20],i,j,min;

    FILE *f;

    clrscr();

    f=fopen("mat.txt","r");

    fscanf(f,"%d",&n);

    for(i=1;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    27/28

    printf("o[%d]=",i);scanf("%d",&o[i]);

    F[i]=0;

    }

    F[1]=1;

    printf("\n Numarul de culori disponibile: "); scanf("%d",&nr);

    c1[1]=0;

    for(i=2;i

  • 8/3/2019 Probleme Algoritmica Grafurilor

    28/28

    {

    for(j=1;j