Aula Prática Algoritmos e Estrutura de Dados Avançado

R$ 100,00

Disponível

Parcele em até 12x de R$ 10,34 ou 3x sem juros.

À vista R$ 100,00 no boleto, PIX ou cartão.

Pague pelo PIX ou cartão e faça o download agora mesmo.
  
Categoria:
Aula Prática Algoritmos e Estrutura de Dados Avançado

ROTEIRO DE AULA PRÁTICA

NOME DA DISCIPLINA: ALGORITMOS E ESTRUTURA DE DADOS AVANÇADO

Unidade: U1_ FUNDAMENTOS DE ALGORITMOS

Aula: A4_ NOÇÕES DE ORDENAÇÃO

OBJETIVOS

Definição dos objetivos da aula prática:

Implementar e comparar diferentes algoritmos de ordenação em um cenário de aplicação realista.

O objetivo é entender a eficiência e a aplicabilidade de cada algoritmo em diferentes situações.

SOLUÇÃO DIGITAL

Computador com acesso à Internet para uso do Google Colab

O Google Colab, ou Colaboratory, é uma plataforma gratuita baseada na nuvem oferecida pelo

Google. Ela fornece um ambiente de notebook interativo e colaborativo que permite a criação e

execução de código diretamente no navegador, sem a necessidade de configurar ou instalar

qualquer software no seu computador.

https://colab.google/

PROCEDIMENTOS PRÁTICOS

Procedimento/Atividade nº 1

Atividade proposta:

Você trabalha em uma empresa de e-commerce e precisa ordenar uma lista de produtos com

base em diferentes critérios para melhorar a experiência do usuário e a eficiência do sistema de

recomendação. A lista de produtos inclui informações como preço, avaliação dos usuários, data

de adição ao catálogo e categoria.

Procedimentos para a realização da atividade:

1. Preparação dos Dados:

 – Crie uma classe `Produto` com os seguintes atributos:

 – `nome`: string

 – `preco`: float

Público3

 – `avaliacao`: float (0 a 5)

 – `data_adicao`: datetime

 – `categoria`: string

2. Geração de Dados:

 – Escreva um script para gerar uma lista de 1000 produtos aleatórios. Utilize bibliotecas como

`random` e `datetime` para preencher os atributos de cada produto.

3. Implementação de Algoritmos de Ordenação:

 – Implemente os seguintes algoritmos de ordenação:

 – Bubble Sort

 – Quick Sort

 – Merge Sort

 – Heap Sort

4. Critérios de Ordenação:

 – Implemente funções de ordenação para os seguintes critérios:

 – Por preço (ascendente e descendente)

 – Por avaliação (ascendente e descendente)

 – Por data de adição (mais recente primeiro e mais antigo primeiro)

 – Por categoria (ordem alfabética)

5. Comparação de Desempenho:

 – Meça e compare o tempo de execução de cada algoritmo para cada critério de ordenação

utilizando a biblioteca `time`.

6. Análise de Resultados:

 – Escreva um relatório discutindo a eficiência de cada algoritmo de ordenação nos diferentes

critérios. Considere a complexidade temporal de cada algoritmo e como eles se comportam com

os dados gerados.

Dicas

– Utilize a função `sorted()` do Python para verificar a corretude das suas implementações.

– A biblioteca `time` pode ser utilizada para medir o tempo de execução de um bloco de código.

– A biblioteca `datetime` pode ajudar na manipulação de datas.

– Para visualização, você pode utilizar gráficos de barras para mostrar o tempo de execução de

cada algoritmo em diferentes cenários. A biblioteca `matplotlib` pode ser útil aqui.

Público4

Código Inicial:

import random

import datetime

import time

class Produto:

 def __init__(self, nome, preco, avaliacao, data_adicao, categoria):

 self.nome = nome

 self.preco = preco

 self.avaliacao = avaliacao

 self.data_adicao = data_adicao

 self.categoria = categoria

 def __repr__(self):

 return f”{self.nome}: {self.preco}, {self.avaliacao}, {self.data_adicao}, {self.categoria}”

