/** * Construtor recebe a matriz de adjacencias, a cidade de origem, e o destino desejado */ public EncontradorDeCaminhos(ArvoreCidades arvoreCidades, Passo[,] matrizDeAdjacencias, Cidade origem, Cidade destino) { this.arvoreCidades = arvoreCidades; this.origem = origem; this.destino = destino; this.matrizDeAdjacencias = matrizDeAdjacencias; this.jaPassou = new bool[matrizDeAdjacencias.GetLength(0)]; this.caminhoFeito = new List <Passo>(); }
/** * Construtor da classe Marte * Recebe o path de um arquivo contendo as cidades como parâmetro * Responsável por insanciar a arvore binaria, * e por incluir os valores nela */ public Marte(string nomeArqCidades, string nomeArqCaminhos) { arvoreCidades = new ArvoreCidades(); int qtdCidades = 0; lerCidades(nomeArqCidades, ref qtdCidades); this.matrizAdjacencias = gerarMatriz(nomeArqCaminhos, qtdCidades); }
public Marte(string cidadeMarteArquivo, string caminhosEntreMarteArquivo) { if (cidadeMarteArquivo.Trim() == null || caminhosEntreMarteArquivo.Trim() == null) { throw new Exception("Nome do arquivo null"); } if (cidadeMarteArquivo.Trim().Equals("") || caminhosEntreMarteArquivo.Trim().Equals("")) { throw new Exception("Nome do arquivo vazio"); } this.cidadeMarteArquivo = cidadeMarteArquivo; this.caminhosEntreMarteArquivo = caminhosEntreMarteArquivo; StreamReader LeitorCidade = new StreamReader(cidadeMarteArquivo); StreamReader LeitorCaminho = new StreamReader(caminhosEntreMarteArquivo); int numeroDeCidades = 0; cidades = new ArvoreCidades(); while (!LeitorCidade.EndOfStream) { string linha = LeitorCidade.ReadLine(); Cidade cidade = new Cidade(linha); cidades.Incluir(cidade); numeroDeCidades++; } matrizAdjacenteDeCaminhos = new Caminho[numeroDeCidades, numeroDeCidades]; while (!LeitorCaminho.EndOfStream) { string linha = LeitorCaminho.ReadLine(); Caminho caminho = new Caminho(linha); MatrizAdjacenteDeCaminhos[caminho.GetIdOrigem, caminho.GetIdDestino] = caminho; } }
public Dijkstra(ArvoreCidades arvoreCidades, Passo[,] matrizAdj, bool distancia, bool custo, bool tempo) { // verificação se foi passado apenas um boolean true int qtsTrues = 0; if (distancia == true) { qtsTrues++; } if (custo == true) { qtsTrues++; } if (tempo == true) { qtsTrues++; } if (qtsTrues != 1) { throw new Exception("Passe apenas um critério de peso!"); } // inicialização de variáveis this.totalDeVertices = matrizAdj.GetLength(0); this.vertices = new Vertice[this.totalDeVertices]; this.matriz = new int[this.totalDeVertices, this.totalDeVertices]; this.nTree = 0; // inserindo valores na matriz for (int i = 0; i < this.totalDeVertices; i++) { for (int j = 0; j < this.totalDeVertices; j++) { if (matrizAdj[i, j] == null) { this.matriz[i, j] = infinity; } else { if (distancia) { this.matriz[i, j] = matrizAdj[i, j].Distancia; } else if (custo) { this.matriz[i, j] = matrizAdj[i, j].Custo; } else if (tempo) { this.matriz[i, j] = matrizAdj[i, j].Tempo; } } } } trajeto = new DistOriginal[this.totalDeVertices]; for (int i = 0; i < this.totalDeVertices; i++) { this.vertices[i] = new Vertice(arvoreCidades.BuscarDado(new Cidade(i, "", null))); } }
// Evento load do formulário que realiza a leitura dos arquivos texto private void FrmMapa_Load(object sender, EventArgs e) { grafoBacktracking = new GrafoBacktracking(@"C:\Users\gabri\Downloads\CaminhosEntreCidadesMarte.txt"); arvoreCidades = new ArvoreCidades(@"C:\Users\gabri\Downloads\CidadesMarte.txt"); caminhos = new PilhaLista <PilhaLista <Movimento> >(); }