SlideShare una empresa de Scribd logo
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define INFINITO 999
#define MAX 100

void imprime(int a[][MAX],int n);

void matriz(int a[][MAX], int n){
int i,j;
srand(time(0));
      for(i = 0;i < n; i++)
      {
            for(j = 0;j < i; j++)
            {
                  a[i][j] = a[j][i]= rand()%50;
                  if( a[i][j]>40)a[i][j]=a[j][i]=INFINITO;

           }
     a[i][i] = INFINITO;
     }
     imprime(a,n);
}

void imprime(int a[][MAX],int n){
      int i,j;
      for(i=0;i<n;i++)
      {
            for(j=0;j<n;j++)
            {
                  printf("%dt",a[i][j]);
            }
            printf("n");
      }
      return;
}

int comprobacion_nodos(int aux_j,int p[]){

     while(p[aux_j] != aux_j){

aux_j = p[aux_j];
}

return aux_j;
}

void union_ij(int i,int j,int p[]){//le quitamos el valor que tenga el arreglo p[]
en ese momento y lo vamos sustituyendo por
  if(j > i){
            p[j] = i;
  }else{
      p[i] = j;
  }
  return;
}

void kruskal(int a[][MAX],int n){
      int count, i, p[MAX], min, j, aux_i, aux_j, k, matriz_temporal[MAX][MAX],
sum;
      count = k = sum = 0;
for(i = 0; i < n; i++)
      {
            p[i] = i;
      }
      while(count < n)
      {
            min = INFINITO; // hacemos min 999
            for(i = 0; i < n; i++)
            {
                  for(j = 0;j < n; j++)
                  {

                        if(a[i][j] < min)
                        {
                              min = a[i][j]; //asignamos el valor de min a el valor
minimo posible
                              aux_i = i; // aux_i variable que guarda el nodo que
participa en la distancia mas orta posible
                              aux_j = j; // aux_j variable auxiliar que guarda el
nodo que participa en la distancia mas orta posible
                        }
                  }
            }
            if(min != INFINITO)
            {
                  i = comprobacion_nodos(aux_i, p);
                  j = comprobacion_nodos(aux_j, p);
                  if (i != j)
                  {
                        matriz_temporal[k][0] = aux_i;//es nuestra matriz auxiliar
para guardar los valores de la distancia mas corta
                        matriz_temporal[k][1] = aux_j;

                        k++;

                        sum += min;
                        union_ij(i,j,p);
                  }
            a[aux_i][aux_j]
= a[aux_j][aux_i] = INFINITO;

            }
                count +=1;
       }
       if(count != n)
       {
             printf("no existe el arbol de expansionn");
       }
       if(count == n)
       {
             printf("El arbol de expansion minima es:n");
             for(k = 0; k < n-1 ; k++)
             {
                   printf(" %d -> %d ",matriz_temporal[k][0],matriz_temporal[k][1]);
             }
       printf("ncosto total = %d n",sum);
       }
return;
}


int main(int pepe, char** juan)
{
      int a[MAX][MAX],n;
      printf("Dame el numero de nodosn");
      scanf("%d",&n);
      matriz(a,n);
      kruskal(a,n);
      return 45;
}

Más contenido relacionado

Destacado

Duties of security guards
Duties of security guardsDuties of security guards
Duties of security guards
Bivas Roy Choudhury
 
Univesidad tecnica particular de loja
Univesidad tecnica particular de lojaUnivesidad tecnica particular de loja
Univesidad tecnica particular de loja
Andrea
 
Hy solution사례(2)즉시연금고객제안사례
Hy solution사례(2)즉시연금고객제안사례Hy solution사례(2)즉시연금고객제안사례
Hy solution사례(2)즉시연금고객제안사례
valuasset
 
Ow2 aspire - RFID - fossa2010
Ow2 aspire - RFID - fossa2010Ow2 aspire - RFID - fossa2010
How to build an OSS community from scratch - fossa2011
How to build an OSS community from scratch - fossa2011How to build an OSS community from scratch - fossa2011
How to build an OSS community from scratch - fossa2011
fOSSa - Free Open Source Software Academia Conference
 
