Skip to content

Na teoria da complexidade computacional, NP é o acrônimo em inglês para Tempo polinomial não determinístico (Non-Deterministic Polynomial time) que denota o conjunto de problemas que são decidíveis em tempo polinomial por uma máquina de Turing não-determinística. Uma definição equivalente é o conjunto de problemas de decisão que podem ter seu ce…

Notifications You must be signed in to change notification settings

leonardo8787/problemas-np

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Problemas NP-Difíceis e NP-Completos

Trabalho elaborado no Centro Federal de Educação Tecnológica de Minas Gerais, com intuito de discutir sobre os algorítmos da computação que, ainda não se sabe ao certo se são capazes de atuar em um tempo polinomial.

Integrantes:

  • Daniel Alves Sanches
  • Jorge Vitor Gonçalves de souza
  • Julia Mello Lopes
  • Leonardo de Oliveira Campos
  • Lucas de Souza Gontijo
  • Lucas Ribeiro Silva
  • PROBLEMA

    • O problema escolhido por nosso grupo para demonstrar a capacidade de se resolver algo sem uma solução fixa, ou seja, um problema não polinomial, foi o "problema do caixeiro viajante" (traveling salesman problem - TSP). De acordo com o site Wikipedia, nele tentamos "determinar a menor rota para percorrer uma série de cidades (visitando uma única vez cada uma delas), retornando à cidade de origem. Ele é um problema de otimização NP-difícil inspirado na necessidade dos vendedores em realizar entregas em diversos locais (as cidades) percorrendo o menor caminho possível, reduzindo o tempo necessário para a viagem e os possíveis custos com transporte e combustível".

    Para ilustrar o problema, observe a imagem:

    caixeiro viajante

    *Tradução: "Eu quero visitar cada cidade uma única vez terminando no mesmo local em que comecei, pegando o menor caminho."

    COMPILAÇÃO

    • Construído utilizando a linguagem C através do sistema operacional Windows 11 operando em ambiente Linux (WSL2 - Ubuntu-20.04). Para execução do programa siga os comandos abaixo:

    make clean

    make

    make run

    EXECUÇÃO

    • Ao iniciar o programa serão exibidas três opções
      • 1 - Redireciona para o menu de grafos da opção Brute Force
      • 2 - Redireciona para o menu de grafos da opção Busca rápida
      • 0 - Finaliza o programa

    menu1

    • Menu de opções de entrada para utilizar o Brute Force

    menu2.1

    • Menu de opções de entrada para utilizar o Busca Rápida

    menu2.2

    • Exemplo utilizando o método Brute Force (10 vértices)

    ex1

    • Exemplo utilizando o método Busca Rápida (10 vértices)

    ex2

    FUNCIONAMENTO

    • O método de Busca Rápida para resolver o problema utiliza o sistema de backtracking, que auxilia ao percorrer o grafo fazendo isso uma única vez e em um único caminho, que já indica o menor caminho possível. Porém, fazendo isso ele descarta outras possibilidades por elas serem "redundantes" já que mudam a rota mas não o tamanho. Desse modo, essa é a explicação resumida do motivo de sua execução levar um tempo inferior, principalmente considerando os grafos com maiores quantidades de vértices. Já o método Brute Force testa todas as possibilidades da menor rota entre os vértices e por isso leva um tempo superior de execução.

    REFERÊNCIAS

    About

    Na teoria da complexidade computacional, NP é o acrônimo em inglês para Tempo polinomial não determinístico (Non-Deterministic Polynomial time) que denota o conjunto de problemas que são decidíveis em tempo polinomial por uma máquina de Turing não-determinística. Uma definição equivalente é o conjunto de problemas de decisão que podem ter seu ce…

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published

    Contributors 4

    •  
    •  
    •  
    •