Está en la página 1de 9

Análisis y Diseño de Algoritmos Dra. Ing.

Rina Familia

Actividad 9
NOMBRE: Greisy Marchena, Abel Encarnación__

MATRÍCULA: 21-0800, 21-0749_

I.- A partir de los siguientes grafos, determine los caminos posibles al recorrerlos en
profundidad y en anchura:

a)

Código de algoritmo de recorrido en profundidad (C#)

using System;
using System.Collections.Generic;
class Grafo
{
private char V;
private List<char>[] adj;
Grafo(char v)
{
V = v;
adj = new List<char>[v];
for (int i = 0; i < v; ++i)
{
adj[i] = new List<char>();
}
}
void Vertice(char v, char w)
{
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia
adj[v].Add(w);
}
void DFSUtil(char v, bool[] visited)
{
visited[v] = true;
Console.Write(v + " ");

List<char> vList = adj[v];


foreach (char n in vList)
{
if (!visited[n])
{
DFSUtil(n, visited);
}
}
}
void DFS(char v)
{
bool[] visited = new bool[V];

DFSUtil(v, visited);
}
public static void Main(String[] args)
{
Grafo g = new Grafo('N');
g.Vertice('A', 'B');
g.Vertice('A', 'C');
g.Vertice('A', 'D');
g.Vertice('B', 'A');
g.Vertice('B', 'E');
g.Vertice('B', 'F');
g.Vertice('E', 'B');
g.Vertice('E', 'K');
g.Vertice('K', 'E');
g.Vertice('F', 'B');
g.Vertice('C', 'A');
g.Vertice('C', 'G');
g.Vertice('G', 'C');
g.Vertice('G', 'L');
g.Vertice('L', 'G');
g.Vertice('G', 'M');
g.Vertice('M', 'G');
g.Vertice('D', 'A');
g.Vertice('D', 'H');
g.Vertice('D', 'I');
g.Vertice('D', 'J');
g.Vertice('J', 'D');
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia
g.Vertice('H', 'D');
g.Vertice('I', 'D');
Console.WriteLine("Búsqueda en profundidad desde el nodo A: ");
g.DFS('A');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo B: ");
g.DFS('B');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo C: ");
g.DFS('C');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo D: ");
g.DFS('D');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo E: ");
g.DFS('E');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo F: ");
g.DFS('F');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo G: ");
g.DFS('G');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo H: ");
g.DFS('H');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo I: ");
g.DFS('I');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo J: ");
g.DFS('J');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo K: ");
g.DFS('K');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo L: ");
g.DFS('L');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo M: ");
g.DFS('M');
Console.ReadKey();
}
}

b)

using System;
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia
using System.Collections.Generic;
class Grafo
{
private char V;
private List<char>[] adj;
Grafo(char v)
{
V = v;
adj = new List<char>[v];
for (int i = 0; i < v; ++i)
{
adj[i] = new List<char>();
}
}
void Vertice(char v, char w)
{
adj[v].Add(w);
}
void DFSUtil(char v, bool[] visited)
{
visited[v] = true;
Console.Write(v + " ");

List<char> vList = adj[v];


foreach (char n in vList)
{
if (!visited[n])
{
DFSUtil(n, visited);
}
}
}
void DFS(char v)
{
bool[] visited = new bool[V];

DFSUtil(v, visited);
}
public static void Main(String[] args)
{
Grafo g = new Grafo('N');
g.Vertice('A', 'B');
g.Vertice('A', 'C');
g.Vertice('A', 'D');
g.Vertice('B', 'A');
g.Vertice('B', 'E');
g.Vertice('B', 'F');
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia
g.Vertice('E', 'B');
g.Vertice('E', 'K');
g.Vertice('K', 'E');
g.Vertice('F', 'B');
g.Vertice('C', 'A');
g.Vertice('C', 'G');
g.Vertice('G', 'C');
g.Vertice('G', 'L');
g.Vertice('L', 'G');
g.Vertice('G', 'M');
g.Vertice('M', 'G');
g.Vertice('D', 'A');
g.Vertice('D', 'H');
g.Vertice('D', 'I');
g.Vertice('D', 'J');
g.Vertice('J', 'D');
g.Vertice('H', 'D');
g.Vertice('I', 'D');
Console.WriteLine("Búsqueda en profundidad desde el nodo A: ");
g.DFS('A');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo B: ");
g.DFS('B');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo C: ");
g.DFS('C');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo D: ");
g.DFS('D');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo E: ");
g.DFS('E');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo F: ");
g.DFS('F');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo G: ");
g.DFS('G');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo H: ");
g.DFS('H');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo I: ");
g.DFS('I');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo J: ");
g.DFS('J');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo K: ");
g.DFS('K');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo L: ");
g.DFS('L');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo M: ");
g.DFS('M');
Console.ReadKey();
}
}
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia

c)

using System;
using System.Collections.Generic;
class Grafo
{
private char V;
private List<char>[] adj;
Grafo(char v)
{
V = v;
adj = new List<char>[v];
for (int i = 0; i < v; ++i)
{
adj[i] = new List<char>();
}
}
void Vertice(char v, char w)
{
adj[v].Add(w);
}
void DFSUtil(char v, bool[] visited)
{
visited[v] = true;
Console.Write(v + " ");
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia

List<char> vList = adj[v];


foreach (char n in vList)
{
if (!visited[n])
{
DFSUtil(n, visited);
}
}
}
void DFS(char v)
{
bool[] visited = new bool[V];

DFSUtil(v, visited);
}
public static void Main(String[] args)
{
Grafo g = new Grafo('N');
g.Vertice('1', '2');
g.Vertice('1', '3');
g.Vertice('1', '4');
g.Vertice('2', '1');
g.Vertice('2', '4');
g.Vertice('2', '5');
g.Vertice('3', '1');
g.Vertice('3', '4');
g.Vertice('3', '6');
g.Vertice('4', '3');
g.Vertice('4', '6);
g.Vertice('4', '7');
g.Vertice('4', '1');
g.Vertice('5', '2');
g.Vertice('5', '7');
g.Vertice('6', '3');
g.Vertice('6', '4');
g.Vertice('6', '5');
g.Vertice('7', '4');
g.Vertice('7', '5');
g.Vertice('7', '6');
Console.WriteLine("Búsqueda en profundidad desde el nodo 1: ");
g.DFS('1');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo 2: ");
g.DFS('2');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo 3: ");
g.DFS('3');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo 4: ");
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia
g.DFS('4');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo 5: ");
g.DFS('5');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo 6: ");
g.DFS('6');
Console.WriteLine("\nBúsqueda en profundidad desde el nodo 7: ");
g.DFS('7');
Console.ReadKey();
}
}
II.- A partir de las siguientes tablas, genere el grafo asociado y realice varios
recorridos en dichos grafos:

a)

a b c d
a 1 0 1 1
b 1 1 1 0
c 0 0 1 1
d 0 1 1 0

b)

A B C D E F
A 1 0 1 1 1 0

B 1 1 1 0 1 0

C 1 0 0 1 0 1

D 0 1 0 0 1 1

E 1 0 1 1 1 1

F 1 1 1 0 0 1
Análisis y Diseño de Algoritmos Dra. Ing. Rina Familia

V W X Y Z
V 1 0 1 1 0
W 1 0 1 0 1
X 1 0 0 1 0
Y 1 1 1 1 1
Z 0 1 0 0 1

También podría gustarte