10
1010
IDEA Colombia 3.0 Games Industry Keynote - September 2015
IDEA Colombia 3.0 Games Industry Keynote - September 2015IDEA Colombia 3.0 Games Industry Keynote - September 2015
IDEA Colombia 3.0 Games Industry Keynote - September 2015
International Digital Entertainment Agency (IDEA)
 
Where2.0_presentation_2010
Where2.0_presentation_2010Where2.0_presentation_2010
Where2.0_presentation_2010Roland Shield
 
OSS Legal issues method
OSS Legal issues methodOSS Legal issues method
Unwind your mind
Unwind your mindUnwind your mind
Unwind your mind
Marie Duffy
 
Cute
CuteCute
Metodos especiales ejercicio en clase
Metodos especiales ejercicio en claseMetodos especiales ejercicio en clase
Metodos especiales ejercicio en claseuis
 
Eze sg meeting mitke overall progress-poland_30.06.2010
Eze sg meeting mitke overall progress-poland_30.06.2010Eze sg meeting mitke overall progress-poland_30.06.2010
Eze sg meeting mitke overall progress-poland_30.06.2010Eze
 
החזק הוא הרפה, פרשת שלח-לך
החזק הוא הרפה, פרשת שלח-לךהחזק הוא הרפה, פרשת שלח-לך
החזק הוא הרפה, פרשת שלח-לך
Nurit Eliram
 
Ricardo sarmiento visibilidad_diseminación_portafolio
Ricardo sarmiento visibilidad_diseminación_portafolioRicardo sarmiento visibilidad_diseminación_portafolio
Ricardo sarmiento visibilidad_diseminación_portafolio
chisnet
 
Outbound investments
Outbound investments  Outbound investments
Outbound investments Ashish Panday
 
Assignment#1 Mapacpac, F M P (Cs3112 Os)
Assignment#1 Mapacpac, F M P  (Cs3112 Os)Assignment#1 Mapacpac, F M P  (Cs3112 Os)
Assignment#1 Mapacpac, F M P (Cs3112 Os)dyandmy
 

Destacado (20)

Duties of security guards
Duties of security guardsDuties of security guards
Duties of security guards
 
Univesidad tecnica particular de loja
Univesidad tecnica particular de lojaUnivesidad tecnica particular de loja
Univesidad tecnica particular de loja
 
Hy solution사례(2)즉시연금고객제안사례
Hy solution사례(2)즉시연금고객제안사례Hy solution사례(2)즉시연금고객제안사례
Hy solution사례(2)즉시연금고객제안사례
 
University of versailles return on experience - teaching oss- fossa2011
University of versailles   return on experience - teaching oss- fossa2011University of versailles   return on experience - teaching oss- fossa2011
University of versailles return on experience - teaching oss- fossa2011
 
Ow2 aspire - RFID - fossa2010
Ow2 aspire - RFID - fossa2010Ow2 aspire - RFID - fossa2010
Ow2 aspire - RFID - fossa2010
 
How to build an OSS community from scratch - fossa2011
How to build an OSS community from scratch - fossa2011How to build an OSS community from scratch - fossa2011
How to build an OSS community from scratch - fossa2011
 
10
1010
10
 
IDEA Colombia 3.0 Games Industry Keynote - September 2015
IDEA Colombia 3.0 Games Industry Keynote - September 2015IDEA Colombia 3.0 Games Industry Keynote - September 2015
IDEA Colombia 3.0 Games Industry Keynote - September 2015
 
Where2.0_presentation_2010
Where2.0_presentation_2010Where2.0_presentation_2010
Where2.0_presentation_2010
 
OSS Legal issues method
OSS Legal issues methodOSS Legal issues method
OSS Legal issues method
 
Unwind your mind
Unwind your mindUnwind your mind
Unwind your mind
 
Cute
CuteCute
Cute
 
Metodos especiales ejercicio en clase
Metodos especiales ejercicio en claseMetodos especiales ejercicio en clase
Metodos especiales ejercicio en clase
 
Eze sg meeting mitke overall progress-poland_30.06.2010
Eze sg meeting mitke overall progress-poland_30.06.2010Eze sg meeting mitke overall progress-poland_30.06.2010
Eze sg meeting mitke overall progress-poland_30.06.2010
 
החזק הוא הרפה, פרשת שלח-לך
החזק הוא הרפה, פרשת שלח-לךהחזק הוא הרפה, פרשת שלח-לך
החזק הוא הרפה, פרשת שלח-לך
 
