Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é sobre análise da complexidade de algoritmos.
Slide do hangout sobre Lógica de Programação para Iniciantes, exibido pelo LadyTalks.
Link do vídeo: https://www.youtube.com/watch?v=E-b-Vm7MEkY
Palestrante: Mariana Camargo (mundodama.com.br)
A maioria das vezes necessitamos tomar decisões no andamento do algoritmo. Essas decisões interferem diretamente no andamento do programa.
São estruturas que, dada a avaliação de uma expressão (condição), permite a escolha de um fluxo de instruções a ser executado.
Slide do hangout sobre Lógica de Programação para Iniciantes, exibido pelo LadyTalks.
Link do vídeo: https://www.youtube.com/watch?v=E-b-Vm7MEkY
Palestrante: Mariana Camargo (mundodama.com.br)
A maioria das vezes necessitamos tomar decisões no andamento do algoritmo. Essas decisões interferem diretamente no andamento do programa.
São estruturas que, dada a avaliação de uma expressão (condição), permite a escolha de um fluxo de instruções a ser executado.
Conceitos básicos que fundamentam os estudos sobre SI, Diferentes categorias de ativos existentes em uma empresa, Conceitos de vulnerabilidades e ameaças dos ativos, integridade, confidencialidade e disponibilidade, análise de riscos (AR), etc.
Introdução a Aprendizagem de Máquina por prof. Stanley R. M. Oliveira - UNICAMP
Mais conteúdo / materiais sobre Inteligência artificial: https://www.portalgsti.com.br/inteligencia-artificial/
Aula 10 da disciplina de Programação Orientada a Objetos, ministrada pelo Departamento de Computação da Universidade Federal de Sergipe.
Apresenta os conceitos sobre Polimorfismo.
Apostila de Fundamentos de Tecnologia da Informação. Matéria Hardware e Software. A tecnologia da informação é uma área cada vez mais relevante na sociedade atual, pois tem o objetivo de oferecer soluções e ferramentas para otimizar o trabalho, facilitar a comunicação e aprimorar a qualidade de vida. O hardware e o software são dois elementos fundamentais para o funcionamento dos sistemas de tecnologia da informação. Nesta apostila, vamos abordar os fundamentos do hardware e software, apresentando conceitos, características, tipos e exemplos de aplicação. Hardware
O hardware é a parte física do computador, ou seja, todos os componentes que podemos tocar e que compõem a estrutura da máquina. O hardware é responsável pelo armazenamento, processamento e transferência de informações. Alguns dos componentes do hardware são:
Processador: é o cérebro do computador, responsável pelo processamento de informações;
Placa-mãe: é a placa principal que conecta todos os componentes do computador;
Memória RAM: é a memória temporária do computador, que armazena os dados que estão sendo usados no momento;
Disco rígido: é o dispositivo de armazenamento permanente, onde são guardados os dados e arquivos do usuário;
Placa de vídeo: é responsável por gerar as imagens que aparecem na tela do computador;
Fonte de alimentação: é a responsável por fornecer energia elétrica para os componentes do computador.
Software
O software é a parte lógica do computador, ou seja, o conjunto de programas e aplicativos que controlam e gerenciam o hardware. Existem diversos tipos de software, como:
Sistema operacional: é o software responsável por gerenciar todos os recursos do computador e permitir que o usuário interaja com o sistema. Exemplos de sistemas operacionais são o Windows, macOS e Linux;
Aplicativos: são programas que executam tarefas específicas, como processamento de texto, edição de imagens, navegação na internet, entre outros. Exemplos de aplicativos são o Microsoft Word, Adobe Photoshop e Google Chrome;
Jogos: são programas que permitem ao usuário interagir com o computador de forma lúdica e divertida. Exemplos de jogos são o Fortnite, Minecraft e League of Legends.
Conclusão
O hardware e o software são dois elementos fundamentais para o funcionamento dos sistemas de tecnologia da informação. O hardware é a parte física do computador, responsável pelo armazenamento, processamento e transferência de informações. O software é a parte lógica do computador, responsável pelo controle e gerenciamento do hardware. Para o pleno funcionamento de um sistema de tecnologia da informação, é fundamental que o hardware e o software estejam em perfeita harmonia, trabalhando em conjunto para atender às necessidades do usuário.
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
Neste slide estaremos falando sobre Estrutura de Repetição em Pseudocódigo ou Portugol utilizando características e regras da programação na ferramenta Visualg.[Aula para curso técnico]
Conceitos básicos que fundamentam os estudos sobre SI, Diferentes categorias de ativos existentes em uma empresa, Conceitos de vulnerabilidades e ameaças dos ativos, integridade, confidencialidade e disponibilidade, análise de riscos (AR), etc.
Introdução a Aprendizagem de Máquina por prof. Stanley R. M. Oliveira - UNICAMP
Mais conteúdo / materiais sobre Inteligência artificial: https://www.portalgsti.com.br/inteligencia-artificial/
Aula 10 da disciplina de Programação Orientada a Objetos, ministrada pelo Departamento de Computação da Universidade Federal de Sergipe.
Apresenta os conceitos sobre Polimorfismo.
Apostila de Fundamentos de Tecnologia da Informação. Matéria Hardware e Software. A tecnologia da informação é uma área cada vez mais relevante na sociedade atual, pois tem o objetivo de oferecer soluções e ferramentas para otimizar o trabalho, facilitar a comunicação e aprimorar a qualidade de vida. O hardware e o software são dois elementos fundamentais para o funcionamento dos sistemas de tecnologia da informação. Nesta apostila, vamos abordar os fundamentos do hardware e software, apresentando conceitos, características, tipos e exemplos de aplicação. Hardware
O hardware é a parte física do computador, ou seja, todos os componentes que podemos tocar e que compõem a estrutura da máquina. O hardware é responsável pelo armazenamento, processamento e transferência de informações. Alguns dos componentes do hardware são:
Processador: é o cérebro do computador, responsável pelo processamento de informações;
Placa-mãe: é a placa principal que conecta todos os componentes do computador;
Memória RAM: é a memória temporária do computador, que armazena os dados que estão sendo usados no momento;
Disco rígido: é o dispositivo de armazenamento permanente, onde são guardados os dados e arquivos do usuário;
Placa de vídeo: é responsável por gerar as imagens que aparecem na tela do computador;
Fonte de alimentação: é a responsável por fornecer energia elétrica para os componentes do computador.
Software
O software é a parte lógica do computador, ou seja, o conjunto de programas e aplicativos que controlam e gerenciam o hardware. Existem diversos tipos de software, como:
Sistema operacional: é o software responsável por gerenciar todos os recursos do computador e permitir que o usuário interaja com o sistema. Exemplos de sistemas operacionais são o Windows, macOS e Linux;
Aplicativos: são programas que executam tarefas específicas, como processamento de texto, edição de imagens, navegação na internet, entre outros. Exemplos de aplicativos são o Microsoft Word, Adobe Photoshop e Google Chrome;
Jogos: são programas que permitem ao usuário interagir com o computador de forma lúdica e divertida. Exemplos de jogos são o Fortnite, Minecraft e League of Legends.
Conclusão
O hardware e o software são dois elementos fundamentais para o funcionamento dos sistemas de tecnologia da informação. O hardware é a parte física do computador, responsável pelo armazenamento, processamento e transferência de informações. O software é a parte lógica do computador, responsável pelo controle e gerenciamento do hardware. Para o pleno funcionamento de um sistema de tecnologia da informação, é fundamental que o hardware e o software estejam em perfeita harmonia, trabalhando em conjunto para atender às necessidades do usuário.
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Gercélia Ramos
Neste slide estaremos falando sobre Estrutura de Repetição em Pseudocódigo ou Portugol utilizando características e regras da programação na ferramenta Visualg.[Aula para curso técnico]
Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é sobre relações de recorrência em relação com a análise e complexidade de algoritmos.
Análise de Complexidade em Algoritmos.pdfLukasBernardo
Esta apresentação é um documento que aborda a análise teórica da eficiência de algoritmos computacionais. A análise de complexidade é uma parte fundamental da ciência da computação, que visa entender o comportamento dos algoritmos em termos de tempo de execução e uso de recursos, como memória e processamento.
O arquivo provavelmente explora conceitos como notação assintótica usados para descrever o crescimento do tempo de execução à medida que o tamanho da entrada aumenta. Além disso, pode incluir técnicas para calcular a complexidade de algoritmos recursivos, algoritmos de ordenação, algoritmos de busca e outros tipos de algoritmos comuns.
A compreensão da análise de complexidade é crucial para os desenvolvedores de software, pois permite escolher os algoritmos mais adequados para resolver problemas específicos, levando em consideração fatores como eficiência, escalabilidade e uso de recursos.
Apresentação feita no primeiro encontro do Product Tank de Joinville falando como criar e escalar times de desenvolvimento de produto de alta performance nos early and growth stages de uma empresa.
Transformação Digital: Criando uma empresa financeiramente estratégica para o...Pablo Silva
No cenário atual de transformação digital, onde diversas áreas evoluem cada vez mais e mais rápido, é preciso definir algumas estratégias - não só para acompanhar essas inovações, como também para planejar o futuro do negócio.
Financeiramente, é preciso fazer muito mais do que apenas tentar adequar-se às novas tendências. E quem melhor para ajudar nesse quesito do que a startup que vem revolucionando como o maior meio de pagamento independente do país?
Nessa talk Pablo Silva (Head de Produto na Vindi), te mostrará como criar estratégias financeiramente inteligentes para o futuro. Afinal, criar soluções e inovações em pagamentos é o que a Vindi faz e o que ajuda as empresas de hoje a também serem "empresas do amanhã".
OKR is the new black: porque esse framework está tão na moda?Pablo Silva
Faça o seguinte teste: escolha algum colaborador aleatório na sua empresa e pergunte pra ele quais são os objetivos estratégicos da sua empresa naquele ano. Tem 85% de chance de que ele não tenha a mínima ideia de quais são. Falta de alinhamento, transparência, foco e engajamento são fatores críticos que ou levam uma empresa para o fracasso ou a impedem de escalar. Nessa talk, vou falar sobre como OKRs (objectives e key results) podem transformar por completo a gestão de metas da sua empresa e como dar os primeiros passos para implementar esse sistema de definição de objetivos.
Transformando times de desenvolvimento mercenários em times de produto missio...Pablo Silva
O mundo do monopólio acabou já faz algum tempo. Num mercado altamente competitivo, o tempo que se tem para acertar é bem pequeno e pode ser questão de vida ou morte para as empresas. Por isso, times mercenários, isto é, aqueles que são focados em outputs e não em outcomes estão com os dias contados. Nesta talk, vamos contar a jornada que a Vindi passou para transformar os times de desenvolvimento mercenários em times de produtos missionários e o qual o impacto que essa mudança teve na empresa.
Carreira Dev: dicas pra você que vai chegar na semana que vemPablo Silva
Nesta talk mostro o patamar 2018 para quem quer seguir carreira de desenvolvedor e tech. Mostro também as tendências da tecnologia para os próximos meses e anos.
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio Pablo Silva
Organizações que não possuem times realmente multidisciplinares sofrem, muitas vezes, com a baixa integração entre negócio, experiência do usuário e tecnologia. Como resultado, muitas vezes meses de trabalho podem ser jogados foram por falta de comunicação e de colaboração. Nessa talk, vou mostrar como utilizamos o Dual Track Agile para fazer com que times que tinham baixa integração passassem a trabalhar juntos, se tornando realmente ágeis, colaborativos, gerando muito menos desperdício e com foco e melhoria contínua.
Juntei 2 anos de experiência com OKRs e coloquei nessa apresentação que venho fazendo por aí pra ajudar as pessoas que querem iniciar nessa jornada de transformação que é utilizar esse sistema na sua empresa.
2 anos usando OKRs: adeus achismo-drivenPablo Silva
Objectives and Key Results (OKRs) são a bola da vez. As empresas cada vez mais enxergam valor em utilizar OKRs para tranformar a maneira como operam o negócio. Nesta talk vou mostrar que, apesar de ser um sistema para definições de objetivos (metas!), todo o conceito por trás da metodologia vai fazer com que as empresas que realmente estão dispostas a efetivamente mudar e adotá-la, tragam para o negócio a cultura de dados, essencial para sobreviver à quarta revolução indrustrial.
Nem só de codigo vive homem (Management version)Pablo Silva
Durante todo o tempo em que estive envolvido com programação, o que eu mais percebi é como nós, programadores, não conseguimos enxergar valor com facilidade, para atividades que não envolvam codificar algo. Nesta palestra, vou abordar como venho aplicando técnicas do Management 3.0 para mostrar o porque é tão importante desenvolver habilidade que vão além do código e como isso vem mudando a organização e a excelência dos times que coordeno na Locaweb.
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimentoPablo Silva
Muito se fala em como ter mais visibilidade do processo de desenvolvimento de software dentro das empresas. Algo ainda bastante aberto na literatura é como ter visibilidade do processo de concepção do produto realizado pelos PO e UX. Falta de comunicação e pouco direcionamento podem fazer com que meses de trabalho percam sentido e sejam perdidos. Nesta palestra vamos falar sobre como o Dual-Track Agile ajudou os times de engenharia da Locaweb a incluírem PO e UX no pipeline de desenvolvimento, promovendo um impacto na reorganização dos processos e na organização das equipes, quadruplicando a capacidade de entregas sem aumentar o tamanho da equipe, sempre preservando a qualidade da entrega.
Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é uma revisão sobre ponteiros na linguagem de programação C.
Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é uma revisão sobre structs na linguagem de programação C.
Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é sobre recursividade.
Material de apoio das aulas de tutoria de Algoritmos e Estrutura de dados da Universidade Federal de Ouro Preto, Campus João Monlevade. O conteúdo abordado é sobre funções em C.
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfenpfilosofiaufu
Caderno de Resumos XVIII Encontro de Pesquisa em Filosofia da UFU, IX Encontro de Pós-Graduação em Filosofia da UFU e VII Encontro de Pesquisa em Filosofia no Ensino Médio
proposta curricular da educação de jovens e adultos da disciplina geografia, para os anos finais do ensino fundamental. planejamento de unidades, plano de curso da EJA- GEografia
para o professor que trabalha com a educação de jovens e adultos- anos finais do ensino fundamental.
Atividade - Letra da música "Tem Que Sorrir" - Jorge e MateusMary Alvarenga
A música 'Tem Que Sorrir', da dupla sertaneja Jorge & Mateus, é um apelo à reflexão sobre a simplicidade e a importância dos sentimentos positivos na vida. A letra transmite uma mensagem de superação, esperança e otimismo. Ela destaca a importância de enfrentar as adversidades da vida com um sorriso no rosto, mesmo quando a jornada é difícil.
Livro de conscientização acerca do autismo, através de uma experiência pessoal.
O autismo não limita as pessoas. Mas o preconceito sim, ele limita a forma com que as vemos e o que achamos que elas são capazes. - Letícia Butterfield.
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Projeto de articulação curricular:
"aLeR+ o Ambiente - Os animais são nossos amigos" - Seleção de poemas da obra «Bicho em perigo», de Maria Teresa Maia Gonzalez
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Betel, Ordenança para buscar a paz e fazer o bem, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
5. Mas antes...
Uma definição mais simples do que é tipo de dado
(pra responder na prova se cair!!!):
• Em linguagens de programação o tipo de dado de uma variável,
constante ou função define o conjunto de valores que a variável,
constante ou função pode assumir.
• Ex.: variável boolean pode assumir valores true ou false.
Portanto true e false é o conjunto de valores de uma variável
booleana.
6. Por que analisar um algoritmo?
Depois que decidimos qual o problema que
queremos resolver (Ex. encontrar um elemento
num conjunto de valores), precisamos ter certeza
que o algoritmo escolhido para o nosso problema,
irá resolvê-lo em um espaço de tempo e consumir
memória, num intervalo de tempo e quantidade
de memória gastas aceitáveis para nosso cliente.
7. Por que analisar um algoritmo?
Nenhum cliente vai querer um programa que
demora 10 minutos para encontrar um elemento
dentro de um conjunto de valores!
Isso é perda de dinheiro e tempo, uma vez que
deve existir um algoritmo que faça isso em poucos
milissegundos!
8. Por que analisar um algoritmo?
No final, o que vai importar na análise é qual o
caso médio que tal algoritmo demora para nos dar
a saída do problema!
9. Passos para analisar um algoritmo
e decidir os três casos
1. Entenda o problema: sem entender o
problema é praticamente impossível
determinar os três casos corretamente.
10. Entendendo o problema
Se temos o problema de encontrar um elemento num conjunto
de valores, entender o problema significa:
Talvez o elemento procurado esteja na primeira posição
buscada, ou talvez esteja na última. Mas ele pode também
estar no meio ou próximo de lá.
Dessa maneira já sabemos qual os nossos melhor caso, pior
caso e caso médio respectivamente. Agora só precisamos
encontrar uma maneira de representa-los matematicamente.
11. Passos para analisar um algoritmo
e decidir os três casos
2. Encontre no algoritmo loops e estruturas
condicionais. ESQUEÇA O RESTO!
14. Passos para analisar um algoritmo
e decidir os três casos
3. Decida quantas vezes o condicional irá executar
baseado na quantidade de vezes que o loop
executa.
*É preciso olhar para o condicional, pois o custo de
acesso a memória vem dele!
15. Encontre loops e condicionais
Se tamanho = n, então o for
executará n vezes, uma vez
que vai de 0 até (n – 1).
Para visualizar o número de
vezes que o for executa,
pode-se fazer o seguinte:
Por exemplo, se n = 2, i
começa em 0 (i = 0) e 0 < 2.
Na segunda iteração, i recebe
1 (i = 1) e 1 < 2. A terceira
iteração nos dá que i será
igual a 2 (i = 2) e 2 < 2 é falso
e o loop não será executado
novamente.Logo, o loop executou somente 2 vezes, uma vez que a terceira
iteração não foi executada. Veja que 2 é o número de elementos que
temos, pois n = 2 e então o loop rodou n vezes.
16. Passos para analisar um algoritmo
e decidir os três casos
3. Seja f(n) uma função de complexidade, decida
f(n) para o melhor e pior caso e caso médio,
utilizando seu conhecimento sobre o problema.
17. Decida quantas vezes será executado
Melhor caso: 𝑓 𝑛 = 1
O if foi acessado somente
uma vez, pois o elemento
estava na primeira posição
acessada.
Pior caso: 𝑓 𝑛 = 𝑛
O if foi acessado todas as
vezes que o loop executou,
pois o elemento procurado
estava na última posição
acessada ou não estava no
vetor.
Seja 𝑓 𝑛 uma função de complexidade definida pelo número de elementos consultados no arquivo.
18. Decida quantas vezes será executado
Caso médio: 𝑓 𝑛 =
𝑛+1
2
O caso médio é dado por:
𝑃𝑖𝑜𝑟 𝑐𝑎𝑠𝑜 + 𝑀𝑒𝑙ℎ𝑜𝑟 𝑐𝑎𝑠𝑜
2
É o mesmo que dizer que o
elemento está no meio ou
próximo dele!
Seja 𝑓 𝑛 uma função de complexidade definida pelo número de elementos consultados no arquivo.
19. Análise assintótica
Para a análise de algoritmos só vai importar
mesmo, quando temos valores enormes de n. Isso
é necessário, porque até mesmo o pior dos
algoritmos pode resolver algum problema quando
n é suficientemente pequeno.
20. Análise assintótica
O tipo de matemática que está interessado em
valores enormes de n, é chamado de assintótico, e
as funções aqui definidas serão classificadas em
“ordens” (como as ordens religiosas da Idade
Média), onde todas as funções de uma mesma
ordem são equivalentes.
21. Análise assintótica
Por exemplo, sejam as funções:
n2 , (3/2)n2 , 9999n2 , n2/1000 , n2+100n , etc.
Elas crescem todas na mesma velocidade e
portanto são todas “equivalentes” e desse modo
de mesma “ordem”.
22. Análise assintótica
Por exemplo, sejam as funções:
n2 , (3/2)n2 , 9999n2 , n2/1000 , n2+100n , etc.
Nesse caso é fácil de perceber que todas crescem
na mesma velocidade. Todas as funções dadas são
quadráticas. Olhem para os gráficos á seguir:
23.
24.
25.
26. Análise assintótica
As proporções são diferentes, mas as curvas tem o
mesmo comportamento! (comportamento é o
mesmo que dizer crescimento)
Aqui, vamos nos concentrar na primeira ordem, a
Ordem O.
27. Dominação assintótica
Se pudermos provar que f(n)
domina assintoticamente g(n) a
partir de um ponto m quando n->
infinito, então o caso ao lado não
pode ser verdadeiro!
A partir de agora, passaremos a representar os algoritmos através de funções de
complexidade de variável n onde essa função é sempre maior que zero.
Para o nosso contexto, vamos definir que uma função f(n) domina
assintoticamente outra função g(n) se quando n -> infinito, a curva de g(n) nunca
crescerá mais rápido que a curva de f(n) a partir de um ponto m (n0).
28. Ordem O
Definição: Dadas funções assintoticamente não negativas f(n) e g(n),
dizemos que g(n) está na ordem O de f(n) e escrevemos
para expressar que f(n) domina assintoticamente g(n). Isso significa
dizer que se o tempo de execução de um programa fosse
representado por g(n), ele seria da ordem de no máximo f(n).
29. Ordem O
Se afirmamos que então estamos dizendo que é
possível encontrar duas constantes positivas c e m tais que, para
𝑛 ≥ 𝑚 temos 𝑔 𝑛 ≤ 𝑐 ∗ |𝑓 𝑛 |.
No gráfico ao lado, f(n) só domina
assintoticamente g(n) a partir de m e quando
encontramos uma constante c apropriada!
30. Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
Pela definição isso será verdade quando
𝑛 + 1 2 ≤ 𝑐𝑛2 𝑝𝑎𝑟𝑎 𝑛 ≥ 𝑚
Cada problema tem uma forma mais prático que outro para encontrarmos a constante c. Para esse caso precisamos
abrir g(n) ficando com:
𝑛2
+ 2𝑛 + 1
A estratégia aqui é igualar os graus em todos os elementos acima com f(n), que possui o maior grau quadrático (2).
Logo, sabemos então que:
𝑛2
+ 2𝑛 + 1 ≤ 𝑛2
+ 2𝑛2
+ 1𝑛2
Para algum 𝑛 ≥ 0 que ainda não sabemos qual é (esse será nosso m!)
31. Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
𝑛2 + 2𝑛 + 1 ≤ 𝑛2 + 2𝑛2 + 1𝑛2
Somando todos os termos do lado direito temos que:
𝑛2 + 2𝑛 + 1 ≤ 4𝑛2 (1)
Comparando com a nossa situação inicial:
𝑛 + 1 2
= 𝑛2
+ 2𝑛 + 1 ≤ 𝑐𝑛2
Podemos perceber que c = 4. Vamos achar nosso m. Se n = 0, substituindo em (1):
1 ≤ 0 𝑜 𝑞𝑢𝑒 𝑛ã𝑜 é 𝑣𝑒𝑟𝑑𝑎𝑑𝑒!
32. Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
𝑛2
+ 2𝑛 + 1 ≤ 𝑛2
+ 2𝑛2
+ 1𝑛2
Somando todos os termos do lado direito temos que:
𝑛2
+ 2𝑛 + 1 ≤ 4𝑛2
(1)
Se n = 1, substituindo em (1):
4 ≤ 4 𝑜 𝑞𝑢𝑒 é 𝑣𝑒𝑟𝑑𝑎𝑑𝑒!
Como já determinamos nosso c, então o primeiro valor de n que torna a inequação verdadeira será o nosso n!
33. Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
Logo 𝑔 𝑛 = 𝑂 𝑓 𝑛 é uma afirmação válida quando definimos c = 4 e m = 1.
É importante notar que nem sempre se conseguirá
resolver o problema utilizando esta abordagem e
precisamos de outras estratégias para encontrar as duas
constantes que vão provar a nossa afirmação!