nataliameira / ProjetoAnaliseAlgoritmos

Atividades da disciplina PCC104 - Projeto e Análise de Algoritmos

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ProjetoAnaliseAlgoritmos

Atividades da disciplina PCC104 - Projeto e Análise de Algoritmos

Este repositório contém os exercícios referentes a disciplina PCC104 - Projeto e Análise de Algoritmos com os códigos comentados.

Acesse o repositório do professor aqui

Livro Didático : Levitin, Anany. Introduction to the design & analysis of algorithms. 3rd ed. Pearson, 2012.

Sumário

Busca exaustiva, Diminuir para conquistar e Dividir para conquistar

  • ProjetoAnaliseAlgoritmos.cpp - contém a implementação principal, com a função main de cada algoritmo professor.
  • Utils.cpp - contém os utilitários da implementação principal professor.
  • BruteForce.cpp - contém os algoritmos de força bruta: Selection Sort e Bubble Sort professor.
  • Students.cpp - contém o algoritmo de força bruta generalizado professor.
  • GraphSearch.cpp - contém os algoritmos de força bruta para grafos: Busca em profundidade (dfs) e Busca em largura (bfs) professor.
  • PermSetGenerators.cpp - contém os algoritmos de permutação: permutação à partir do busca em profundidade, permutação de binários, permutação e Binary Reflected Gray Code professor.
  • ConvexHull.cpp - contém o algoritmo Convex Hull professor.
  • TopologicalSorting.cpp - contém o algoritmo de Ordenação Topológica professor.
  • BinarySearchTree.cpp - contém o algoritmo de Binary Search Tree professor.
  • JohnsonTrotter.cpp - contém o algoritmo de Johnson Trotter daher13.
  • InsertionSort.cpp - contém o algoritmo de Insertion Sort, proposto no livro didático (p.134) nataliameira.
  • CommonElements.cpp - contém o algoritmo que encontra todos os elementos comuns em duas listas, proposto no livro didático (p.8) nataliameira.
  • EuclideanAlgorithmGCD.cpp - calcula o *Máximo Divisor Comum de m e n, gcd(m,n) pelo algoritmo de Euclides, proposto no livro didático (p.4) nataliameira.
  • Dmin.cpp - encontra a Distância entre os dois elementos mais próximos em um array de números, proposto no livro didático (p.18) nataliameira.
  • Fatorial.cpp - encontra o Fatorial de um número n recursivamente, proposto no livro didático (p.70) nataliameira.
  • Fibonacci.cpp - encontra recursivamente o enésimo numero da sequencia de Fibonacci, proposto no livro didático (p.81) nataliameira.
  • SequentialSearch2.cpp - implementa a pesquisa sequencial com uma chave de pesquisa como um sentinela, algoritmo Sequential Search 2, proposto no livro didático (p.104) nataliameira.
  • BruteForceStringMatch.cpp - implementa correspondência de string de força bruta, algoritmo Brute Force String Match, proposto no livro didático (p.105) nataliameira.
  • ClosestPairProblem.cpp - encontra a distância entre dois pontos mais próximos no plano por força bruta, algoritmo Brute Force Closest Pair, proposto no livro didático (p.109) nataliameira.
  • BinarySearch.cpp - implementa uma busca binária não-recursiva, algoritmo Binary Search, proposto no livro didático (p.151) nataliameira.
  • MatrixMultiplication.cpp - multiplica duas matrizes quadradas de ordem n, algoritmo Matrix Multiplication, proposto no livro didático (p.64), baseado em daher13.
  • MergeSort.cpp - classifica a matriz A [0..n - 1] por mesclagem recursiva, algoritmo Merge Sort, proposto no livro didático (p.172) nataliameira.
  • Soma.cpp - soma todos os elementos de um vetor v [0..n - 1] pelos métodos busca exaustiva, diminuir para conquistar e dividir para conquistar nataliameira.
  • MaiorMenor.cpp - encontra o maior e menor valor em um vetor v [0..n - 1] pelo método busca exaustiva e o menor valor pelo método dividir para conquistar nataliameira.
  • MinMax.cpp - encontra o maior e menor valor em um vetor v [0..n - 1] pelos métodos busca exaustiva, diminuir para conquistar e dividir para conquistar professor.
  • Mean.cpp - encontra a média dos valores em um vetor v [0..n - 1] pelos métodos busca exaustiva, diminuir para conquistar e dividir para conquistar professor.

Programação Dinâmica, Algoritmos Gulosos, Backtracking e Branch and Bound

  • Fibonacci_ProgDin.cpp - encontra o enésimo numero da sequencia de Fibonacci pelo conceito de programação dinâmica professor.
  • SpanningTree.cpp - resolve o algoritmo de Prim pelo conceito de algoritmo guloso e spanning tree problem, proposto no livro didático (p.318) professor.
  • Elements.cpp - completa o algoritmo de Prim.
  • CoinRow.cpp - coleta a quantidade máxima de dinheiro dada uma fila de moedas seguindo as restrições do algoritmo Coin-row problem, pelo conceito de programação dinâmica, proposto no livro didático (p.285) professor.
  • ChangeMaking.cpp - fornece o troco para o valor n usando um número mínimo de moedas de denominações d1<d2<...<dm , do algoritmo Change Making Problem, pelo conceito de programação dinâmica, proposto no livro didático (p.287) professor.
  • Knapsack.cpp - resolve o problema da mochila pelo conceito de programação dinâmica, proposto no livro didático (p.295) professor.
  • Backtracking.cpp - implementa os problemas n-queens problem e sudoku, pelo conceito de backtracking, proposto no livro didático (p.423) professor.
  • BranchAndBound.cpp - implementa o problema do Caixeiro Viajante, pelo conceito de branch and bouond , proposto no livro didático (p.423) professor.
  • HamiltonianCircuit.cpp - implementa o problema Hamiltonian Circuit Problem, pelo conceito de backtracking, proposto no livro didático (p.454) nataliameira.
  • SubsetSum.cpp - encontra os subconjuntos de um determinado conjunto A = {a1,. . . , an} de n inteiros positivos cuja soma é igual a um determinado inteiro positivo d, pelo conceito de backtracking , baseado no proposto no livro didático (p.427) nataliameira.
  • N_Torres.cpp - resolve o problemas das n torres , pelo conceito de backtracking nataliameira.
  • Constraint_Satisfaction.cpp - dado um conjunto domínio, encontra os subconjuntos de variáveis que satisfazem um conjuntp de restrições, pelo conceito de backtracking nataliameira.

Listas de Exercícios

About

Atividades da disciplina PCC104 - Projeto e Análise de Algoritmos


Languages

Language:C++ 99.1%Language:C 0.9%