Ricardo sarmiento visibilidad_diseminación_portafolio
Ricardo sarmiento visibilidad_diseminación_portafolioRicardo sarmiento visibilidad_diseminación_portafolio
Ricardo sarmiento visibilidad_diseminación_portafolio
 
Outbound investments
Outbound investments  Outbound investments
Outbound investments
 
Politik Uang dan Pemilu 2009: Catatan kritis untuk jurnalis
Politik Uang dan Pemilu 2009: Catatan kritis untuk jurnalisPolitik Uang dan Pemilu 2009: Catatan kritis untuk jurnalis
Politik Uang dan Pemilu 2009: Catatan kritis untuk jurnalis
 
F os sa2012-j.diggs-facilitating student participation in free software
F os sa2012-j.diggs-facilitating student participation in free softwareF os sa2012-j.diggs-facilitating student participation in free software
F os sa2012-j.diggs-facilitating student participation in free software
 
Assignment#1 Mapacpac, F M P (Cs3112 Os)
Assignment#1 Mapacpac, F M P  (Cs3112 Os)Assignment#1 Mapacpac, F M P  (Cs3112 Os)
Assignment#1 Mapacpac, F M P (Cs3112 Os)
 

Similar a Kruskal

Jorge informe tecnico
Jorge informe tecnicoJorge informe tecnico
Jorge informe tecnico
Jorge Ake Pech
 
Ejercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática iiEjercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática ii
Alvin Jacobs
 
Eliminacion Gaussiana en C
Eliminacion Gaussiana en CEliminacion Gaussiana en C
Eliminacion Gaussiana en CRaInti78
 
Correccion de la prueba mfsi
Correccion de la prueba mfsiCorreccion de la prueba mfsi
Correccion de la prueba mfsiPamela Zambrano
 
Informe tecnico
Informe tecnicoInforme tecnico
PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1
Jordan Puente
 
Deber de programación
Deber de programación  Deber de programación
Deber de programación
legnasilvana
 
Informe minishell
Informe minishellInforme minishell
Informe minishell
Alex Pin
 
Corridas de los ejercicios ya realizados
Corridas de los ejercicios ya realizadosCorridas de los ejercicios ya realizados
Corridas de los ejercicios ya realizadosdiegorap
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamientoWill Gomezz
 
Problemas resueltos de c++
Problemas  resueltos de c++Problemas  resueltos de c++
Problemas resueltos de c++johnny herrera
 
Problemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bProblemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bFRESH221 C.R
 
Unidad 5 informe técnico
Unidad 5 informe técnicoUnidad 5 informe técnico
Unidad 5 informe técnico
René Sosa Arana
 

Similar a Kruskal (20)

Jorge informe tecnico
Jorge informe tecnicoJorge informe tecnico
Jorge informe tecnico
 
Franklincuñas
Franklincuñas  Franklincuñas
Franklincuñas
 
Ejercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática iiEjercicios resueltos practica 2 (nueva 2014) informática ii
Ejercicios resueltos practica 2 (nueva 2014) informática ii
 
Eliminacion Gaussiana en C
Eliminacion Gaussiana en CEliminacion Gaussiana en C
Eliminacion Gaussiana en C
 
Correccion de la prueba mfsi
Correccion de la prueba mfsiCorreccion de la prueba mfsi
Correccion de la prueba mfsi
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1PROBLEMAS DE POGRAMACION 1
PROBLEMAS DE POGRAMACION 1
 
Ejerciciosprogramacion
EjerciciosprogramacionEjerciciosprogramacion
Ejerciciosprogramacion
 
Deber de programación
Deber de programación  Deber de programación
Deber de programación
 
Informe minishell
Informe minishellInforme minishell
Informe minishell
 
Blog
BlogBlog
Blog
 
Programacion 55
Programacion 55Programacion 55
Programacion 55
 
Corridas de los ejercicios ya realizados
Corridas de los ejercicios ya realizadosCorridas de los ejercicios ya realizados
Corridas de los ejercicios ya realizados
 
Blog
BlogBlog
Blog
 
Arreglos
ArreglosArreglos
Arreglos
 
Programacion
ProgramacionProgramacion
Programacion
 
