Пример #1
0
 /**
  * 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>();
 }
Пример #2
0
        /**
         * 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;
            }
        }
Пример #4
0
        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)));
            }
        }
Пример #5
0
 // 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> >();
 }