Você está na página 1de 6

Anotações Algoritmos e estruturas de dados

Todos os assuntos(iAOCP)

- O Algoritmo de Dijkstra (E.W. Dijkstra) é um dos algoritmos que calcula o caminho de custo
mínimo entre vértices de um grafo. Escolhido um vértice como raiz da busca, este algoritmo
calcula o custo mínimo deste vértice para os demais vértices do grafo. Ele é bastante simples e
com um bom nível de performance. Ele não garante, contudo, a exatidão da solução caso haja
a presença de arcos com valores negativos.

- A maioria das redes p2p utilizam tabelas hash distribuídas para obtenção e alocação de
informações de maneira descentralizada.

- Princípio da Dualidade - cada expressão ou identidade algébrica dedutível a partir dos


postulados em uma álgebra booleana continua válida se todas as ocorrências dos operadores + e
· e os elementos identidade 0 e 1 são trocados um pelo outro.(iaocp)

- Em uma árvore binária T com n > 0 nós, o número de sub-árvores vazias, v(T), é n + 1.(iaocp)

-
A + ¬ A(complemento de a) = 1.(iaocp)
A.¬A=0
A+1=1
A .1=A

- Na análise de complexidade de algoritmos, em que o interesse é restrito a valores assintóticos e


se desconsidera as constantes multiplicativas e aditivas, qual é o número de passos a ser
considerado na expressão 2(n2-1) + 10n3
Considera-se o maior valor assintótico(desconsidera termos de menor grau) desconsiderando
as constantes multiplicativas e aditivas, sendo assim seria n3.
Logo, 0(nlogn) tem menor complexidade que 0(n2), por exemplo.

- ‘’jantar dos filósofos” – problema de sincronização(semáforos assíncronos).


- Estrutura de seleção - o "Senão" é opcional e pode ser omitida. Caso omitida, a estrutura é
chamada de seleção simples; caso contrário é chamada seleção composta.

- O heap sort combina o melhor do algoritmo de ordenação de intercalação com o melhor do


algoritmo de ordenação de inserção.

Todos os assuntos(Varias bancas)

- recursividade direta- a funcao chama a si mesma


recursividade indireta- uma funcao chama outra, a qual chama a 1° funcao

- A estrutura de sequência é observada pela lógica algorítmica e fundamentada no conceito de


máquina de Turing.

- Funções iterator(generator) retorna yield.

- Propriedade de ordem do heap(monte): Em um heap T, para cada nodo v diferente da raiz, a


chave em v é maior ou igual à chave armazenada no nodo pai de v. OBS: Estudar e tentar
entender HEAP, caso o tempo permita.

- Algoritmo de Dijkstra soluciona o problema do caminho mais curto num grafo dirigido;
MapReduce é um modelo de programação desenhado para processar grandes volumes de
dados em paralelo. Utiliza a computação paralela e distribuída para resolver o problema da
escalabilidade no processamento de Bigdata com garantias de tolerância a falhas.
Mark-and-Sweep é um processo usado para a automação do gerenciamento de memória.
Round-robin (RR) é um dos algoritmos empregados por escalonadores de processo e de rede
( fatias no tempo).

- complexidade de pior caso em uma multiplicação de matrizes quadradas n x n é O(n^3).

- Arvores B

A árvore B, utilizando o recurso de manter mais de uma chave em cada nó da estrutura,


proporciona uma organização de ponteiros tal que as operações mencionadas são executadas
rapidamente. Além disso, sua construção assegura que as folhas se encontram todas em um
mesmo nível, não importando a ordem de entrada de dados. Possui uma estrutura que
minimiza o tempo de acesso para operações de busca, inserção e remoção.As árvores B são
largamente utilizadas como forma de armazenamento em memória secundária.

- árvore ordenada é uma árvore de derivação em que os filhos de cada nó estão ordenados, ao
serem rotulados com os lados esquerdos das produções, além de que o filho de cada nó
representa seus correspondentes lados direitos.

árvore B é uma estrutura de dados em árvore, auto balanceada, que armazena dados
classificados e permite pesquisas, acesso sequencial, inserções e remoções em tempo
logarítmico. A árvore B é uma generalização de uma árvore de pesquisa binária em que um
nó pode ter mais que dois filhos.