Metodos de ordenamiento
Metodos de ordenamientoMetodos de ordenamiento
Metodos de ordenamiento
 
Problemas resueltos de c++
Problemas  resueltos de c++Problemas  resueltos de c++
Problemas resueltos de c++
 
Problemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bProblemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2b
 
Unidad 5 informe técnico
Unidad 5 informe técnicoUnidad 5 informe técnico
Unidad 5 informe técnico
 

Más de Jorge

Multiplicación de matrices
Multiplicación de matricesMultiplicación de matrices
Multiplicación de matrices
Jorge
 
Proyecto final
Proyecto finalProyecto final
Proyecto finalJorge
 
Optimizacion de Compiladores
Optimizacion de CompiladoresOptimizacion de Compiladores
Optimizacion de CompiladoresJorge
 
Coloreo de grafos
Coloreo de grafosColoreo de grafos
Coloreo de grafosJorge
 
Pruebabfs
PruebabfsPruebabfs
PruebabfsJorge
 
Coloreo
ColoreoColoreo
ColoreoJorge
 

Más de Jorge (6)

Multiplicación de matrices
Multiplicación de matricesMultiplicación de matrices
Multiplicación de matrices
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 
Optimizacion de Compiladores
Optimizacion de CompiladoresOptimizacion de Compiladores
Optimizacion de Compiladores
 
Coloreo de grafos
Coloreo de grafosColoreo de grafos
Coloreo de grafos
 
Pruebabfs
PruebabfsPruebabfs
Pruebabfs
 
Coloreo
ColoreoColoreo
Coloreo
 

Kruskal

  • 1. #include<stdio.h> #include<stdlib.h> #include<time.h> #define INFINITO 999 #define MAX 100 void imprime(int a[][MAX],int n); void matriz(int a[][MAX], int n){ int i,j; srand(time(0)); for(i = 0;i < n; i++) { for(j = 0;j < i; j++) { a[i][j] = a[j][i]= rand()%50; if( a[i][j]>40)a[i][j]=a[j][i]=INFINITO; } a[i][i] = INFINITO; } imprime(a,n); } void imprime(int a[][MAX],int n){ int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%dt",a[i][j]); } printf("n"); } return; } int comprobacion_nodos(int aux_j,int p[]){ while(p[aux_j] != aux_j){ aux_j = p[aux_j]; } return aux_j; } void union_ij(int i,int j,int p[]){//le quitamos el valor que tenga el arreglo p[] en ese momento y lo vamos sustituyendo por if(j > i){ p[j] = i; }else{ p[i] = j; } return; } void kruskal(int a[][MAX],int n){ int count, i, p[MAX], min, j, aux_i, aux_j, k, matriz_temporal[MAX][MAX],
  • 2. sum; count = k = sum = 0; for(i = 0; i < n; i++) { p[i] = i; } while(count < n) { min = INFINITO; // hacemos min 999 for(i = 0; i < n; i++) { for(j = 0;j < n; j++) { if(a[i][j] < min) { min = a[i][j]; //asignamos el valor de min a el valor minimo posible aux_i = i; // aux_i variable que guarda el nodo que participa en la distancia mas orta posible aux_j = j; // aux_j variable auxiliar que guarda el nodo que participa en la distancia mas orta posible } } } if(min != INFINITO) { i = comprobacion_nodos(aux_i, p); j = comprobacion_nodos(aux_j, p); if (i != j) { matriz_temporal[k][0] = aux_i;//es nuestra matriz auxiliar para guardar los valores de la distancia mas corta matriz_temporal[k][1] = aux_j; k++; sum += min; union_ij(i,j,p); } a[aux_i][aux_j] = a[aux_j][aux_i] = INFINITO; } count +=1; } if(count != n) { printf("no existe el arbol de expansionn"); } if(count == n) { printf("El arbol de expansion minima es:n"); for(k = 0; k < n-1 ; k++) { printf(" %d -> %d ",matriz_temporal[k][0],matriz_temporal[k][1]); } printf("ncosto total = %d n",sum); }
  • 3. return; } int main(int pepe, char** juan) { int a[MAX][MAX],n; printf("Dame el numero de nodosn"); scanf("%d",&n); matriz(a,n); kruskal(a,n); return 45; }