def gerar_produtos(n):

 nomes = [“Produto” + str(i) for i in range(n)]

 precos = [round(random.uniform(10, 1000), 2) for _ in range(n)]

 avaliacoes = [round(random.uniform(0, 5), 2) for _ in range(n)]

 datas = [datetime.datetime.now() – datetime.timedelta(days=random.randint(0, 365)) for _ in

range(n)]

 categorias = [“Categoria” + str(random.randint(1, 5)) for _ in range(n)]

 produtos = [Produto(nomes[i], precos[i], avaliacoes[i], datas[i], categorias[i]) for i in range(n)]

 return produtos

# Exemplo de geração de produtos

produtos = gerar_produtos(1000)

for produto in produtos[:10]: # Mostrar os 10 primeiros produtos

 print(produto)

Checklist:

• Preparação dos Dados

• Geração de Dados

• Implementação de Algoritmos de Ordenação

Público5

• Critérios de Ordenação

• Comparação de Desempenho

• Análise de Resultados

RESULTADOS

Resultados de Aprendizagem:

Espera-se que o aluno seja capaz de entender a implementação e a análise dos principais

algoritmos de ordenação aplicados a um cenário realista, proporcionando uma compreensão

prática e teórica sólida sobre a eficiência dos diferentes métodos de ordenação.

ESTUDANTE, VOCÊ DEVERÁ ENTREGAR

Descrição orientativa sobre a entregada da comprovação da aula prática:

• Para comprovar a realização da atividade, é necessario entregar um arquivo com os

códigos criados e um PDF com o relatório de análise.

Unidade: U2_ ÁRVORES

Aula: A1_ ÁRVORES AVL

OBJETIVOS

Definição dos objetivos da aula prática:

Entender os conceitos de balanceamento e rotação em árvores binárias de busca implementando

uma Árvore AVL em Python, incluindo inserção, remoção e busca de nós, além de garantir que a

árvore permaneça balanceada após cada operação.

SOLUÇÃO DIGITAL

Computador com acesso à Internet para uso do Google Colab

O Google Colab, ou Colaboratory, é uma plataforma gratuita baseada na nuvem oferecida pelo

Google. Ela fornece um ambiente de notebook interativo e colaborativo que permite a criação e

execução de código diretamente no navegador, sem a necessidade de configurar ou instalar

qualquer software no seu computador.

https://colab.google/

Público6

PROCEDIMENTOS PRÁTICOS

Procedimento/Atividade nº 1

Atividade proposta:

Você trabalha em uma empresa de tecnologia que está desenvolvendo um sistema de

gerenciamento de dados. Para otimizar as operações de busca, inserção e remoção, você foi

designado para implementar uma Árvore AVL que manterá os dados balanceados.

Procedimentos para a realização da atividade:

1. Definição da Estrutura da Árvore AVL:

 – Crie uma classe `Node` para representar cada nó da árvore.

 – Crie uma classe `AVLTree` para gerenciar as operações na árvore.

2. Implementação de Operações Básicas:

 – Implementar a inserção de nós na árvore AVL.

 – Implementar a remoção de nós da árvore AVL.

 – Implementar a busca de nós na árvore AVL.

3. Balanceamento da Árvore:

 – Implementar as rotações à esquerda e à direita para manter a árvore balanceada.

 – Garantir que, após cada inserção e remoção, a árvore permanece uma AVL válida.

4. Testes de Validação:

 – Escreva testes para validar a inserção, remoção e busca em diferentes cenários.

 – Testar casos de borda como inserção de nós em ordem ascendente ou descendente para

verificar o balanceamento.

5. Visualização da Árvore:

 – Implementar uma função para imprimir a árvore de forma que seja fácil visualizar sua estrutura

e balanceamento.

Dicas

– Utilize a propriedade de altura dos nós para ajudar no balanceamento.

– Uma árvore AVL é uma árvore binária de busca onde a diferença de altura entre as subárvores

esquerda e direita de qualquer nó é no máximo 1.

– As rotações (simples e duplas) são cruciais para manter a árvore balanceada.

Público7

Checklist:

• Definição da Estrutura da Árvore AVL:

