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.
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.
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.