árvore B+ é uma estrutura de dados do tipo árvore derivada das árvores B, mas com uma
forma diferente de armazenamento de suas chaves. Tal organização confere propriedades,
algoritmos de inserção, busca e remoção de chaves diferentes dos utilizados em árvores B, mas
com uma gama de aplicações muito semelhantes em banco de dados e sistemas de arquivos. A
idéia inicial desta variação da árvore B é manter todas as chaves de busca em seus nós
folha de maneira que o acesso sequencial ordenado das chaves de busca seja um
processo mais eficiente do que em árvores B.

- Diferenças árvores B e B+

Árvore B+: As chaves podem ser armazenadas em qualquer nó, mas os dados só podem ser
armazenados nas folhas.

Árvore B: As chaves e os dados podem ser armazenados tanto nos nós internos da árvore
quanto nas folhas da árvore

árvore Rubro-negra é complexa, mas tem um bom pior-caso de tempo de execução para suas
operações e é eficiente na prática: pode-se buscar, inserir, e remover em tempo O(log n), onde n é
o número total de elementos da árvore. De maneira simplificada, uma árvore rubro-negra é uma
árvore de busca binária que insere e remove de forma inteligente, para assegurar que a
árvore permaneça aproximadamente balanceada.
Algumas propriedades:
*Um nó é vermelho ou preto.
*A raiz é preta. (Esta regra é usada em algumas definições. Como a raiz pode sempre ser alterada
de vermelho para preto, mas não sendo válido o oposto, esta regra tem pouco efeito na análise.)
*Todas as folhas(nil) são pretas.
*Ambos os filhos de todos os nós vermelhos são pretos.
*Todo caminho de um dado nó para qualquer de seus nós folhas descendentes contem o mesmo
número de nós pretos.

árvore splay é uma árvore binária de busca auto-ajustável, com a propriedade adicional de tornar
os elementos recentemente acessados, fáceis de acesso novamente, pois os mantém em sua
raiz. Suas operações básicas, como remoção e inserção, são executadas em O(log n). Todas as
suas operações colocam o elemento envolvido na operação na raiz, através de rotações. Para
muitas sequências de operações não aleatórias, as árvores splay têm melhor desempenho do que
outras árvores de busca, mesmo quando o padrão específico da sequência é desconhecido.

- Em geral, os tipos de dados são classificados em Elementares e Estruturados.


Elementares também são conhecidos como básico, simples, nativos ou primitivos. São eles:
Inteiro, Real, Lógico e caractere (char).
Estruturados que também podem ser encontrados com outra denominação, a saber, compostos.
É: cadeia de caractere. Vale uma observação: este pode ser decomposto, diferentemente dos
tipos elementares.

- No algoritmo de busca binária os elementos precisam estar ordenados.

- V(G) = E - N + 2

V(G) - complexidade ciclomática


E - arestas
N – nós

- O algoritmo shell sort utiliza intensamente a inserção direta.


- Um algoritmo de ordenação é estável quando sempre mantém os elementos repetidos na
mesma ordem em que aparecem na entrada
- Merge Sort é um algoritmo que permite paralelismo
- Timsort é um algoritmo híbrido derivado do Merge Sort e do Insertion Sort.
- Heap (monte) é uma estrutura de dados especializada, baseada em árvore, que é
essencialmente uma árvore quase completa que satisfaz a propriedade heap:

heap máxima: se P é um pai de C, então o valor de P é maior ou igual ao valor de C.

heap mínima: se P é um pai de C, então o valor de P é menor ou igual ao valor de C

O nó no "topo" da heap (sem pais) é chamado de nó raiz.

- Denomina-se grau de um nodo de uma árvore o número de subárvores que são subordinadas
diretamente a este nodo, ou seja, à quantidade de subárvores para as quais este nodo é raiz.

- complexidade assintótica de algoritmos é usada quando são desprezados determinados


tempos da função ou quando somente aproximações da função são possíveis de se obter.

- a classe das linguagens recursivas é um subconjunto estrito da classe das linguagens


recursivamente enumeráveis.

- Tabela de dispersão(Tabela Hash) - associa chaves de pesquisa a valores. Seu objetivo é, a


partir de uma busca simples, fazer uma busca rápida e obter o valor desejado.

- algoritmos que resolvem um problema quebrando-o em problemas menores, resolvendo cada


um deles independentemente e, depois, ajuntando as soluções - Complexidade O(n log n)

- Métodos de algoritmos Estáveis: Bubble, Insertion e Merge(mnemônico = BIM)