• Implementação de Operações Básicas:

• Balanceamento da Árvore:

• Testes de Validação:

• Visualização da Árvore:

RESULTADOS

Resultados de Aprendizagem:

Espera-se que o aluno seja capaz de entender a implementação de uma Árvore AVL em Python

com operações de inserção, remoção e busca, além do balanceamento automático,

demonstrando habilidade prática.

ESTUDANTE, VOCÊ DEVERÁ ENTREGAR

Descrição orientativa sobre a entregada da comprovação da aula prática:

Para comprovar a realização da atividade, é necessario entregar um relatório em PDF com:

• Códigos criados

• Prints de tela com os resultados da execução

• Um breve relatório de análise.

Unidade: U3_ GRAFOS

Aula: A3_ CAMINHOS MÍNIMOS

OBJETIVOS

Definição dos objetivos da aula prática:

Compreender os conceitos de grafos, algoritmos de busca de caminhos mínimos e estruturas de

dados como listas de adjacência e filas de prioridade.

SOLUÇÃO DIGITAL

Computador com acesso à Internet para uso do Google Colab

O Google Colab, ou Colaboratory, é uma plataforma gratuita baseada na nuvem oferecida pelo

Google. Ela fornece um ambiente de notebook interativo e colaborativo que permite a criação e

execução de código diretamente no navegador, sem a necessidade de configurar ou instalar

qualquer software no seu computador.

Público8

https://colab.google/

PROCEDIMENTOS PRÁTICOS

Procedimento/Atividade nº 1

Atividade proposta:

Você está desenvolvendo um sistema de navegação para uma aplicação de mapas. Para

encontrar a rota mais curta entre dois pontos, você precisa implementar o algoritmo de Dijkstra.

Procedimentos para a realização da atividade:

1. Definição da Estrutura do Grafo:

• Crie uma classe Graph para representar o grafo usando uma lista de adjacência.

• Cada aresta do grafo deve ter um peso associado.

2. Implementação do Algoritmo de Dijkstra:

• Implemente o algoritmo de Dijkstra para encontrar o caminho mais curto a partir de

um nó de origem para todos os outros nós do grafo.

• Utilize uma fila de prioridade (min-heap) para otimizar a escolha do próximo nó com

a menor distância.

3. Função para Encontrar o Caminho Mínimo:

• Implemente uma função que, dado um nó de origem e um nó de destino, retorne o

caminho mínimo e a distância mínima entre esses nós.

4. Testes de Validação:

• Escreva testes para validar o algoritmo com diferentes grafos e nós de origem e

destino.

• Teste casos de borda, como grafos desconectados ou nós sem arestas.

5. Visualização do Caminho:

• Implemente uma função para imprimir o caminho mínimo de forma legível.

Dicas

• Utilize um dicionário para representar o grafo onde as chaves são os nós e os valores são

listas de tuplas (vizinho, peso).

• A fila de prioridade pode ser implementada usando o módulo heapq do Python.

Público9

• Mantenha um dicionário de distâncias mínimas e um dicionário de predecessores para

reconstruir o caminho

RESULTADOS

Resultados de Aprendizagem:

Espera-se que o aluno seja capaz de entender a implementação de um algoritmo que encontra

caminhos mínimos em grafos.

ESTUDANTE, VOCÊ DEVERÁ ENTREGAR

Descrição orientativa sobre a entregada da comprovação da aula prática:

Para comprovar a realização da atividade, é necessario entregar um relatório em PDF com:

• Códigos criados

• Prints de tela com os resultados da execução

• Um breve relatório explicando todo o procedimento realizado.

Unidade: U4_ COMPRESSÃO DE DADOS E OUTRAS ESTRUTURAS

Aula: A1_ HEAP

OBJETIVOS

Definição dos objetivos da aula prática:

Aprender a construir uma lista de prioridade, inserir e remover elementos no heap, e alterar a

prioridade de elementos existentes.

SOLUÇÃO DIGITAL

Infraestrutura mínima necessária para execução.

Computador com acesso à Internet para uso do Google Colab

