Jump to content

Padrão Strategy e Dijkstra


Tim§id€

Recommended Posts

Boas malta, estou a desenvolver uma aplicação para a disciplina de Programação avançada, onde o programa consiste num jogo de Grafos.

Terei de criar varios minijogos Grafo<Local,Ligacao>  onde cada Local (Vertex) tem pelo menos uma ligação entre si, e Ligação(Edge) terá distancia, custo, e o tipo de ligacao.

É me pedido para calcular o percurso mais pequeno, onde usei o algoritmo dijkstra dentro da implementação do grafo. Até aqui tudo bem, dou dois vertices inicio e fim, e ele da-me o valor mais pequeno.
A duvida surge, é pedido para usar o padrão strategy para alterar o algoritmo de procura( dijkstra) para as diferentes estrategias:

1.minimizar numero de arestas percorridas.

2.minimizar valor da viagem.

3. distancia percorrida.

 

Criei a interfece strategy e mais 3 classes (arestas,valorViagem,Distancia) mas não sei como implementar agora a interface Strategy para usar o dijkstra 

Obrigado

...º(>_<)º...

Link to comment
Share on other sites

public interface Strategy {
  int getDistance(Local a, Local b);
}
public class ArestasStrategy implements Strategy {
  int getDistance(Local a, Local b) {
    // implement
  }
}
public class ValorStrategy implements Strategy {
  int getDistance(Local a, Local b) {
    // implement
  }
}
public class DistanciaStrategy implements Strategy {
  int getDistance(Local a, Local b) {
    // implement
  }
}
public class Grafo {
  List<Ligacao> applyDijkstra(Local inicio, Local final, Strategy strategy) [
    // implement
  }
}
Grafo grafo;
Local inicio;
Local fim;

// create grafo

List<Ligacao> caminho = grafo.applyDijkstra(inicio, fim, new DistanciaStrategy());

agora preenche as brancas ... isto é só como implementar o Design Pattern

Edited by HappyHippyHippo
alterado "Node" para "Local" para ficar de acordo com a nomenclatura do post original
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.