- Série temporal consiste em estrutura de dados que rastreiam mudanças nos valores de uma
métrica ao longo do tempo.

- Grafos
Busca em profundidade ou Depth-First Search(DFS) - O algoritmo de busca em profundidade é
percorrer todos os caminhos de um grafo de forma sistemática. Grosso modo, o algoritmo
funciona assim. Começando por um vértice qualquer, e indo "o mais fundo possível". Sempre que
encontramos um vértice já visitado, retornamos da busca.

- Simbologia portas lógicas:


Porta lógica E -> A . B
Porta lógica OU -> A + B
Porta lógica OU exclusivo -> A ⊕ B

- XAND = (not or exclusive) = “se somente se”, retorno verdadeiro se os dois elementos forem
iguais, sejam os dois falsos ou sejam os dois verdadeiros.

- simplificar a função F(X, Y, Z) = X·Z + Z·(X' + XY)


XZ +Z(X' + XY)-> quebro a segunda parte
XZ+ZX'+ZXY -> isolo o Z

Z(X + X'+ XY) -> (X) ou (não X) sempre vai ser 1

Z(1 + XY) -> verdadeiro ou qualquer coisa sempre vai ser 1

Z(1) -> por fim, a função só depende de Z

Z
- Existem duas classificações do radix sort, que são:

Least significant digit (LSD – Dígito menos significativo) radix sort;

Most significant digit (MSD – Dígito mais significativo) radix sort.

- Alguns algoritmos:
Algoritmo de Dijkstra soluciona o problema do caminho mais curto num grafo dirigido;
MapReduce é um modelo de programação desenhado para processar grandes volumes de
dados em paralelo. Utiliza a computação paralela e distribuída para resolver o problema da
escalabilidade no processamento de , com garantias de tolerância a falhas
Mark-and-Sweep é um processo usado para a automação do gerenciamento de memória.
Round-robin (RR) é um dos algoritmos empregados por escalonadores de processo e de rede
( fatias no tempo).

- Tendo como entrada um grafo acíclico dirigido ponderado G = (V, E), pode-se calcular o
caminho mínimo de origem única,relaxando as arestas de G de acordo com a ordenação
topológica de seus vértices, o caminho mínimo de origem única é calculado em tempo θ(V + E).

- while (1) – ciclo infinito, se não tiver um break ou return

- Uma função recursiva precisa de ter no mínimo uma estrutura de seleção(if, por exemplo),
para determinar a parada do loop. Não precisa necessariamente chamar a si mesmo, pois existe a
funcão recursiva indireta.

- Em Teoria dos Grafos, um grafo planar é um grafo que pode ser imerso no plano de tal forma
que suas arestas não se cruzem, esta é uma idealização abstrata de um grafo plano, um grafo
plano é um grafo planar que foi desenhado no plano sem o cruzamento de arestas.

- Busca Linear: Pior caso: O(n); Médio caso: O(n+1)/2; Melhor caso: O(1).

- Uma trie, ou árvore de prefixos, é uma estrutura de dados do tipo árvore ordenada, que pode
ser usada para armazenar um array associativo em que as chaves são normalmente cadeias
de caracteres. A árvore PATRICIA é uma representação compacta de uma Trie onde os nós que
teriam apenas um filho são agrupados nos seus antecessores.

- Overflow na pilha - um novo nodo deve ser inserido, mas não há mais nodos disponíveis na
mesma (um nodo está disponível quando não estiver vinculado à pilha, por exemplo, todos os
nodos alocados entre o topo da pilha e a posição de maior índice do vetor que contém a pilha são
nodos disponíveis).
Underflow na pilha -um nodo deve ser retirado da pilha, mas a pilha está vazia.

- Grafo de Causa-Efeito- define uma maneira sistemática de seleção de um conjunto de casos


de teste que explora ambiguidades e incompletude nas especificações. Como forma de
derivar os casos de teste, este critério utiliza um grafo que é uma linguagem formal na qual a
especificação é traduzida.

- Algumas questões usam a notação de complexidade onde Big-O(O), Big-Ômega(Ω) e Big-


Theta(θ) tratam respectivamente do pior caso, melhor caso, e caso médio.

- No caso da árvore AVL, a inserção e remoção têm custo O (log n).

- matriz simétrica é quando a matriz A é igual a sua transporta, ou seja, Aij = Aji . Exemplos:
-

Você também pode gostar