Resumo do livro Algorithms To Live By by Brian Christian
1. Coloque algoritmos para usar em sua própria vida.
Vamos pensar por um segundo naquele smartphone ou tablet à sua frente. Como isso “pensa”? Por exemplo, como ele “sabe” como lidar com uma pilha de dados e apresentá-los a você como as piscadas que você está lendo – ou ouvindo – agora mesmo? A resposta, claro, é que uma série de instruções – ou, por outras palavras, um algoritmo – permite-lhe fazer isto.
Mas, como você aprenderá com essas piscadas, não são apenas os computadores que usam algoritmos. Eles também desempenham um papel em seu próprio pensamento, em seus instintos e decisões. E aqui está a melhor parte: quando seus próprios algoritmos não estão à altura da tarefa de resolver um problema difícil em sua vida, você pode recorrer a algoritmos de computador simples, mas poderosos, para obter ajuda.
Nesse resumo, você aprenderá:
- Como a matemática pode dizer quando parar de namorar e se contentar com o parceiro com quem você está;
- Como os algoritmos podem ajudá-lo a classificar sua coleção de livros sobre zumbis; e
- Por que aquela bagunça na sua mesa não é tão ruim quanto parece.
2. Algoritmos ajudam humanos e computadores a resolver problemas.
Se você tenta se manter atualizado com a tecnologia atual, provavelmente já sabe que os computadores usam algoritmos o tempo todo para resolver problemas. Mas você pode ter se perguntado: “O que exatamente é um algoritmo?”
A palavra na verdade remonta ao século IX, quando foi usada pela primeira vez pelo matemático persa Muhammad al-Khwarizmi. Mas o uso de algoritmos pode ser rastreado há cerca de quatro mil anos, desde a civilização suméria.
Simplificando, um algoritmo é uma série finita de etapas que ajudam a resolver um problema – e é uma técnica que usamos o tempo todo.
Até uma receita pode ser pensada como um algoritmo: você segue uma série de instruções para obter o resultado desejado, uma refeição deliciosa. O mesmo pode ser dito do padrão que você segue para tricotar um lenço ou montar alguns móveis da Ikea.
E quando você monta uma lista de prós e contras para decidir se aceita ou não uma oferta de emprego ou se toma uma grande decisão, também está seguindo o que é conhecido como algoritmo intuitivo.
Pela sua própria natureza, os algoritmos intuitivos que os humanos usam não são precisos. Utilizamo-los em tempos de incerteza para tomar a melhor decisão possível, como pesar os benefícios potenciais e os riscos de saltar para um novo investimento empresarial.
Portanto, esses algoritmos intuitivos podem parecer bastante subjetivos e aleatórios em comparação com os algoritmos matemáticos usados por um computador, embora forneçam basicamente a mesma solução.
Assuma a desagradável tarefa de procurar um apartamento. A maioria das pessoas entra nesse processo com um conjunto de critérios em mente: uma quantidade mínima de espaço, uma certa distância da escola ou do trabalho, um valor máximo de aluguel. Quando essas condições forem atendidas, você dará o próximo passo e assinará o contrato de locação.
Este é essencialmente o mesmo método que os algoritmos de computador usam e, nas próximas etapas, exploraremos como esses métodos podem funcionar para você.
3. Na maioria das vezes, os algoritmos podem nos dizer quando parar de abusar da sorte.
Se você está procurando um apartamento em um mercado competitivo, provavelmente sabe como pode ser difícil decidir quando aceitar uma oferta e parar de procurar.
Nosso julgamento é muitas vezes obscurecido pela primeira coisa que surge, que tendemos a perceber como a melhor opção disponível. E, com a mesma facilidade, a segunda opção pode parecer a segunda melhor opção.
Esses problemas são exatamente o que o algoritmo de parada ideal foi projetado para ajudar a resolver.
Matematicamente falando, se houver 100 opções, a parada ideal diz para olhar as primeiras 37 sem escolher nenhuma delas. Em vez disso, observe-os para estabelecer um padrão, como excluir apartamentos que ficam no térreo e possuem banheiros pequenos.
Então, após os primeiros 37, você deve pular para o primeiro que atenda a esses padrões. Embora esta estratégia não garanta que você terminará com o melhor, essas probabilidades ideais são muito melhores do que apenas adivinhar.
E isso não se aplica apenas a apartamentos; esteja você procurando um carro, um emprego ou um companheiro em potencial, o número mágico é sempre 37%.
Infelizmente, a matemática nem sempre nos diz o momento certo para parar.
Vejamos um simples lançamento de moeda. Digamos que você queira apostar no resultado usando a estratégia “triplo ou nada”, o que significa que você triplica a aposta a cada jogada, mas também corre o risco de perder tudo o que ganhou até agora.
Então, se você começar com quatro dólares e suas chances forem de 50/50, metade das vezes você terminará sem nada e a outra metade com doze dólares, então, em média, você esperaria ter seis dólares em sua conta. bolso. Na próxima rodada, com uma aposta inicial de doze dólares, as probabilidades permanecem as mesmas, mas você pode esperar acabar com dezoito dólares e assim por diante.
Com estas probabilidades e médias, a matemática pura sugeriria que continuasse a apostar devido à quantidade crescente de dinheiro que pode esperar ganhar. Mas é claro que mais cedo ou mais tarde você perderia tudo e o jogo acabaria. Portanto, um algoritmo puramente matemático não funciona em todas as situações.
4. Algoritmos matemáticos podem ajudá-lo a decidir quando é hora de explorar algo novo.
Vamos continuar com o jogo por um minuto e dar uma olhada em um dos jogos mais populares em qualquer cassino: a máquina caça-níqueis, ou “bandido de um braço só”.
Enquanto algumas pessoas ficam felizes em ficar sentadas em uma única máquina caça-níqueis o dia todo na esperança de eventualmente ganhar a sorte grande, outras preferem explorar suas opções, coletar informações e tentar usá-las em seu benefício. Este mesmo dilema básico de quanto tempo permanecer com uma opção perdedora antes de seguir em frente se aplica a uma série de situações na vida, como namoro ou investimento. Mas qual é a estratégia vencedora?
Em matemática, questões como essa são chamadas de problemas do bandido multiarmado e têm várias respostas diferentes.
A abordagem mais fácil para melhorar as suas probabilidades nas slot machines chama-se “ficar-ganhar, perder-mudar” – mas pode não ser a melhor estratégia.
Tudo o que você precisa fazer é ficar com uma máquina enquanto estiver ganhando e mudar para outra quando perder. Mas esta abordagem pode ser enganadora, uma vez que uma perda única não é o melhor indicador de como será a sua sorte.
Um método melhor é o algoritmo Upper Confidence Bound.
Veja como usá-lo: primeiro, encontre a máquina que oferece o melhor valor esperado para jogar. Neste caso, a única informação que você tem é o contador do jackpot, então você escolhe aquele com o maior jackpot. Enquanto você joga, acompanhe o resultado real – neste caso, quanto dinheiro você está ganhando – e observe se está melhorando gradualmente ou piorando gradualmente do que você esperava. Se o resultado real o desaponta continuamente, é aí que você passa para a próxima máquina com o segundo maior jackpot. E assim por diante.
Como esse algoritmo leva em consideração o fato de que uma boa máquina ainda pode proporcionar perdas ocasionais, ele aumenta suas chances de ganhar.
Outra fonte de inspiração para resolver problemas de bandidos multi-armados vem de ensaios clínicos adaptativos na indústria farmacêutica. Quando os médicos testam diferentes medicamentos para uma doença, avaliam continuamente os seus participantes e fazem alterações imediatas no seu plano de testes, mesmo antes do final do ensaio. Se um medicamento não parece estar funcionando, eles imediatamente o interromperão e se concentrarão em outros medicamentos que foram úteis. Eles estão sempre prontos para explorar novas informações antes mesmo de os resultados finais serem divulgados.
5. Você nem sempre precisa de ajuda para classificar seus arquivos, mas se precisar, os algoritmos podem ajudar.
Você já sentiu que não consegue encontrar nada do que procura depois que sua mesa ou escritório é limpo? Bem, se você é o tipo de pessoa que prefere um certo caos organizado, ficará feliz em ouvir o próximo conselho.
Não se preocupe em manter tudo sempre limpo e arrumado.
Afinal, o principal motivo para ter tudo organizado e em ordem é facilitar a localização de algo quando você precisar. E organizar suas pilhas de papel pode consumir muito tempo e energia que poderiam ser melhor gastos fazendo outras coisas, especialmente se você já sabe exatamente onde está tudo!
Mas digamos que seu sistema de arquivamento bagunçado esteja fazendo você parecer um colecionador e você queira uma maneira melhor de resolver as coisas. Felizmente para você, existem algoritmos apenas para isso.
Vamos começar com o método menos eficiente, o bubble sort. Isso funciona organizando um par de coisas de cada vez, repetidamente, até que tudo esteja resolvido.
Digamos que você queira colocar em ordem alfabética sua enorme coleção de livros sobre zumbis: primeiro, você vai para a área de suas estantes desorganizadas onde pertencem os livros que começam com A, olha os dois primeiros itens que já estão lá e os coloca em ordem. Agora você pode ter “Albatross Zombies” seguido de “Alligator Zombies”.
Agora vá para o próximo livro – “Aardvark Zombies” – e classifique-o com o último item do par anterior, “Alligator Zombies”. Agora, sua prateleira deve consistir em: “Albatross Zombies” seguido de “Aardvark Zombies” seguido de “Alligator Zombies”. Em seguida, você repete isso até ter examinado todos os seus livros e recomeça quantas vezes forem necessárias até que toda a sua coleção esteja classificada, o que significa que você não precisa mais trocar os lugares de nenhum livro.
Obviamente, se você tem uma casa cheia de livros, esta não é a maneira mais fácil de fazer as coisas. A melhor maneira de fazer isso é usar a classificação por inserção: tire todos os seus livros da estante e simplesmente coloque-os de volta, um por um, sempre garantindo que cada um vá para o lugar certo em comparação com os livros que você já colocou de volta.
Ainda melhor para coleções enormes é o método de classificação por mesclagem: divida tudo em várias pilhas, classifique-as de A a Z e depois mescle as pilhas.
6. Quando se trata de organizar dados, há muito que você pode aprender com os computadores.
Agora que suas prateleiras estão em ordem, vamos examinar as pilhas de papel em sua mesa e todas as anotações e informações que você mantém à mão. Provavelmente são coisas importantes, como contas pendentes ou cartas que necessitam de resposta urgente – documentos que requerem fácil acesso.
Os computadores têm uma maneira bastante útil de lidar com coisas que precisam ser recuperadas rapidamente. Eles armazenam seus dados em uma unidade de disco rígido ou em uma unidade de estado sólido. Cada um vem com suas próprias vantagens.
Embora os discos rígidos possam armazenar mais dados, as unidades de estado sólido (SSDs) são mais rápidas no envio desses dados para você. Hoje em dia, muitos dispositivos combinam essas unidades, armazenando coisas importantes em um SSD rápido e usando um disco rígido para armazenar grandes arquivos.
Mas as informações mais importantes e usadas com mais frequência são armazenadas no cache, a valiosa camada superior da memória que pode ser acessada mais rapidamente.
Os computadores usam um algoritmo simples para decidir o que será armazenado no cache. É chamado de Least Recentemente Usado (LRU) e basicamente armazena tudo o que você usou por último no topo, na camada superior do cache.
Este algoritmo é uma maneira simples de seu computador adivinhar qual arquivo poderá ser necessário no futuro. Felizmente, também funciona bem no mundo analógico para contas, cartas importantes e coisas que você precisa manter ao alcance e na mente.
Isso significa que toda a bagunça em sua mesa pode ficar onde está, porque, provavelmente, sua bagunça organizada já tem todos os itens usados recentemente e as cartas mais importantes bem em cima!
Nossos cérebros também funcionam de maneira semelhante: se alguma informação não for utilizada por muito tempo, teremos dificuldade em lembrá-la.
Portanto, se você estiver se preparando para uma prova ou reunião importante pela manhã, leia suas anotações antes de ir para a cama. As informações estarão mais facilmente acessíveis quando você acordar.
7. Os algoritmos podem nos ajudar a programar nossas vidas, mas também têm seus limites.
Além de organizar os arquivos, outra chave para a produtividade é organizar seu tempo e descobrir como fazer tudo. Cada dia tem seus desafios. Pode ser difícil encontrar tempo para cumprir todos os seus prazos – e não se esqueça de levar o cachorro ao veterinário.
Felizmente, existem muitos algoritmos que lidam com esses tipos de problemas de agendamento.
Por exemplo, se você estiver lidando com várias tarefas e não souber por onde começar, use o algoritmo Primeira data de vencimento e sempre comece com a tarefa que tem o prazo mais próximo.
Se o tempo está acabando e você sabe que não vai conseguir fazer tudo, siga o Algoritmo de Moore e pule a tarefa que exige mais tempo; dessa forma, você realizará mais tarefas no geral.
Mas faça o que fizer, tome cuidado com a inversão de prioridade. Isso acontece quando tarefas menores ocupam todo o seu tempo e energia e nada importante é feito.
Infelizmente, não existem soluções mágicas para gerenciamento de tempo. Estudos mostram que a maioria dos problemas de agendamento que enfrentamos não podem ser resolvidos com uma solução rápida e fácil.
E, claro, o agendamento em si pode consumir grande parte do seu dia, portanto, limite a quantidade de tempo que você dedica à organização do seu tempo.
Isso provavelmente parece muito complicado, mas em caso de dúvida, há um método simples que você pode usar para obter o máximo resultado no menor tempo possível:
Concentre-se em uma coisa de cada vez e ignore quaisquer e-mails ou outras solicitações que receber ao fazer isso. Mudar constantemente sua atenção da tarefa para a caixa de entrada e vice-versa é incrivelmente demorado e cansativo, porque cada mudança sobrecarrega sua memória de trabalho e exige que você comece do zero. Portanto, concentre-se apenas em uma tarefa de cada vez e ignore toda e qualquer distração. Nem se preocupe com o tamanho da sua lista de tarefas; tudo será feito no devido tempo.
Com isso em mente, você poderá realizar mais e aumentar sua produtividade sem nem mesmo se preocupar por onde começar.
8. Os algoritmos certos podem ajudá-lo a prever o futuro.
A maioria de nós adoraria poder ver o futuro, mas e a próxima melhor coisa: prever o que provavelmente acontecerá?
Com a ajuda de algoritmos, prever resultados prováveis não é tão absurdo.
Esse tipo de previsão remonta à Inglaterra do século XVIII, quando o reverendo Thomas Bayes descobriu um método básico para prever a probabilidade de eventos futuros, como o sorteio de um bilhete de loteria premiado, dados certos eventos anteriores.
Vamos tentar aplicar a lógica de Bayes às raspadinhas de loteria atuais. Imagine que você comprou três raspadinhas e quer utilizá-las para entender qual proporção dos ingressos em circulação oferece algum tipo de ganho. A ideia de Bayes foi que é preciso começar levantando hipóteses sobre a prevalência de vencedores entre todos os ingressos em circulação e, usando isso como suposição, calcular a probabilidade dos resultados que você realmente vê em seus três ingressos.
Por exemplo, se todos os três bilhetes forem vencedores, você poderia razoavelmente presumir que todos os bilhetes em circulação oferecem uma vitória. Afinal, se todos os ingressos forem vencedores, você deverá testemunhar três em cada três ingressos ganhando 100% das vezes. Mas se apenas metade dos ingressos fossem vencedores, então sua sorte tripla teria apenas 12,5% de chance de acontecer com você. Portanto, é muito mais provável que todos os ingressos sejam vencedores.
É claro que quanto mais informações você coletar, mais precisa será sua próxima hipótese.
Mas, ao longo dos anos, a matemática desenvolveu-se e deu-nos ferramentas mais precisas para fazer melhores previsões.
O que ajuda significativamente essas previsões é compreender o padrão de distribuição de um fenômeno.
Por exemplo, existe a famosa “curva em sino”, modelada numa distribuição normal, que se aplica a muitos fenómenos. Ao prever a idade média de um grupo aleatório de pessoas, você pode presumir que poucas pessoas são extremamente jovens ou extremamente velhas; a maioria cai em algum lugar no meio do sino. Dessa forma, se você for a um encontro às cegas, poderá ter certeza razoável de que não jantará com um nonagenário.
Outras situações seguem a distribuição da lei de potência, que é bem diferente.
Nestes casos, atingimos a média mediana tendo a maioria das observações abaixo dela e apenas algumas enormes acima dela. Um excelente exemplo disso é a distribuição de riqueza. De um modo geral, há muitas pessoas pobres e apenas um grupo seleto que detém a maior parte da riqueza mundial.
9. Os algoritmos nos ajudam a trocar mensagens e a lidar com a sobrecarga de dados.
Aqui está um experimento mental clássico: dois generais estão se preparando para lançar um ataque conjunto a uma cidade localizada em um vale fortificado. O único problema é que cada general está em uma colina com o vale que os separa, e antes que possam atacar eles precisam chegar a um acordo sobre a hora exata. No entanto, a única maneira de transmitir uma mensagem é enviar alguém através do vale, onde os seus mensageiros provavelmente serão capturados. Então, como eles podem determinar um horário e saber que o outro concordou com isso?
Esse tipo de problema é algo que os cientistas da computação ponderaram para criar algoritmos que ajudassem a garantir que as mensagens chegassem ao seu destino com segurança.
O primeiro método que eles desenvolveram é chamado de retransmitido até a quebra. A ideia seria enviar mensageiro após mensageiro, esperando que um deles conseguisse passar sem ser capturado.
Isso é essencialmente o que fazemos quando continuamos enviando mensagens de texto ou ligando para um amigo até que ele finalmente responda.
Mas é claro que hoje em dia enfrentamos principalmente outros problemas além dos mensageiros interceptados. Digamos que toda vez que você verifica seu e-mail, você recebe um erro dizendo que o servidor está sobrecarregado.
Nesse caso, o método Exponencial Backoff pode ajudar. Em vez de atualizar freneticamente, espere alguns minutos para que o tráfego diminua. E se você ainda receber o erro depois disso, dobre o tempo de espera para quatro minutos antes de tentar novamente e continue dobrando até que o erro seja concluído.
Idealmente, todos que tentassem usar o servidor seguiriam esse método, pois ajudaria a garantir uma resolução rápida.
Mas a melhor solução seria evitar o problema de sobrecarga em primeiro lugar, um método denominado Aumento Aditivo, Diminuição Multiplicativa (AIMD).
Este algoritmo ajuda a determinar a quantidade máxima de dados que uma rede pode manipular. Começa enviando apenas um pacote de dados; em seguida, ele envia o dobro da quantia a cada vez subsequente, até atingir o ponto de sobrecarga.
Em seguida, ele tenta identificar o limite enviando a maior quantidade antes da falha ocorrer e aumentando os pacotes subsequentes em uma pequena quantidade até que o limite seja atingido.
10. Existem algoritmos para ajudar a descobrir o que as pessoas farão e orientá-las na tomada de decisões.
Você já ouviu falar do dilema do prisioneiro? Imagine que você e um parceiro roubaram um banco com sucesso. Mais tarde, vocês dois são levados para interrogatório pela polícia e colocados em salas separadas. Você sabe que eles não têm provas suficientes para condenar nenhum de vocês pelo roubo, então, se você ficar de boca fechada, tudo o que eles podem fazer é dar-lhe uma sentença de um ano por uma acusação menor. Depois disso, você sairá e poderá aproveitar seu saque.
Mas aqui está a diferença: a polícia oferece um acordo a você e ao seu parceiro: se você testemunhar contra o seu parceiro e ele permanecer em silêncio, você será libertado e ele irá para a prisão por dez anos. No entanto, se vocês dois se atacarem, cada um receberá uma sentença de cinco anos. O que você faz?
Esta é uma questão estratégica clássica que representa a teoria dos jogos, que explora como as pessoas racionais responderiam a tal situação.
No caso dos prisioneiros, é quase certo que se voltariam uns contra os outros e, nesse caso, cada um receberia uma pena de cinco anos.
Neste cenário há uma clara recompensa máxima – incriminar a outra pessoa, não enfrentar pena de prisão e ter a oportunidade de ficar com todo o dinheiro. Mesmo que o seu parceiro também fale, uma sentença de cinco anos ainda é melhor do que os dez anos que você pegaria se permanecesse em silêncio.
Mas, no final, como cada pessoa acabaria testemunhando contra a outra, quem ganha são os policiais.
Outro ramo da teoria dos jogos é o design de mecanismos mais simples. Em vez de estabelecer opções na esperança de obter uma determinada reação, força as pessoas a se comportarem de maneira desejável.
Por exemplo, muitos empregadores enfrentam o problema de os funcionários não aproveitarem o tempo de férias. E os empregadores sabem que os empregados bem descansados têm um desempenho muito melhor do que os sobrecarregados. A empresa Evernote chegou ao ponto de oferecer aos seus funcionários um bônus de mil dólares por folgas, mas nem isso funcionou.
Ao aplicar o projeto de mecanismo a esse problema, você não precisa descobrir maneiras de convencer seus funcionários. Tudo o que você precisa fazer é se perguntar como fazê-los tirar férias.
E a resposta é simples: Torne as férias obrigatórias!
Como você pode ver, os algoritmos têm aplicações em muitos campos. Finalmente, num piscar de olhos, vamos discutir suas limitações.
11. É importante saber que os algoritmos têm seus limites.
Quando você tenta modelar algo complicado, os modelos complexos geralmente são melhores que os simples.
Por exemplo, se você está desenvolvendo um modelo para explicar a causa da obesidade, você vai querer um modelo complexo que leve em conta muitos fatores, desde uma dieta pobre até a genética e a falta de exercício. Um modelo simples poderia centrar-se apenas na dieta, o que seria insuficiente.
No entanto, também surgem problemas quando os modelos se tornam demasiado complexos. Este é um risco quando se consideram problemas do mundo real, onde sempre haverá incertezas e erros nos dados. Muito provavelmente, você começaria com um conjunto de dados de amostra e tentaria construir um algoritmo que fizesse previsões com base nele. A tentação é adicionar variáveis ao algoritmo até que ele explique perfeitamente tudo nos dados, inclusive os erros. Isso é conhecido como overfitting e cria problemas quando você tenta aplicar o mesmo algoritmo a dados diferentes. Basicamente, o modelo foi adaptado tão rigorosamente aos dados da amostra que perdeu toda a flexibilidade e não funcionará bem com quaisquer outros dados.
Por exemplo, ao considerar a obesidade, nos dados da sua amostra poderá notar que certas áreas do país têm mais obesidade do que outras. Mas isto pode muito bem ser uma coincidência, e se ajustar o seu modelo para enfatizar a importância da localização de uma pessoa, isso irá piorar o poder preditivo do modelo quando o aplicar a novos dados onde a localização é irrelevante.
Quando você percebe que não existem algoritmos perfeitos, você pode relaxar um pouco seus padrões e optar pelo bom o suficiente em vez do perfeito.
Considere o problema do caixeiro-viajante, que pergunta: como você pode encontrar a melhor rota entre vários pontos sem ter que ir a qualquer lugar duas vezes? Se você expandir esse problema para todo um estado ou país, ele se tornará indescritivelmente complexo.
Numa situação como esta, a solução mais eficiente é relaxar os padrões. Deixe seu vendedor visitar locais diferentes pelo menos duas vezes. Você acabará perto de uma boa solução em um tempo razoável, mesmo que não seja perfeita.
Como você aprendeu com essas piscadas, se compreender seus limites e possibilidades, os algoritmos podem ser aplicados em muitas áreas da vida.
12. Resumo final
Algoritmos não são coisas incompreensíveis que existem apenas para ajudar matemáticos e computadores. Na verdade, nós os usamos todos os dias, mesmo que não tenhamos consciência disso. Os algoritmos contêm muita sabedoria na resolução de problemas que podem ajudá-lo a tomar boas decisões, prever resultados prováveis e tornar-se um indivíduo mais produtivo.
Conselhos acionáveis:
Faça as coisas simples primeiro. Na próxima vez que sua lista de tarefas ficar muito longa e você quiser marcar o máximo de coisas possível, opte pelo algoritmo de menor tempo de processamento: liste suas tarefas na ordem do que pode ser feito mais rápido. Isso permite que você faça muitas coisas em um período muito curto de tempo