O Google Colab, ou Colaboratory, é uma plataforma gratuita baseada na nuvem oferecida pelo

Google. Ela fornece um ambiente de notebook interativo e colaborativo que permite a criação e

execução de código diretamente no navegador, sem a necessidade de configurar ou instalar

qualquer software no seu computador.

https://colab.google/

Público10

PROCEDIMENTOS PRÁTICOS

Procedimento/Atividade nº 1

Atividade proposta:

Você deverá implementar uma lista de prioridade usando um heap (min-heap) em Python.

Procedimentos para a realização da atividade:

1. Construção da Lista de Prioridade: Construa a classe `PriorityQueue`

 – Implemente uma lista de prioridade usando um min-heap.

 – crie uma função para inicializar a lista de prioridade.

 – Implemente funções para inserir elementos na lista de prioridade.

 – Implemente funções para remover o elemento com a menor prioridade.

 – Implemente uma função para alterar a prioridade de um elemento existente.

2. Teste da Lista de Prioridade: Implemente a função `test_priority_queue` para testar a lista de

prioridade

 – Inicialize uma lista de prioridade.

 – Adicione tarefas com diferentes prioridades e exiba a lista.

 – Insira novas tarefas na lista de prioridade.

 – Remova a tarefa com a menor prioridade e exiba a lista após cada remoção.

 – Altere a prioridade de uma tarefa existente e exiba a lista.

 – Verifique os resultados e assegure-se de que as operações de inserção, remoção e alteração

de prioridade funcionam conforme esperado.

Dicas

– Use a estrutura de min-heap do módulo `heapq` para gerenciar a lista de prioridade.

– Mantenha um dicionário (`entry_finder`) para rastrear os itens na lista e facilitar a alteração de

prioridade.

– Use um contador (`counter`) para diferenciar entre tarefas com a mesma prioridade.

RESULTADOS

Resultados de Aprendizagem:

Espera-se que o aluno seja capaz de entender a implementação de um algoritmo de lista de

prioridades com heap.

Público11

ESTUDANTE, VOCÊ DEVERÁ ENTREGAR

Descrição orientativa sobre a entregada da comprovação da aula prática:

Para comprovar a realização da atividade, é necessario entregar um relatório em PDF com:

• Códigos criados

• Prints de tela com os resultados da execução

• Um breve relatório explicando todo o procedimento realizado

Elaboramos os portfólios, já deixamos prontos, nas normas da ABNT e conforme os requisitos da universidade. Fácil assim! O MELHOR É QUE VOCÊ COMPRA E JÁ BAIXA NA HORA O SEU ARQUIVO EM WORD! Sabemos que conciliar trabalho, família, vida profissional e estudos é difícil hoje em dia, por isso, estamos aqui para ajudar você. Conte com nossa qualidade, experiência e profissionalismo adquirindo seu portfólio conosco. GARANTIMOS SEU CONCEITO!

Como se realizam os envios?

O seu trabalho é disponibilizado pronto, respondido e nas normas já na mesma hora aqui em nosso site na sua área de downloads e também no seu e-mail.

Em quanto tempo recebo o portfólio?

Os envios são imediatos. Após sua compra, o trabalho já é disponibilizado instantaneamente aqui em nosso site e no seu e-mail.

E se o portfólio que comprei precisar de correção?

Caso haja alguma solicitação de correção/alteração por parte do tutor, basta entrar em contato conosco pelo WhatsApp que providênciaremos sem custo algum.

Qual o formato do arquivo?

Os arquivos são enviados em formato Word e são editáveis.

Caso eu tiver alguma dúvida, terei suporte no pós venda?

Sim, com certeza. Basta clicar no ícone do WhatsApp no cantinho da tela. Será um prazer atendê-lo(a).

Quais os seus canais de contato?

Whatsapp: 53 984751621 – Clicar no canto da tela ou ESCANEIE O QRCODE ABAIXO

projeto de extensão unopar

E-mail:portifoliosp@gmail.com

PORTFOLIO PRONTO UNOPAR ANHANGUERA

Portfólio em Word, respondido, completo e já nas normas.

Main Menu