Este documento discute heaps binomiais, que são estruturas de dados eficientes para implementar filas de prioridade. Ele descreve a representação de heaps binomiais como conjuntos de árvores binomiais e apresenta algoritmos para criar, inserir, unir, remover e decrementar elementos em heaps binomiais. Finalmente, discute aplicações como escalonamento por prioridades.
O documento apresenta três problemas de física sobre cinemática escalar. O primeiro problema trata de um motorista que freia para evitar atropelar um pedestre e pede para calcular seu tempo de reação e a aceleração do carro, além da taxa de álcool no sangue do motorista. O segundo problema descreve uma corrida entre uma lebre e um lobo e pede para graficar suas velocidades. O terceiro problema é sobre uma corrida entre dois carros caseiros e pede para calcular a distância da pista.
O documento apresenta 5 regras operatórias para potências: 1) o produto de potências com a mesma base é uma potência com a soma dos expoentes; 2) o produto de potências com o mesmo expoente é uma potência com o produto das bases; 3) o quociente de potências com a mesma base é uma potência com a diferença dos expoentes; 4) o quociente de potências com o mesmo expoente é uma potência com o quociente das bases; 5) para calcular potências de potências, multiplica-se os expoentes mantendo
O documento discute classes abstratas, anônimas e interfaces em Java. Apresenta classes abstratas como aquelas que não podem ser instanciadas e servem apenas como modelo para classes concretas. Discute também métodos abstratos que forçam classes filhas a implementá-los. Apresenta interfaces como contratos que definem métodos públicos e abstratos que classes podem implementar. E explica classes anônimas como classes sem nome usadas para implementar interfaces.
Complexidade de algoritmos insertion, selection e bubble sort.Júlio Rocha
O documento analisa a complexidade de tempo dos algoritmos de ordenação Bubble Sort, Selection Sort e Insertion Sort, mostrando que todos possuem complexidade quadrática no pior caso (O(n2)). O Bubble Sort realiza aproximadamente n2 trocas no pior caso. O Selection Sort faz (n-1) trocas no pior caso. O Insertion Sort faz n2/2 comparações no pior caso.
O documento discute conceitos fundamentais de dinâmica de fluidos como escoamento laminar e turbulento, número de Reynolds, coeficiente de arrasto e força de Magnus. Trata da influência da camada limite, rugosidade e rotação no arrasto de corpos em escoamento.
O documento descreve o sistema nervoso humano e as redes neurais artificiais, incluindo sua estrutura, funcionamento e processos de aprendizado como a regra Delta. As redes neurais são usadas em sistemas de inteligência artificial conexionista que aprendem com a experiência ao invés de seguir regras programadas.
1) O heap é uma estrutura de dados representada por um arranjo que pode ser vista como uma árvore binária completa. 2) Existem dois tipos de heap - máximo e mínimo - que diferem na propriedade de ordenação dos nós. 3) O procedimento HEAP MÁXIMO é usado para manter a propriedade de ordenação quando um nó é alterado.
O documento apresenta três problemas de física sobre cinemática escalar. O primeiro problema trata de um motorista que freia para evitar atropelar um pedestre e pede para calcular seu tempo de reação e a aceleração do carro, além da taxa de álcool no sangue do motorista. O segundo problema descreve uma corrida entre uma lebre e um lobo e pede para graficar suas velocidades. O terceiro problema é sobre uma corrida entre dois carros caseiros e pede para calcular a distância da pista.
O documento apresenta 5 regras operatórias para potências: 1) o produto de potências com a mesma base é uma potência com a soma dos expoentes; 2) o produto de potências com o mesmo expoente é uma potência com o produto das bases; 3) o quociente de potências com a mesma base é uma potência com a diferença dos expoentes; 4) o quociente de potências com o mesmo expoente é uma potência com o quociente das bases; 5) para calcular potências de potências, multiplica-se os expoentes mantendo
O documento discute classes abstratas, anônimas e interfaces em Java. Apresenta classes abstratas como aquelas que não podem ser instanciadas e servem apenas como modelo para classes concretas. Discute também métodos abstratos que forçam classes filhas a implementá-los. Apresenta interfaces como contratos que definem métodos públicos e abstratos que classes podem implementar. E explica classes anônimas como classes sem nome usadas para implementar interfaces.
Complexidade de algoritmos insertion, selection e bubble sort.Júlio Rocha
O documento analisa a complexidade de tempo dos algoritmos de ordenação Bubble Sort, Selection Sort e Insertion Sort, mostrando que todos possuem complexidade quadrática no pior caso (O(n2)). O Bubble Sort realiza aproximadamente n2 trocas no pior caso. O Selection Sort faz (n-1) trocas no pior caso. O Insertion Sort faz n2/2 comparações no pior caso.
O documento discute conceitos fundamentais de dinâmica de fluidos como escoamento laminar e turbulento, número de Reynolds, coeficiente de arrasto e força de Magnus. Trata da influência da camada limite, rugosidade e rotação no arrasto de corpos em escoamento.
O documento descreve o sistema nervoso humano e as redes neurais artificiais, incluindo sua estrutura, funcionamento e processos de aprendizado como a regra Delta. As redes neurais são usadas em sistemas de inteligência artificial conexionista que aprendem com a experiência ao invés de seguir regras programadas.
1) O heap é uma estrutura de dados representada por um arranjo que pode ser vista como uma árvore binária completa. 2) Existem dois tipos de heap - máximo e mínimo - que diferem na propriedade de ordenação dos nós. 3) O procedimento HEAP MÁXIMO é usado para manter a propriedade de ordenação quando um nó é alterado.
Tabela de distribuição de frequências para variáveis quantitativas contínuas....Alberto Tchivinda
Este documento discute distribuições de frequências, que agrupam dados em intervalos de classes para facilitar a análise estatística. Primeiro, explica tabelas primitivas e rolos para organizar dados. Em seguida, define distribuições de frequências como agrupamento de dados em classes com contagem de frequência. Finalmente, detalha elementos, construção e tipos de distribuições de frequências, além de gráficos como histogramas e polígonos de frequências.
O documento discute relações matemáticas, incluindo propriedades de relações, fechos de relações, ordens parciais e relações de equivalência. É apresentado o conceito de produto cartesiano e vários exemplos de relações binárias.
1. O documento apresenta exercícios sobre probabilidades e estatística, incluindo conceitos como distribuições de probabilidade, medidas estatísticas e regressão linear.
2. São fornecidos exemplos numéricos para ilustrar o cálculo de medidas como média, mediana, variância e desvio padrão para diferentes distribuições e conjuntos de dados.
3. Incluem-se também exercícios sobre regressão linear simples, testes de hipóteses e análise de variância, visando a aplicação prática desses conceitos e
Este documento resume três tópicos principais sobre ondas sonoras: 1) classifica as ondas sonoras de acordo com sua frequência em infrassom, som audível e ultrassom e descreve suas aplicações médicas; 2) explica que a velocidade do som depende das propriedades do meio de propagação; 3) introduz os conceitos de interferência sonora, intensidade de onda e escala de decibéis.
Proposta de resolução do teste intermédio de matemática 9ºano -versão1-março...Luísa Silva
1. O documento resume os resultados de um teste intermediário de matemática para alunos do 9o ano, com duas versões de cadernos de prova.
2. A resolução inclui cálculos para encontrar a mediana de uma série de dados, calcular a idade média de uma turma após a entrada de dois novos alunos e determinar a altura de um cone inscrito em um cilindro.
3. Os itens também abordam aplicações do Teorema de Pitágoras, cálculo de áreas de figuras planas e identificação de pad
1) O documento apresenta uma coleção de exercícios de números complexos com gabarito. 2) Os exercícios envolvem operações como soma, produto, módulo e argumento de números complexos, bem como representações geométricas no plano complexo. 3) As respostas vão de letras a até e, correspondentes às alternativas para cada questão.
O documento descreve o movimento harmônico simples (MHS) de uma partícula, definindo suas principais características como: x(t) = Acos(ωt + φ0), onde x é a coordenada, A é a amplitude, ω é a frequência angular e φ0 é a fase inicial. Também apresenta as equações para a velocidade v(t) = -Aωsen(ωt + φ0) e aceleração a(t) = -Aω2cos(ωt + φ0), relacionando-as graficamente.
Algebra - Livro texto IV (UNIP/Matemática) 2018Antonio Marcos
O documento discute anéis e corpos, incluindo:
1) Anéis de números inteiros e anéis de polinômios, com exemplos de congruência módulo m em Z e definição de Zm.
2) Corpos racionais, reais e complexos, explicando porque cada um é considerado um corpo.
3) Breve menção a homomorfismos e grupos finitos e infinitos.
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
O documento discute os fundamentos e princípios do projeto orientado a objetos, abordando conceitos como abstração, classes e objetos, encapsulamento, herança, polimorfismo, relacionamentos entre classes, interdependência, qualidade de projeto e princípios como responsabilidade única, aberto-fechado, substituição de Liskov, inversão de dependência, reuso por composição e segregação de interface.
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
O documento explica os conceitos de associação, agregação e composição em Java. A associação ocorre quando uma classe possui atributos do tipo de outra classe. A agregação ocorre quando uma classe usa outras classes em suas operações, mas não contém essas classes. A composição é semelhante à agregação, mas quando o objeto todo é destruído, seus objetos partes também devem ser destruídos. Exemplos de código são fornecidos para ilustrar cada conceito.
1) O documento discute os princípios básicos da mecânica dos fluidos, incluindo a conservação da massa, quantidade de movimento e energia.
2) Apresenta o Teorema do Transporte de Reynolds (TTR), que relaciona a taxa de variação de propriedades em um sistema com fluxos através dos limites de um volume de controle.
3) Explica a aplicação do TTR para derivar equações de conservação para a massa, quantidade de movimento, energia e entropia.
O documento discute o tratamento de exceções em Java, definindo exceções como eventos que quebram o fluxo normal de execução de um programa e indicam erros. Ele explica como tratar exceções usando os blocos try/catch e a palavra-chave finally, além de discutir exceções verificadas versus não verificadas e métodos para lidar com exceções lançadas.
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Murilo Adriano Vasconcelos
O documento fornece uma introdução sobre grafos, definindo seus principais conceitos como vértices, arestas e tipos de grafos. Explica as representações de grafos por matrizes de adjacência e listas de adjacência e apresenta os algoritmos de busca em largura e profundidade como aplicações importantes de grafos.
O documento descreve listas ligadas e como representá-las em C. Listas ligadas armazenam itens de dados em locais de memória não contíguos, ligados por ponteiros. Isso permite inserções e remoções sem deslocar outros itens, diferente de vetores. Operações como inserir, remover e buscar itens em listas ligadas são explicadas.
O documento resume os principais conceitos relacionados ao estudo dos gases, incluindo as leis de Boyle-Mariotte, Charles e Gay-Lussac, equação de estado dos gases ideais e misturas gasosas. Aborda também poluentes atmosféricos.
O documento discute árvores binárias de busca, definindo suas propriedades e operações básicas como busca, inserção e remoção de elementos. Explica que as árvores binárias de busca mantêm uma ordem entre os elementos dos nós, tornando eficiente buscas, inserções e remoções.
1) O documento discute conceitos básicos de funções matemáticas, incluindo domínio, imagem, composição e função inversa.
2) Apresenta exemplos para ilustrar esses conceitos, como determinar se uma relação é uma função, calcular imagem e composição de funções.
3) Explica como determinar a função inversa de uma função bijetora, trocando a variável independente pela dependente e isolando-a.
Física básica 2 m. nussenzveig - completoRamon Rêgo
O documento apresenta um sumário detalhado de um curso de física básica dividido em três partes principais: Fluidos, Oscilações e Ondas e Calor. O curso aborda tópicos como estática de fluidos, hidrodinâmica, oscilador harmônico, ondas, som, temperatura e as primeiras leis da termodinâmica.
As quatro equações de Maxwell unificam eletricidade e magnetismo em uma única teoria do eletromagnetismo. A Lei de Gauss relaciona o fluxo elétrico com a carga elétrica interna. A Lei de Gauss para o magnetismo estabelece que o fluxo magnético é sempre nulo. A Lei de Ampère relaciona o fluxo magnético com a corrente elétrica. A Lei de Faraday estabelece que uma variação do fluxo magnético induz um campo elétrico.
1. O documento apresenta uma coletânea de exercícios resolvidos relacionados com sinais e sistemas para alunos de engenharia informática.
2. Os exercícios estão organizados em capítulos sobre sinais discretos, representação no domínio do tempo para sistemas LTI discretos, transformada Z e sinais contínuos.
3. O documento fornece soluções detalhadas para exercícios retirados de livros de sinais e sistemas com o objetivo de apoiar o estudo dos al
One of the biggest dilemmas faced by decision-making systems is to determine an efficient means to produce classifiers from data base regarding the processing time and the form of simple symbolic representation understandable that facilitates the analysis of the problem in question. In this brief report we will discuss a very popular tool in knowledge discovery in databases process and thus aid in making decisions: the Decision Trees.
O documento descreve as etapas para implementar operações básicas em árvores binárias de busca em Java, incluindo a criação de uma classe Árvore com atributos para armazenar valores, subárvores esquerda e direita, e métodos para inserir, remover e percorrer nós de forma recursiva.
Tabela de distribuição de frequências para variáveis quantitativas contínuas....Alberto Tchivinda
Este documento discute distribuições de frequências, que agrupam dados em intervalos de classes para facilitar a análise estatística. Primeiro, explica tabelas primitivas e rolos para organizar dados. Em seguida, define distribuições de frequências como agrupamento de dados em classes com contagem de frequência. Finalmente, detalha elementos, construção e tipos de distribuições de frequências, além de gráficos como histogramas e polígonos de frequências.
O documento discute relações matemáticas, incluindo propriedades de relações, fechos de relações, ordens parciais e relações de equivalência. É apresentado o conceito de produto cartesiano e vários exemplos de relações binárias.
1. O documento apresenta exercícios sobre probabilidades e estatística, incluindo conceitos como distribuições de probabilidade, medidas estatísticas e regressão linear.
2. São fornecidos exemplos numéricos para ilustrar o cálculo de medidas como média, mediana, variância e desvio padrão para diferentes distribuições e conjuntos de dados.
3. Incluem-se também exercícios sobre regressão linear simples, testes de hipóteses e análise de variância, visando a aplicação prática desses conceitos e
Este documento resume três tópicos principais sobre ondas sonoras: 1) classifica as ondas sonoras de acordo com sua frequência em infrassom, som audível e ultrassom e descreve suas aplicações médicas; 2) explica que a velocidade do som depende das propriedades do meio de propagação; 3) introduz os conceitos de interferência sonora, intensidade de onda e escala de decibéis.
Proposta de resolução do teste intermédio de matemática 9ºano -versão1-março...Luísa Silva
1. O documento resume os resultados de um teste intermediário de matemática para alunos do 9o ano, com duas versões de cadernos de prova.
2. A resolução inclui cálculos para encontrar a mediana de uma série de dados, calcular a idade média de uma turma após a entrada de dois novos alunos e determinar a altura de um cone inscrito em um cilindro.
3. Os itens também abordam aplicações do Teorema de Pitágoras, cálculo de áreas de figuras planas e identificação de pad
1) O documento apresenta uma coleção de exercícios de números complexos com gabarito. 2) Os exercícios envolvem operações como soma, produto, módulo e argumento de números complexos, bem como representações geométricas no plano complexo. 3) As respostas vão de letras a até e, correspondentes às alternativas para cada questão.
O documento descreve o movimento harmônico simples (MHS) de uma partícula, definindo suas principais características como: x(t) = Acos(ωt + φ0), onde x é a coordenada, A é a amplitude, ω é a frequência angular e φ0 é a fase inicial. Também apresenta as equações para a velocidade v(t) = -Aωsen(ωt + φ0) e aceleração a(t) = -Aω2cos(ωt + φ0), relacionando-as graficamente.
Algebra - Livro texto IV (UNIP/Matemática) 2018Antonio Marcos
O documento discute anéis e corpos, incluindo:
1) Anéis de números inteiros e anéis de polinômios, com exemplos de congruência módulo m em Z e definição de Zm.
2) Corpos racionais, reais e complexos, explicando porque cada um é considerado um corpo.
3) Breve menção a homomorfismos e grupos finitos e infinitos.
Fundamentos e princípios do projeto orientado a objetosEvandro Agnes
O documento discute os fundamentos e princípios do projeto orientado a objetos, abordando conceitos como abstração, classes e objetos, encapsulamento, herança, polimorfismo, relacionamentos entre classes, interdependência, qualidade de projeto e princípios como responsabilidade única, aberto-fechado, substituição de Liskov, inversão de dependência, reuso por composição e segregação de interface.
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
O documento explica os conceitos de associação, agregação e composição em Java. A associação ocorre quando uma classe possui atributos do tipo de outra classe. A agregação ocorre quando uma classe usa outras classes em suas operações, mas não contém essas classes. A composição é semelhante à agregação, mas quando o objeto todo é destruído, seus objetos partes também devem ser destruídos. Exemplos de código são fornecidos para ilustrar cada conceito.
1) O documento discute os princípios básicos da mecânica dos fluidos, incluindo a conservação da massa, quantidade de movimento e energia.
2) Apresenta o Teorema do Transporte de Reynolds (TTR), que relaciona a taxa de variação de propriedades em um sistema com fluxos através dos limites de um volume de controle.
3) Explica a aplicação do TTR para derivar equações de conservação para a massa, quantidade de movimento, energia e entropia.
O documento discute o tratamento de exceções em Java, definindo exceções como eventos que quebram o fluxo normal de execução de um programa e indicam erros. Ele explica como tratar exceções usando os blocos try/catch e a palavra-chave finally, além de discutir exceções verificadas versus não verificadas e métodos para lidar com exceções lançadas.
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Murilo Adriano Vasconcelos
O documento fornece uma introdução sobre grafos, definindo seus principais conceitos como vértices, arestas e tipos de grafos. Explica as representações de grafos por matrizes de adjacência e listas de adjacência e apresenta os algoritmos de busca em largura e profundidade como aplicações importantes de grafos.
O documento descreve listas ligadas e como representá-las em C. Listas ligadas armazenam itens de dados em locais de memória não contíguos, ligados por ponteiros. Isso permite inserções e remoções sem deslocar outros itens, diferente de vetores. Operações como inserir, remover e buscar itens em listas ligadas são explicadas.
O documento resume os principais conceitos relacionados ao estudo dos gases, incluindo as leis de Boyle-Mariotte, Charles e Gay-Lussac, equação de estado dos gases ideais e misturas gasosas. Aborda também poluentes atmosféricos.
O documento discute árvores binárias de busca, definindo suas propriedades e operações básicas como busca, inserção e remoção de elementos. Explica que as árvores binárias de busca mantêm uma ordem entre os elementos dos nós, tornando eficiente buscas, inserções e remoções.
1) O documento discute conceitos básicos de funções matemáticas, incluindo domínio, imagem, composição e função inversa.
2) Apresenta exemplos para ilustrar esses conceitos, como determinar se uma relação é uma função, calcular imagem e composição de funções.
3) Explica como determinar a função inversa de uma função bijetora, trocando a variável independente pela dependente e isolando-a.
Física básica 2 m. nussenzveig - completoRamon Rêgo
O documento apresenta um sumário detalhado de um curso de física básica dividido em três partes principais: Fluidos, Oscilações e Ondas e Calor. O curso aborda tópicos como estática de fluidos, hidrodinâmica, oscilador harmônico, ondas, som, temperatura e as primeiras leis da termodinâmica.
As quatro equações de Maxwell unificam eletricidade e magnetismo em uma única teoria do eletromagnetismo. A Lei de Gauss relaciona o fluxo elétrico com a carga elétrica interna. A Lei de Gauss para o magnetismo estabelece que o fluxo magnético é sempre nulo. A Lei de Ampère relaciona o fluxo magnético com a corrente elétrica. A Lei de Faraday estabelece que uma variação do fluxo magnético induz um campo elétrico.
1. O documento apresenta uma coletânea de exercícios resolvidos relacionados com sinais e sistemas para alunos de engenharia informática.
2. Os exercícios estão organizados em capítulos sobre sinais discretos, representação no domínio do tempo para sistemas LTI discretos, transformada Z e sinais contínuos.
3. O documento fornece soluções detalhadas para exercícios retirados de livros de sinais e sistemas com o objetivo de apoiar o estudo dos al
One of the biggest dilemmas faced by decision-making systems is to determine an efficient means to produce classifiers from data base regarding the processing time and the form of simple symbolic representation understandable that facilitates the analysis of the problem in question. In this brief report we will discuss a very popular tool in knowledge discovery in databases process and thus aid in making decisions: the Decision Trees.
O documento descreve as etapas para implementar operações básicas em árvores binárias de busca em Java, incluindo a criação de uma classe Árvore com atributos para armazenar valores, subárvores esquerda e direita, e métodos para inserir, remover e percorrer nós de forma recursiva.
O documento discute registros e arrays no Pascal, definindo-os como estruturas de dados para armazenar coleções de dados similares. Registros armazenam variáveis sequencialmente na memória, permitindo acesso aos campos por índice. Arrays podem ter múltiplas dimensões e são úteis para repetições. O comando With no Pascal simplifica o acesso aos campos dos registros.
O documento discute listas encadeadas em C, incluindo: (1) O que são listas encadeadas e como são implementadas usando nós; (2) Como criar uma lista encadeada vazia e inserir itens no início da lista; (3) Como imprimir os itens de uma lista encadeada.
O documento discute listas encadeadas em C, incluindo: 1) Como implementar listas encadeadas usando nós com ponteiros para o próximo elemento; 2) Como criar uma nova lista encadeada com um nó cabeça; 3) Como inserir elementos no início da lista encadeada movendo ponteiros.
O documento discute aplicações de big data e estruturas de dados, incluindo exemplos como o Power System da IBM e o Microsoft Azure. Também explica conceitos como ponteiros, listas, filas, pilhas e árvores e métodos de ordenação como bubble sort, insertion sort e quick sort.
Armazenamento, Indexação e Recuperação de InformaçãoMário Monteiro
Este documento descreve um algoritmo de indexação invertida desenvolvido em Java para realizar pesquisa de informação em um corpus de documentos. O algoritmo utiliza múltiplas threads para ler e processar os documentos em paralelo, cria um índice invertido com termos e suas ocorrências nos documentos, e permite pesquisas por termos simples e combinados.
Este documento ensina como criar um banco de dados, tabelas e inserir e exibir dados usando PHP e MySQL. Ele explica como usar o phpMyAdmin para criar um banco de dados e tabelas, e como escrever código PHP para conectar ao banco de dados, inserir dados em uma tabela de um formulário HTML, e exibir esses dados.
Introdução à estrutura de dados Árvore. Motivação. Definições (raiz, nó vazio, subárvore, folha, descendência e ancestralidade, grau, altura, profundidade). Introdução às árvores binárias.
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...Orlando Junior
Este documento discute práticas arquiteturais em metodologias ágeis de desenvolvimento de software. Ele explora os desafios enfrentados por arquitetos em times ágeis, como documentação excessiva e falta de valor percebido, e sugere soluções como redução de artefatos e avaliações em alto nível. O objetivo é estudar como a arquitetura é empregada em times ágeis de forma a agregar valor e qualidade aos sistemas.
Predição de Links em Redes Complexas usando o Classificador Naïve BayesOrlando Junior
Este documento apresenta uma pesquisa sobre a predição de links em redes complexas utilizando o classificador Naive Bayes. O trabalho descreve os métodos de predição de links, introduz o classificador Naive Bayes e sua aplicação no aprendizado supervisionado. Experimentos foram realizados em conjuntos de dados representando redes complexas para validar o desempenho da abordagem proposta.
Predição de Fluxos em Redes de Computadores - SBRC/WP2P+ 2014Orlando Junior
Este documento discute a predição de fluxos em redes definidas por software (SDN) usando técnicas de aprendizado de máquina. Os autores comparam algoritmos tradicionais e de aprendizado de máquina para prever links em redes P2P e de e-mail. Os resultados mostram que o algoritmo de Naive Bayes teve o melhor desempenho na predição de links, corroborando a influência preditiva entre a rede física e as redes de aplicação.
Investigação de Predição de Fluxos em Redes de ComputadoresOrlando Junior
Um importante desafio na área de Redes Definidas por Software é a minimização das consultas enviadas pelo switch ao controlador, que produzem um atraso inicial na comunicação. Esse problema pode ser resolvido se o controlador instalar antecipadamente os fluxos nos switches, autorizando a comunicação antes da chegada do primeiro pacote. Com essa motivação, este trabalho investiga o problema da predição de fluxos em redes de computadores. Duas redes de aplicação são mapeadas em diversos modelos topológicos de Redes Complexas para representar o tráfego das informações das redes de aplicação nas redes físicas subjacentes. Diversos algoritmos tradicionais de Predição de Links são utilizados separadamente para predizer os fluxos em cada uma das redes e também como entrada para técnicas de Aprendizado de Máquina. O problema é ainda modelado em uma nova abordagem de Predição de Links que prediz em conjunto as conexões da rede que se manterão ou se formarão em um instante futuro. Os resultados experimentais mostram que as técnicas de Aprendizado de Máquina podem ser usadas para a predição de fluxos com desempenho significativo em muitas situações.
Predição de Fluxos em Redes de ComputadoresOrlando Junior
Apresentação da dissertação de mestrado em Engenharia da Informação de Me. Orlando da Silva Junior na UFABC com o título de "Predição de Fluxos em Redes de Computadores".
O documento discute os conceitos e objetivos da normalização de banco de dados, incluindo garantir a integridade e reduzir a redundância dos dados. Ele explica as primeiras três formas normais, que visam eliminar repetições, garantir que os atributos dependam apenas da chave primária e remover dependências entre atributos. Além disso, apresenta brevemente outras formas normais avançadas.
O documento introduz a engenharia de requisitos, que ajuda a compreender o problema a ser resolvido pelo software. Ele descreve as etapas da engenharia de requisitos, incluindo concepção, elicitação, elaboração, negociação, especificação e validação. Além disso, discute a importância da gestão de requisitos para rastrear e controlar requisitos e mudanças.
O documento apresenta 18 definições históricas de Direito de pensadores como Platão, Aristóteles, Ulpiano, São Tomás de Aquino, Hobbes, Kant, Hegel, Savigny e juristas brasileiros como Miguel Reale e Eros Grau. As definições variam desde o Direito como expressão da vontade do Estado até como produto histórico decorrente da consciência coletiva de cada povo.
O documento discute as classes de problemas P e NP na teoria da complexidade computacional. A classe P inclui problemas que podem ser resolvidos em tempo polinomial por algoritmos determinísticos, enquanto a classe NP inclui problemas que podem ser verificados em tempo polinomial por algoritmos não-determinísticos, embora não necessariamente resolvidos em tempo polinomial. O documento explora a diferença entre esses tipos de algoritmos e discute a relação entre as classes P e NP, que ainda permanece em aberto na ciência da computação.
O documento apresenta um algoritmo de programação dinâmica para resolver o problema da multiplicação de cadeias de matrizes. O algoritmo calcula o custo ótimo de realizar as multiplicações considerando todas as possíveis ordens, armazenando os resultados para evitar recalcular subproblemas. A solução ótima é aquela que minimiza o custo total da multiplicação.
Aprendizado de Máquina Supervisionado na Predição de Links em Redes Complexas...Orlando Junior
Como fazer aplicações em redes incompletas? Por que esses nós não estão conectados? Esses nós poderiam se conectar no futuro? Objetivo: investigar como o Aprendizado de Máquina Supervisionado resolve o problema da Predição de Links em Redes Complexas. Como? Utilizando Revisão Sistemática.
Este documento discute controles web e bancos de dados no ASP.NET. Apresenta os principais controles web como Label, TextBox e Button e explica como conectar páginas ASP.NET a bancos de dados usando controles como SqlDataSource e GridView.
O documento discute os conceitos fundamentais da programação orientada a objetos, incluindo os problemas da programação estruturada que levaram ao surgimento da POO. Apresenta os principais conceitos da POO como encapsulamento, herança e polimorfismo, e como a abstração rege esses conceitos.
O documento discute o ADO.NET, incluindo suas características, namespaces e classes principais, provedores de dados e como se conectar ao SQL Server e executar instruções usando o objeto DataSet.
O documento lista os Dez Mandamentos da Igreja Católica e os pecados relacionados a cada um. Ele começa listando os mandamentos de amar a Deus sobre todas as coisas e não tomar seu nome em vão, junto com os pecados como incredulidade e blasfêmias. Em seguida, lista os mandamentos de guardar os domingos e festas e amar ao próximo, junto com pecados como homicídio, adultério e roubo.
A Santa Missa simboliza os principais eventos da vida de Jesus Cristo através de gestos, orações e posicionamentos do celebrante no altar. Desde a Encarnação representada pelo Intróito até a pregação de Jesus simbolizada pela leitura do Evangelho, a Missa rememora a história da salvação de forma concisa.
Verbos da Língua Inglesa - Observações preliminaresOrlando Junior
O documento discute as características dos verbos na língua portuguesa e inglesa. Na língua portuguesa, os verbos flexionam em número, pessoa, modo e tempo, enquanto na língua inglesa a flexão é menor. Além disso, muitos substantivos se tornam verbos adicionando "to" na língua inglesa.
Verbos da Língua Inglesa - Observações preliminares
Heaps Binomiais
1. CENTRO UNIVERSITÁRIO DA FEI
ORLANDO DA SILVA JUNIOR
HEAPS BINOMIAIS
São Bernardo do Campo
2010
2. 2
SUMÁRIO
1 INTRODUÇÃO ..................................................................................................................... 3
2 REPRESENTAÇÃO DE HEAPS BINOMIAIS ................................................................. 6
3 OPERAÇÕES EM HEAPS BINOMIAIS ........................................................................... 6
3.1 Criação de um heap binomial ........................................................................................... 6
3.2 Inserção de um novo elemento ......................................................................................... 6
3.3 União de dois heaps .......................................................................................................... 7
3.4 Eliminação de um elemento .............................................................................................. 8
3.5 Algoritmo de decremento de chaves ................................................................................. 8
3.6 Algoritmo de extração de chaves ...................................................................................... 9
4 APLICAÇÕES ..................................................................................................................... 10
4.1 Algoritmo de escalonamento por prioridades ................................................................. 10
REFERÊNCIAS ..................................................................................................................... 12
3. 3
1 INTRODUÇÃO
Um heap binominal é uma estrutura de dados computacional do tipo intercalável. Essa
estrutura é formada a partir de um conjunto de árvores binomiais que possuem as seguintes
propriedades (CORMEN ET AL, 2002):
Cada árvore binomial obedece à propriedade de heap mínimo, ou seja, a
chave de um nó é maior ou igual à chave de seu pai; e
Pode existir no máximo uma árvore binomial para cada ordem na
árvore maior.
Em 1978, o francês Jean Vuillemin publicou um artigo que apresentava um eficiente
algoritmo para a manipulação de filas de prioridade, uma estrutura de dados que associa cada
valor contido em um conjunto a uma chave. Através do estudo de árvores binomiais, esse
trabalho permitiu que se conhecesse, anos mais tarde, a estrutura e a aplicação de heaps
binomiais. Sobre filas de prioridade, o pesquisador diz (tradução minha):
Uma fila de prioridades é um conjunto; cada elemento desse conjunto tem um nome,
que é usado para singularmente identificar o elemento, e uma etiqueta, ou
prioridade, elaborada a partir de um conjunto totalmente ordenado. Os elementos
da fila de prioridade podem ser pensados como um serviço de espera de
atendimento, onde o item com a menor etiqueta será sempre o próximo a ser
servido. Pilhas e filas são casos especiais de filas de prioridade (VUILLEMIN,
1978).
4. 4
2 REPRESENTAÇÃO DE HEAPS BINOMIAIS
Por heap binomial entende-se um conjunto de árvores binomiais que satisfazem as
propriedades de heaps binomiais. Apresentadas no capítulo 1, essas propriedades limitam a
forma de representar uma estrutura que agrega muitas outras. As árvores binomiais são
árvores ordenadas recursivamente que apresentam as seguintes propriedades (CORMEN ET
AL, 2002):
Para uma árvore binomial Ak, existem 2k nós;
A altura da árvore é igual a k;
Existem exatamente nós na profundidade i, para i de 0 a k; e
A raiz da árvore tem grau k, o qual é maior que o de qualquer outro nó.
Cada nó de uma árvore binomial possui: uma chave, que é um número representativo
para os algoritmos que operam na árvore; um grau (degree), indicando, numericamente,
quantos filhos tem o nó; e três referências: uma para seu pai, outra para seu filho mais à
esquerda e a última para seu irmão mais à direita. Contudo, vale lembrar que essa regra é
genérica e não vale para todos os tipos de construção de algoritmos. Outras informações
podem (e geralmente fazem) fazer parte do nó.
As árvores binomiais que contém os nós representados na regra geral descrita acima
são armazenadas em uma lista ligada. Comumente chamada de lista de raízes, essa lista
guarda a referência de todas as raízes das árvores que a ela pertencem. O conjunto que agrega
todas essas árvores é o heap binomial em estudo no momento.
Algumas outras considerações sobre árvores binomiais devem ser feitas, tais como:
Se o nó é uma raiz, ele não tem pai;
Se o nó não tem nenhum filho, não há referência para o filho mais à
esquerda;
Se o nó é o filho mais à direita, então o nó não tem irmão.
A Figura 1 apresentada abaixo exemplifica as regras definidas para a construção de
um heap binomial.
5. 5
Figura 1 - Exemplo de um heap binomial
Fonte: Autor “adaptado de” Stergiopoulos
A partir de uma sequência de elementos, o algoritmo montará as árvores binomiais
recursivamente. Observando uma das árvores do heap da Figura 1, nota-se que os números
estão dispostos de modo crescente na visão top-down. Esta ordenação visa criar uma estrutura
que permita que uma série de operações básicas utilizadas no desenvolvimento de estruturas
de dados possam ser aplicadas sobre ela.
6. 6
3 OPERAÇÕES EM HEAPS BINOMIAIS
Conforme mencionado no final do capítulo 2, a utilização de heaps binomiais condiz
diretamente com algumas operações que são comumente utilizadas em demais estruturas de
dados. Este capítulo apresentará as principais operações sobre heaps binomiais, bem como os
principais algoritmos que influem diretamente sobre essa operações.
Vale lembrar que para toda e qualquer estrutura de dados as operações de inserção,
remoção e busca são as consideradas essenciais. Todos os demais algoritmos apresentados
neste capítulo fazem parte dessas três operações básicas.
3.1 Criação de um heap binomial
Para que as operações de inserção, busca e remoção possam ser estudadas e, na
verdade, aplicadas sobre um heap binomial, é necessário que antes ele seja criado.
Porque essa operação define apenas uma cabeça para o heap e a inicializa, seu custo é
igual a Θ(1).
3.2 Inserção de um novo elemento
Inserir um novo elemento numa estrutura de heap binomial significa adicionar um
novo nó a essa estrutura. Esta operação básica trabalha com alguns algoritmos internos que
auxiliam na entrada correta do nó e na reestruturação do heap. Esses algoritmos serão
descritos neste e nos seguintes sub-capítulos.
Para que um novo nó possa ser acrescentado a um heap já existente, considerar-se-á
aqui que esse nó já esteja alocado e sua chave já possua um valor.
As etapas para a inserção de um elemento em um heap binomial são:
1. Alocar um nó (heap) temporário;
2. Definir como zero o grau desse nó;
3. Atribuir o nó que se deseja inserir à cabeça do nó temporário; e
4. Unir o heap temporário ao heap binomial principal.
A última etapa descrita acima merece uma explicação detalhada de seu
funcionamento, já que é o cerne do algoritmo de inserção.
7. 7
3.3 União de dois heaps
Como visto anteriormente, o procedimento que une dois heaps é o mais importante do
algoritmo de inserção. Assim como inserir um novo nó envolve mais de um algoritmo, o
processo de união de dois heaps está centrado nos algoritmo de ligação e união de nós.
O algoritmo de ligação trata dois nós de modo que um deles seja a nova cabeça do
outro. Para que esse algoritmo funcione sem perda de referências e dados, todos os nós que
utilizarem-no obrigatoriamente satisfarão as propriedades de heaps binomiais, descritas no
Capítulo 2.
Dado dois nós, A e B, a ligação entre eles – ou seja, A é a cabeça dos filhos de B –
seguirá, a Ο(1), as etapas abaixo.
A cabeça de A recebe o nó B;
O filho de B é o novo irmão de A;
O filho de B é A;
É somado um ao grau de B.
A Listagem 1 apresenta o pseudocódigo do algoritmo.
Listagem 1 - Pseudocódigo de ligação de heaps
O algoritmo de união de nós tem a função de intercalar as listas de raízes de dois nós
em uma única lista ligada que é ordenada por grau em ordem monotonicamente crescente
(CORMEN, 2002). Por realizar a junção de duas listas de modo intercalado, esse algoritmo
assemelha-se ao popular algoritmo de ordenação MergeSort.
Em suma, o algoritmo de união de heaps, primeiramente, junta dois heaps que atentam
às propriedades de heaps binomiais e percorre a lista dessa junção enquanto todos os
elementos não estiverem intercalados e ordenados segundo a definição de heap binomial. Em
outras palavras, o algoritmo de união de heaps é executado para garantir que a estrutura não
perca suas propriedades que a definem como heap binomial.
8. 8
Neste momento, vale comentar que a estrutura de dado estudada neste trabalho utiliza
menos armazenamento de dados que outras estruturas, como árvores AVL, 2-3 e leftist.
Todavia, por uma análise técnica, é possível notar que as operações básicas programadas
dessas árvores se equiparam no pior caso com as mesmas operações do heap estudado
(VUILLEMIN, 1978).
3.4 Eliminação de um elemento
Sendo a chave a identificação do nó de uma estrutura, eliminar um elemento dessa
mesma estrutura significa eliminar sua chave.
Para que a chave seja removida, o nó que dela é proprietário deverá ter apenas uma
chave mínima em toda a sua sub-árvore, ou seja, o algoritmo de eliminação iterará na
estrutura até que todas as chaves da sub-árvore do nó a ser removido estejam atentando às
propriedades de heaps binomiais. Vale lembrar que um nó está de acordo com a definição de
heap binomial quando a chave de sua raiz é menor que de suas folhas.
O algoritmo de eliminação de elementos é composto por duas partes:
1. Algoritmo de diminuição de chaves: decrementa a chave de um nó
agregado em um heap até que essa chave seja igual a passada por
parâmetro; e
2. Algoritmo de extração da chave mínima: busca a raiz com chave
mínima, remove-a da lista de raízes e une o heap a outro criado
temporariamente para apontar para a cabeça do heap principal.
Os próximos dois sub-capítulos demonstrarão e analisarão o funcionamento desses
algoritmos.
3.5 Algoritmo de decremento de chaves
A Listagem 2 apresenta o algoritmo que decrementa a chave de um nó. Inicialmente, é
necessário verificar se a nova chave não é maior que a chave atual. Caso não seja, a chave
antiga é substituída pela nova.
O funcionamento do algoritmo se dá na iteração. Nessa iteração, toda chave é
comparada com a chave de seu pai. Se as chaves forem iguais, a árvore é ordenada como heap
mínimo; senão, a chave principal é trocada com a de seu pai, bem como demais informações.
9. 9
Como a profundidade da árvore é, no máximo, o piso de log2n, o algoritmo demora o
tempo de Ο(log2n).
Listagem 2 - Algoritmo de diminuição de chave
3.6 Algoritmo de extração de chaves
Este algoritmo é um pouco mais simples que o anterior porque já utiliza os demais
algoritmos citados para suas funções elementares.
Para que a chave mínima seja extraída de um nó é necessário que a raiz com esse nó
seja encontrada e alocada temporariamente a fim de que o nó possa ser excluído da lista de
nós do heap. Em seguida, a ordem da lista ligada dos filhos desse nó deverá ser invertida e
atribuída como cabeça de um novo heap temporário. O algoritmo finaliza sua execução com o
algoritmo de união de dois heaps: os heaps principal e temporário são passados para essa
função, que retornará o endereço de memória do novo heap gerando com essa união.
10. 10
4 APLICAÇÕES
Como dito na introdução deste trabalho, o francês Jean Vuillemin desenvolveu o
algoritmo mais eficiente para a manipulação de filas de prioridade. Desta pesquisa, Vuillemin
acabou por descobrir os heaps binomiais. A aplicabilidade de um heap binomial está
intimamente ligada com a utilização de heaps genéricos. Sendo o heap binomial uma estrutura
particular do heap genérico, supõe-se que as aplicações deste valham para aquele. Contudo, o
modo inverso pode não ser percebido, já que o heap particular binomial é a forma mais
objetivada de se processar um problema específico.
Heaps genéricos são utilizados em algoritmos de inserção e ordenação de listas. Nesta
última operação, o clássico algoritmo HeapSort utiliza a estrutura de heap para ordenar os
elementos de uma lista de modo que ela fique em ordem crescente (ou descrescente, conforme
o desejado). Segundo Feofiloff (2010), o segredo do funcionamento desse algoritmo é o heap.
Além de o heap binomial desenvolvido por Vuillemin possuir quase todas as
aplicações do heap genérico, ele também é utilizado, como uma forma opcional, nos
algoritmos de escalonamento de processos round-robin (IOANNOU; KATEVENIS, 2006) e
fila de prioridades (TANEMBAUM, 2010) e na gerência de agendamento de redes de alta
velocidade (IOANNOU; KATEVENIS, 2006). Ademais, os heaps binomiais deram origem a
outra estrutura semelhante, os heaps de Fibonacci (FREDMAN, 2004), deveras conhecida na
ciência da computação por ser utilizada nos algoritmos de Prim, Kruskal, Cheriton-Tarjan e
Dijkstra.
4.1 Algoritmo de escalonamento por prioridades
O escalonamento por prioridades é um algoritmo utilizado na área de Sistemas
Operacionais interativos para auxiliar a CPU no gerenciamento dos processos em execução. A
ideia do escalonamento por prioridades é atribuir uma prioridade a cada processo,
privilegiando o processo com a maior prioridade o uso da CPU.
Basicamente, a cada tique do relógio do computador, o algoritmo reduz a prioridade
de um processo até que ele seja executado por completo ou possa dar lugar a outro processo
cuja prioridade é maior. Em termos de programação, esse algoritmo pode utilizar um heap
binomial para gerenciar a fila de processos para o processador. Com a definição e as
propriedades de heaps binomiais definidas no capítulo 1, o algoritmo de escalonamento por
12. 12
REFERÊNCIAS
CORMEN, Thomas et al. Algoritmos: teoria e prática. Rio de Janeiro: Elsevier, 2002. cap.
19. pag. 111, 365-280.
FEOFILOFF, Paulo. Heapsort. In: Projeto de Algoritmos em C. Disponível em:
<http://www.ime.usp.br/~pf/algoritmos/aulas/hpsrt.html>. Acesso em: 26 abr 2010.
FREDMAN, Michael L. Binomial, Fibonacci, and Pairing Heaps. In: MEHTA, Dinesh P. ;
SAHNI, Sartaj (Org.). Handbook of data structures and applications. USA: Chapman &
Hall/CRC, 2004.
IOANNOU, Anggelos; KATEVENIS, Manolis. Pipelined Heap (Priority Queue)
Management for Advanced Scheduling in HighSpeed Networks. Crete [2006] Disponível
em: <http://archvlsi.ics.forth.gr/muqpro/pipeHeap_ioan_icc01.pdf>
MOH, Christopher. Application of Data Structures: notas de aula. MIT: Massachusetts,
2005. Disponível em:
<http://www.comp.nus.edu.sg/~tantc/ioi_training/2005/ApplicationofDataStructures.ppt>.
Acesso em: 26 abr 2010.
STERGIOPOULOS, Sotirios. Binomial Heap. In: MIRZAIAN, Andy (Org.). Algorithmics
Animation Workshop. Disponível em:
<http://www.cse.yorku.ca/~aaw/Sotirios/BinomialHeap.html>. Acesso em: 18 abr 2010.
TANEMBAUM, Andrew. Sistemas Operacionais Modernos. Pearson Prentice Hall: São
Paulo, 2010. 3. ed.
VUILLEMIN, JEAN. A data structure for manipulating priority queues. Communications
of the ACM, 21(4), 1978.