Algoritmos Para Leigos

Algoritmos Para Leigos é um guia claro e conciso para pessoas comuns interessadas em algoritmos e no seu impacto em nossas vidas digitais. Partindo do fato de que já vivemos em um mundo em que algoritmos estão por trás da maior parte da tecnologia que usamos, este livro oferece informações reveladoras sobre a importância dessa ciência matemática — como ela ajuda na ingestão diária de notícias e entretenimento, assim como sua influência no consumo e interações sociais. Você vai até aprender a programar um algoritmo usando Python!

VITRINE Os TOP de vendas !!

+-

Quem viu este produto , comprou

Quem viu este produto , também se interessou

  • Descrição
    Algoritmos Para Leigos

    Algoritmos Para Leigos é um guia claro e conciso para pessoas comuns interessadas em algoritmos e no seu impacto em nossas vidas digitais. Partindo do fato de que já vivemos em um mundo em que algoritmos estão por trás da maior parte da tecnologia que usamos, este livro oferece informações reveladoras sobre a importância dessa ciência matemática — como ela ajuda na ingestão diária de notícias e entretenimento, assim como sua influência no consumo e interações sociais. Você vai até aprender a programar um algoritmo usando Python!

    Abra este livro e descubra…

    • Como se tornar expert nas principais áreas que englobam algoritmos;

    • A incrível história por trás dos algoritmos;

    • Como usar aplicações reais em procedimentos de resolução de problemas;

    • Como desenvolver um algoritmo do início ao fim usando Python.
  • Sobre o Autor
  • Especificação

    Características

    Tipo de LivroLivro Físico

    Especificações

    Sobre o AutorJohn Mueller

    É autor e editor técnico freelancer. Ele tem a escrita correndo nas veias, tendo produzido 102 livros e mais de 600 artigos até hoje. Os tópicos variam de networking a inteligência artificial e de gerenciamento de bases de dados a programação pura. Alguns dos seus livros atuais incluem um livro sobre Python para iniciantes, Python para data science e um livro sobre MATLAB. Ele também escreveu livros sobre a Amazon Web Services para Administradores, segurança de aplicativos web, desenvolvimento de HTML5 com JavaScript e CSS3. Suas habilidades de revisor técnico ajudaram mais de 63 autores a refinarem o conteúdo de seus manuscritos. John também ofereceu seus serviços de editoria técnica a várias revistas especializadas. Foi durante o período na revista Data Based Advisor que John teve o primeiro contato com o MATLAB, e continuou acompanhando sua evolução desde então. Durante o período na Cubic Corporation, John teve contato com a engenharia de confiabilidade e seguiu com seu interesse em probabilidade.

    Luca Massaron

    É cientista de dados e diretor de pesquisa de marketing especializado em análise estatística multivariada, machine learning e visão do cliente. Tem mais de uma década de experiência em resolver problemas reais e gerar valor para grupos interessados aplicando raciocínio lógico, estatística, mineração de dados e algoritmos. Apaixonado por tudo que diz respeito a dados e análises e por demonstrar a potencialidade da descoberta de conhecimento orientado a dados, tanto para especialistas quanto para leigos, Luca é coautor de Python for Data Science For Dummies e Machine Learning Para Leigos. Preferindo simplicidade à sofisticação desnecessária, ele acredita que muito pode ser conquistado pela compreensão simples e pela prática do essencial de qualquer disciplina.
    Informações TécnicasSumário
    INTRODUÇÃO? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1
    Sobre Este Livro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
    Penso que... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
    Ícones Usados Neste Livro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
    Além Deste Livro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
    De Lá para Cá, Daqui para Lá . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    PARTE 1: COMEÇANDO? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7
    CAPÍTULO 1: Introduzindo Algoritmos ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?9
    Descrevendo Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
    Definindo os usos dos algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . 12
    Encontrando algoritmos em todo lugar . . . . . . . . . . . . . . . . . . . . . 14
    Usando Computadores para Resolver Problemas . . . . . . . . . . . . . . . 15
    Alavancando CPUs e GPUs modernas . . . . . . . . . . . . . . . . . . . . . . 16
    Trabalhando com chips de propósito especial . . . . . . . . . . . . . . . 17
    Alavancando redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
    Alavancando dados disponíveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
    Distinguindo Questões de Soluções . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
    Sendo correto e eficiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
    Descobrindo que não há almoço grátis . . . . . . . . . . . . . . . . . . . . . 21
    Adaptando a estratégia ao problema . . . . . . . . . . . . . . . . . . . . . . . 21
    Descrevendo algoritmos em uma língua franca . . . . . . . . . . . . . . 21
    Enfrentando problemas difíceis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
    Estruturando Dados para Obter uma Solução . . . . . . . . . . . . . . . . . . 22
    Entendendo o ponto de vista do computador . . . . . . . . . . . . . . . 22
    Organizar dados faz a diferença . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    CAPÍTULO 2: Considerando o Design de Algoritmos ? ? ? ? ? ? ? ?25
    Começando a Resolver um Problema . . . . . . . . . . . . . . . . . . . . . . . . . . 26
    Modelando problemas reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
    Encontrando soluções e contraexemplos . . . . . . . . . . . . . . . . . . . 28
    Subindo nos ombros de gigantes . . . . . . . . . . . . . . . . . . . . . . . . . . 29
    Dividindo e Conquistando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
    Evitando soluções de força bruta. . . . . . . . . . . . . . . . . . . . . . . . . . . 31
    Começando por tornar as coisas mais simples . . . . . . . . . . . . . . . 31
    Fragmentar um problema geralmente é melhor . . . . . . . . . . . . . 32
    Aprendendo que a Gula Pode Ser Boa . . . . . . . . . . . . . . . . . . . . . . . . . 33
    Aplicando raciocínio guloso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
    Chegando a uma boa solução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
    Calculando Custos e Seguindo Heurísticas . . . . . . . . . . . . . . . . . . . . . 35
    Representando o problema como um espaço . . . . . . . . . . . . . . . 35
    Indo ao acaso e sendo abençoado pela sorte . . . . . . . . . . . . . . . . 3
    Usando heurística e uma função de custo . . . . . . . . . . . . . . . . . . . 37
    Avaliando Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
    Simulando com o uso de máquinas abstratas . . . . . . . . . . . . . . . 39
    Ficando ainda mais abstrato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
    Trabalhando com funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    CAPÍTULO 3: Usando Python para Trabalhar
    com Algoritmos? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?45
    Considerando os Benefícios de Python. . . . . . . . . . . . . . . . . . . . . . . . . 47
    Entendendo por que este livro usa Python . . . . . . . . . . . . . . . . . . 47
    Trabalhando com MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
    Considerando outros ambientes de testes de algoritmos . . . . . 50
    Examinando as Distribuições Python . . . . . . . . . . . . . . . . . . . . . . . . . . 50
    Obtendo o Analytics Anaconda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
    Considerando o Enthought Canopy Express . . . . . . . . . . . . . . . . . 52
    Considerando o pythonxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
    Considerando o WinPython . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
    Instalando Python no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
    Instalando o Python no MacOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
    Instalando Python no Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
    Baixando as Bases de Dados e Código de Exemplo . . . . . . . . . . . . . . 60
    Usando o Jupyter Notebook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
    Definindo o repositório de código . . . . . . . . . . . . . . . . . . . . . . . . . . 61
    Entendendo as bases de dados usadas neste livro . . . . . . . . . . . 67

    CAPÍTULO 4: Introduzindo Python para a Programação
    de Algoritmos ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?69
    Trabalhando com Números e Lógica . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
    Executando atribuições de variáveis . . . . . . . . . . . . . . . . . . . . . . . . 71
    Fazendo a aritmética . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
    Comparando dados usando expressões booleanas . . . . . . . . . . 74
    Criando e Usando Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
    Interagindo com Datas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
    Criando e Usando Funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
    Criando funções reutilizáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
    Chamando funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
    Usando Expressões Condicionais e de Loop . . . . . . . . . . . . . . . . . . . . 83
    Tomando decisões usando a expressão ‘if’ . . . . . . . . . . . . . . . . . . . . 83
    Escolhendo entre várias opções usando decisões aninhadas . . 84
    Executando tarefas repetitivas usando o ciclo repetitivo for . . . 85
    Usando a instrução while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
    Armazenando Dados em Conjuntos, Listas e Tuplas . . . . . . . . . . . . . 87
    Criando conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
    Criando listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
    Criando e usando tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
    Definindo Iteradores Úteis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
    Indexando Dados Usando Dicionários . . . . . . . . . . . . . . . . . . . . . . . . . 92

    CAPÍTULO 5: Executando Manipulações Essenciais
    de Dados Usando Python? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?93
    Executando Cálculos Usando Vetores e Matrizes . . . . . . . . . . . . . . . . 94
    Entendendo operações escalares e vetoriais . . . . . . . . . . . . . . . . 95
    Executando a multiplicação vetorial . . . . . . . . . . . . . . . . . . . . . . . . 97
    Criar uma matriz é o jeito certo de começar . . . . . . . . . . . . . . . . . 97
    Multiplicando matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
    Definindo operações matriciais avançadas . . . . . . . . . . . . . . . . . 100
    Criando Combinações do Jeito Certo . . . . . . . . . . . . . . . . . . . . . . . . . . 102
    Distinguindo permutações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
    Reorganizando combinações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
    Encarando repetições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
    Obtendo o Resultado Desejado Usando Recursividade . . . . . . . . . 105
    Explicando a recursividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
    Eliminando a recursão de cauda . . . . . . . . . . . . . . . . . . . . . . . . . . 108
    Executando Tarefas Mais Rápido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
    Considerando dividir e conquistar . . . . . . . . . . . . . . . . . . . . . . . . . 110
    Distinguindo entre diferentes soluções possíveis . . . . . . . . . . . . 113

    PARTE 2: ENTENDENDO A NECESSIDADE DE
    ORDENAR E BUSCAR ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 115

    CAPÍTULO 6: Estruturando Dados ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 117
    Determinando a Necessidade de Estrutura . . . . . . . . . . . . . . . . . . . . 118
    Facilitando a visualização do conteúdo . . . . . . . . . . . . . . . . . . . . . 118
    Combinando dados de várias fontes . . . . . . . . . . . . . . . . . . . . . . . 119
    Considerando a necessidade de ajustes . . . . . . . . . . . . . . . . . . . 120
    Empilhando Dados em Ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
    Ordenando em pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
    Usando filas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
    Encontrando dados usando dicionários . . . . . . . . . . . . . . . . . . . . 126
    Trabalhando com Árvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
    Entendendo o básico de árvores . . . . . . . . . . . . . . . . . . . . . . . . . . 127
    Construindo uma árvore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
    Representando Relações em um Grafo . . . . . . . . . . . . . . . . . . . . . . . 130
    Indo além das árvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
    Construindo grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    CAPÍTULO 7: Organizando e Buscando Dados? ? ? ? ? ? ? ? ? ? ? ? 133
    Ordenando Dados com Mergesort e Quicksort . . . . . . . . . . . . . . . . 134
    Definindo a importância de ordenar dados . . . . . . . . . . . . . . . . . 134
    Ordenando dados ingenuamente . . . . . . . . . . . . . . . . . . . . . . . . . 136
    Empregando melhores técnicas de ordenação . . . . . . . . . . . . . . 138
    Usando Árvores de Busca e o Heap . . . . . . . . . . . . . . . . . . . . . . . . . . 142
    Considerando a necessidade de buscar com eficácia . . . . . . . . 143
    Construindo uma árvore de busca binária . . . . . . . . . . . . . . . . . . 145
    Executando buscas especializadas usando um heap binário . . 146
    Contando com Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
    Colocando tudo em cestos (buckets) . . . . . . . . . . . . . . . . . . . . . . 147
    Evitando colisões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
    Criando sua própria função hash. . . . . . . . . . . . . . . . . . . . . . . . . . 151

    PARTE 3: EXPLORANDO O MUNDO DOS GRAFOS ? ? ? 153

    CAPÍTULO 8: Entendendo o Básico de Grafos ? ? ? ? ? ? ? ? ? ? ? ? 155
    Explicando a Importância de Redes . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
    Considerando a essência de um grafo . . . . . . . . . . . . . . . . . . . . . 156
    Encontrando grafos em todo lugar . . . . . . . . . . . . . . . . . . . . . . . . 159
    Mostrando o lado social dos grafos . . . . . . . . . . . . . . . . . . . . . . . . 159
    Entendendo subgrafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
    Definindo Como Desenhar um Grafo . . . . . . . . . . . . . . . . . . . . . . . . . 161
    Distinguindo os atributos chave . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
    Desenhando o grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
    Medindo a Funcionalidade do Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . 164
    Contando arestas e vértices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
    Calculando a centralidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
    Transformando um Grafo em Formato Numérico . . . . . . . . . . . . . . 169
    Adicionando um grafo a uma matriz . . . . . . . . . . . . . . . . . . . . . . . 170
    Usando representações esparsas . . . . . . . . . . . . . . . . . . . . . . . . . 171
    Usando uma lista para manter um grafo . . . . . . . . . . . . . . . . . . . 171

    CAPÍTULO 9: Reconectando os Pontos ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 173
    Atravessando um Grafo com Eficiência . . . . . . . . . . . . . . . . . . . . . . . . 174
    Criando o grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
    Aplicando a busca em largura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
    Aplicando a busca em profundidade. . . . . . . . . . . . . . . . . . . . . . . 177
    Determinando qual aplicação usar . . . . . . . . . . . . . . . . . . . . . . . . 179
    Ordenando os Elementos de Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . 180
    Trabalhando em grafos acíclicos dirigidos (DAGs) . . . . . . . . . . . 181
    Contando com a ordenação topológica . . . . . . . . . . . . . . . . . . . . 182
    Reduzindo a uma Árvore de Extensão Mínima . . . . . . . . . . . . . . . . . 183
    Descobrindo o algoritmo certo a se usar . . . . . . . . . . . . . . . . . . . 186
    Introduzindo filas de prioridade . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
    Alavancando o algoritmo de Prim . . . . . . . . . . . . . . . . . . . . . . . . . 188
    Testando o algoritmo de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . 189
    Determinando qual algoritmo funciona melhor . . . . . . . . . . . . . 191
    Encontrando a Rota Mais Curta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
    Definindo o que significa encontrar o caminho mais curto . . . 192
    Explicando o algoritmo de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . 194
    CAPÍTULO 10:Descobrindo os Segredos dos Grafos ? ? ? ? ? ? ? 197
    Visualizando Redes Sociais como Grafos . . . . . . . . . . . . . . . . . . . . . . 198
    Agrupando redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
    Descobrindo comunidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
    Navegando um Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
    Contando os graus de separação . . . . . . . . . . . . . . . . . . . . . . . . . 203
    Percorrendo um grafo aleatoriamente . . . . . . . . . . . . . . . . . . . . . 206

    CAPÍTULO 11:Chegando na Página Web Certa ? ? ? ? ? ? ? ? ? ? ? ? 207
    Encontrando o Mundo em um Mecanismo de Busca . . . . . . . . . . . 208
    Buscando dados na internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
    Considerando como encontrar os dados certos . . . . . . . . . . . . 208
    Explicando o Algoritmo PageRank . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
    Entendendo o raciocínio por trás do algoritmo PageRank . . . . 210
    Explicando o bê-á-bá do PageRank . . . . . . . . . . . . . . . . . . . . . . . . 212
    Implementando o PageRank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
    Implementando um script Python . . . . . . . . . . . . . . . . . . . . . . . . . 213
    Lutando com uma implementação ingênua . . . . . . . . . . . . . . . . 217
    Introduzindo o tédio e o teletransporte . . . . . . . . . . . . . . . . . . . . 220
    Observando a vida de um mecanismo de busca . . . . . . . . . . . . 221
    Considerando outros usos do PageRank . . . . . . . . . . . . . . . . . . . 222
    Indo Além do Paradigma do PageRank . . . . . . . . . . . . . . . . . . . . . . . . 222
    Introduzindo pesquisas semânticas . . . . . . . . . . . . . . . . . . . . . . . 222
    Usando IA para classificar resultados de busca . . . . . . . . . . . . . 223

    PARTE 4: LUTANDO COM O BIG DATA ? ? ? ? ? ? ? ? ? ? ? ? ? 225

    CAPÍTULO 12:Lidando com o Big Data ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 227
    Transformando Potência em Dados . . . . . . . . . . . . . . . . . . . . . . . . . . 228
    Entendendo as implicações de Moore . . . . . . . . . . . . . . . . . . . . . 229
    Encontrando dados em todo lugar . . . . . . . . . . . . . . . . . . . . . . . . 231
    Pondo os algoritmos para trabalhar . . . . . . . . . . . . . . . . . . . . . . . 233
    Fluxos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
    Analisando transmissões com a receita certa . . . . . . . . . . . . . . . 236
    Reservando os dados certos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
    Rascunhando uma Resposta a partir do Fluxo de Dados . . . . . . . . 241
    Filtrando elementos de fluxo sem pensar . . . . . . . . . . . . . . . . . . 242
    Demonstrando o filtro de Bloom . . . . . . . . . . . . . . . . . . . . . . . . . . 244
    Encontrando o número de elementos distintos . . . . . . . . . . . . . 247
    Aprendendo a contar elementos em um fluxo . . . . . . . . . . . . . . 249

    CAPÍTULO 13:Paralelizando Operações ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 251
    Lidando com Imensas Quantidades de Dados . . . . . . . . . . . . . . . . . 252
    Entendendo o paradigma paralelo . . . . . . . . . . . . . . . . . . . . . . . . 252
    Distribuindo arquivos e operações . . . . . . . . . . . . . . . . . . . . . . . . 255
    Empregando a solução MapReduce . . . . . . . . . . . . . . . . . . . . . . . 257
    Resolvendo Algoritmos para o MapReduce . . . . . . . . . . . . . . . . . . . . 260
    Configurando uma simulação MapReduce . . . . . . . . . . . . . . . . . 261
    Investigando por mapeamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

    CAPÍTULO 14:Comprimindo Dados ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 267
    Tornando os Dados Menores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
    Entendendo a codificação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
    Considerando os efeitos da compressão . . . . . . . . . . . . . . . . . . . 270
    Escolhendo um tipo particular de compressão . . . . . . . . . . . . . . 271
    Escolhendo sua codificação sabiamente . . . . . . . . . . . . . . . . . . . 273
    Codificando usando a compressão de Huffman . . . . . . . . . . . . . 276
    Lembrando sequências com LZW . . . . . . . . . . . . . . . . . . . . . . . . . 278

    PARTE 5: DESAFIANDO PROBLEMAS DIFÍCEIS? ? ? ? ? ? ? 283

    CAPÍTULO 15:Trabalhando com Algoritmos Gulosos ? ? ? ? ? ? 285
    Decidindo Quando É Melhor Ser Guloso . . . . . . . . . . . . . . . . . . . . . . 286
    Entendendo por que a gula é boa . . . . . . . . . . . . . . . . . . . . . . . . . 288
    Mantendo algoritmos gulosos sob controle . . . . . . . . . . . . . . . . 289
    Considerando problemas NP-completos . . . . . . . . . . . . . . . . . . . 291
    Descobrindo Como a Gula Pode Ser Útil . . . . . . . . . . . . . . . . . . . . . . 292
    Organizando dados em cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
    Competindo por recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
    Revisitando a codificação de Huffman . . . . . . . . . . . . . . . . . . . . . 296

    CAPÍTULO 16:Recorrendo à Programação Dinâmica ? ? ? ? ? ? 301
    Explicando a Programação Dinâmica . . . . . . . . . . . . . . . . . . . . . . . . . 302
    Uma base histórica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
    Dinamizando problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
    Moldando a recursão dinamicamente . . . . . . . . . . . . . . . . . . . . . 305
    Alavancando o memoization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
    Descobrindo as Melhores Receitas Dinâmicas . . . . . . . . . . . . . . . . . 310
    Olhando dentro da mochila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
    Viajando pelas cidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
    Aproximando a busca de strings . . . . . . . . . . . . . . . . . . . . . . . . . . 319

    CAPÍTULO 17:Usando Algoritmos Randomizados ? ? ? ? ? ? ? ? ? 323
    Definindo Como a Randomização Funciona. . . . . . . . . . . . . . . . . . . . 324
    Considerando por que a randomização é necessária . . . . . . . . 325
    Entendendo como a probabilidade funciona . . . . . . . . . . . . . . . 326
    Entendendo distribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
    Simulando com o uso do método de Monte Carlo . . . . . . . . . . . 330
    Inserindo Aleatoriedade na Sua Lógica . . . . . . . . . . . . . . . . . . . . . . . . 332
    Calculando uma mediana usando Quickselect . . . . . . . . . . . . . . 333
    Fazendo simulações usando Monte Carlo . . . . . . . . . . . . . . . . . . 336
    Ordenando mais rápido com Quicksort . . . . . . . . . . . . . . . . . . . . 338

    CAPÍTULO 18:Executando uma Busca Local ? ? ? ? ? ? ? ? ? ? ? ? ? ? 341
    Entendendo a Busca Local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
    Conhecendo a vizinhança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
    Apresentando Truques de Busca Local . . . . . . . . . . . . . . . . . . . . . . . . 344
    Explicando a escalada com n-rainhas . . . . . . . . . . . . . . . . . . . . . . 345
    Descobrindo o simulated annealing . . . . . . . . . . . . . . . . . . . . . . . 348
    Evitando repetições usando a busca tabu . . . . . . . . . . . . . . . . . . 349
    Solucionando a Satisfatibilidade de Circuitos Booleanos . . . . . . . . 350
    Solucionando a 2-SAT usando randomização . . . . . . . . . . . . . . . 351
    Implementando o código em Python . . . . . . . . . . . . . . . . . . . . . . 352
    Percebendo que um ponto de partida é importante . . . . . . . . . 355

    CAPÍTULO 19:Empregando a Programação Linear ? ? ? ? ? ? ? ? 359
    Usando Funções Lineares como Ferramenta . . . . . . . . . . . . . . . . . . 360
    Compreendendo a matemática básica necessária . . . . . . . . . . . 361
    Aprendendo a simplificar quando planejar . . . . . . . . . . . . . . . . . 363
    Trabalhando com geometria usando o simplex . . . . . . . . . . . . . 364
    Entendendo as limitações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
    Usando a Programação Linear na Prática . . . . . . . . . . . . . . . . . . . . . 366
    Configurando PuLP em casa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
    Otimizando a produção e a receita . . . . . . . . . . . . . . . . . . . . . . . . 367

    CAPÍTULO 20:Considerando Heurísticas ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 373
    Diferenciando Heurísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
    Considerando os objetivos das heurísticas . . . . . . . . . . . . . . . . . 374
    Da genética à IA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
    Robôs de Roteamento que Usam Heurísticas . . . . . . . . . . . . . . . . . . 376
    Buscando em territórios desconhecidos . . . . . . . . . . . . . . . . . . . 377
    Usando medidas de distância como heurísticas . . . . . . . . . . . . . 378
    Explicando Algoritmos Desbravadores . . . . . . . . . . . . . . . . . . . . . . . . 380
    Criando um labirinto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
    Procurando uma rota best-first rápida . . . . . . . . . . . . . . . . . . . . . 382
    Percorrendo o A* heuristicamente . . . . . . . . . . . . . . . . . . . . . . . . 386

    PARTE 6: A PARTE DOS DEZ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 391

    CAPÍTULO 21:Dez Algoritmos que Estão Mudando
    o Mundo ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 393
    Usando Rotinas de Ordenação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
    Procurando Coisas com Rotinas de Busca . . . . . . . . . . . . . . . . . . . . . 395
    Sacudindo as Coisas com Números Aleatórios . . . . . . . . . . . . . . . . . 395
    Executando a Compressão de Dados . . . . . . . . . . . . . . . . . . . . . . . . . 396
    Mantendo Dados Secretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
    Mudando o Domínio de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
    Analisando Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
    Encontrando Padrões de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
    Lidando com Automação e Respostas Automáticas . . . . . . . . . . . . . 399
    Criando Identificadores Únicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

    CAPÍTULO 22:Dez Problemas Envolvendo Algorítmicos
    Ainda por Resolver? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 401
    Lidando com Buscas de Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
    Diferenciando Palavras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
    Determinando Se uma Aplicação Vai Terminar . . . . . . . . . . . . . . . . . 403
    Criando e Usando Funções Unidirecionais . . . . . . . . . . . . . . . . . . . . . 403
    Multiplicando Números Realmente Grandes . . . . . . . . . . . . . . . . . . . 404
    Dividindo um Recurso Igualmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
    Reduzindo o Tempo de Cálculo da Distância de Edição . . . . . . . . . 405
    Solucionando Problemas Rapidamente . . . . . . . . . . . . . . . . . . . . . . . 405
    O Jogo da Paridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
    Entendendo Questões Espaciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

    ÍNDICE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 407

    Informações Técnicas

    Nº de páginas:432
    Origem:Internacional
    Editora:Editora Alta Books
    Idioma:Português
    Edição:1ª Edição
    Ano:2018
    ISBN:9788550803579
    Encadernação:Brochura
    Autor:John Mueller , Luca Massaron
  • Informações

Avaliação técnica sobre o livro

Olá! Seja Bem Vindo (a)!

Eu sou o Moderninho , o Mascote da Ciência Moderna Online!
Além de bonito, o novo site tem Minhas Dicas :) #ficaadica

A 1ª Dica é -> Deixe aqui seu contato para receber nossas
NOVIDADES, PROMOÇÕES E CUPONS DE DESCONTOS ;)

Navegue SEM Moderação!