Fórmula de Herão para raiz(2)

Segue um algoritmo recursivo para o cálculo de raiz(2), de Herão de Alexandria (século I):

  • Considere um número positivo qualquer x
  • Calcule: (x + 2/x) / 2
  • Continue sucessivamente

Ex. Se x = 5, a fórmula dá 2,7, depois 1,72, depois 1,44, depois 1,41…, e assim sucessivamente, cada vez mais próximo de raiz(2)

Qual a utilidade de uma inovação?

James Maxwell apresentou sua teoria do eletromagnetismo em 1864, predizendo que campos elétricos e magnéticos poderiam viajar pelo espaço numa onda eletromagnética.

Em 1882, a academia de ciências de Berlim propôs um prêmio, para quem conseguisse bolar um experimento que comprovasse as teorias de Maxwell.

Anos depois, Heinrich Hertz bolou um transmissor e receptor de ondas, provando ao mundo a existência das ondas eletromagnéticas.

Perguntaram qual a utilidade. Ele respondeu: “Não tem utilidade nenhuma. É apenas um experimento científico, uma curiosidade”.

O experimento sem utilidade de Hertz abriu caminho para a transmissão de ondas de rádio, as telecomunicações e todo o mundo moderno, nas décadas seguintes.

Uma inovação recém-nascida não tem utilidade imediata. É preciso tempo e cuidado para que esta mature e comece a gerar resultados, superando a geração atual.

Veja também:

https://ideiasesquecidas.com/2020/01/25/o-dilema-do-inovador/

Ver o post original

Como resolver o Square One – Parte 3

Dando continuidade a post anterior, https://ideiasesquecidas.com/2020/08/06/como-resolver-o-square-one-parte-1/, e https://ideiasesquecidas.com/2020/08/08/como-resolver-o-square-one-parte-2/ segue uma lista de algoritmos.

Um truque simples, para aquecer. É um movimento para trocar meio layer.

Agora com algoritmos que mexem na forma do cubo.
Note que há várias formas que o SquareOne pode assumir. O objetivo dos movimentos abaixo é fazer ele ficar no formato de cubo.

A forma mais simples, e chave para as demais, é o que chamei de Posição Chave.

Outra comum é a “forma de pata”, do vídeo abaixo.

O inverso da forma de pata:

Esta forma é mais complexa.
Chave e Quadrado:

Desfaz chave e quadrado:

Deve-se decorar as formas mais comuns mostradas acima.

A lógica é a seguinte: mexer o cubo até chegar em alguma forma reconhecível acima. Sabendo resolver as posições mostradas, facilita demais a vida.

Algoritmo de paridade

Este é para os casos em que ocorre uma “paridade impossível”, do tipo…

Ver o post original 142 mais palavras

Como resolver o Square One – Parte 2

Dando continuidade a post anterior, segue uma lista de algoritmos para ajudar a resolver o SquareOne.

A ideia é criar movimentos que mexam com o menor número possível de peças, a fim de conseguir criar um padrão compreensível. É a mesma lógica de “movimento invariante” de outros cubos: mexo, volto e vou anotando os efeitos.

Os movimentos básicos, no começo, serão compostos de forma a chegar a movimentos mais complexos no final desta seção.

Até agora, vamos mostrar apenas movimentos que não variem a forma do cubo. No próximo post, vamos mexer na forma.

Mov Base I

Vídeo no Youtube:

Mov Base II

Mov Troca Layers

Mov Translado

Esse movimento fica mais claro se isolar somente as peças que se movem:

Mov Translado -1

É a mesma coisa, mas ao contrário – aliás, todos os movimentos descritos aqui têm a versão inversa, e dominá-las pode ser muito útil.

Mov…

Ver o post original 117 mais palavras

Como resolver o Square One – Parte 1

O cubo Square One (ou Square -1) é o da foto. Ele tem movimentos bem diferentes do Rubik tradicional – ou seja, deu para aproveitar pouco dos movimentos daquele.

Foto deste bagunçado.

Este tutorial tem várias partes: notação, algoritmos básicos, algoritmos de forma, e colocar tudo junto.

Atenção: eu inventei as soluções da minha cabeça, então não há equivalente entre o tutorial postado aqui e outros que podem existir na internet.

A primeira parte é a da notação básica. Ela usa a notação do Rubik: Upper, Down, Right, Left, Front, Back (esse últimos dois não são usados aqui).

Partiremos da base do Square One,

Movimento U (note que é sempre horário).

Movimento U2 (ou seja, o U aplicado duas vezes).

Movimento U’ (rotação anti-horária)

Movimento U2′

Agora, na camada de baixo.

Movimento D:

Movimento D2.

Movimento D’:

Movimento D2′:

Movimento U’R

Uma foto deste último movimento:

Continua….

Veja também:

Simulador…

Ver o post original 6 mais palavras

Todas as combinações – binário

Código em Python, para gerar todas as combinações em binário de um certo número de dígitos.

Para transformar um número em binário, a função binary_repr do numpy é uma alternativa.

Basta percorrer todos os números num range de 0 a 2^Ndigitos.

import numpy as np

ndig = 3

binComb =[np.binary_repr(c,ndig) for c in range(2**ndig)]

print(binComb)

Resultado:

[‘000’, ‘001’, ‘010’, ‘011’, ‘100’, ‘101’, ‘110’, ‘111’]

Por que o Deep Learning funciona?

O artigo do link a seguir é interessante.

As redes neurais do mundo atual evoluíram tremendamente, ao ponto de conseguir reconhecer padrões. Porém, ainda são completamente ineficientes (comparada ao cérebro humano).

Imagino que há ainda muito campo a evoluir. Será necessário repensar os métodos e definições das redes atuais, para dar um novo salto.

https://www.psychologytoday.com/us/blog/the-future-brain/202008/new-ai-study-may-explain-why-deep-learning-works

O Quadrado Mágico “esburacado”

Vi o puzzle a seguir, e parecia interessante. Por falta de um nome melhor, chamá-lo-ei de “quadrado mágico esburacado”.

Se o leitor quiser tentar resolver, aviso que há spoilers à frente.

Como eu já tinha feito uma rotina que resolve quadrados mágicos de qualquer tamanho, achei que poderia aproveitar algum padrão já existente.

Vide https://asgunzi.github.io/QuadradoMagicoD3/index.html

Entretanto, não foi possível partir para uma solução que utilizasse quadrados mágicos comuns. E também não consegui chegar numa fórmula matemática fechada, que chegue a uma solução.

O jeito foi apelar para os computadores. Mesmo assim, não é tarefa fácil.

O jeito “força bruta” pura chega a 20! (fatorial) combinações. Isso dá o número astronômico de 2,4*10^18 combinações. Computador algum no mundo consegue resolver.

O que fiz foi usar a estrutura do problema para diminuir drasticamente o número de combinações. Uma “força bruta” refinada…

Imagine fatiar o problema. Resolver somente a primeira linha.

Se olhar…

Ver o post original 364 mais palavras

Permutações

O Python tem um pacote muito útil para gerar permutações.

import itertools

permutacoes = list(itertools.permutations([0,1,2]))
print(permutacoes)

O resultado é uma lista. Cada tuplas é uma permutação.

[(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]

Note que são 3! permutações.

Em Python, math.factorial(3) = 6.

Ou seja, a cautela aqui é que o número pode crescer exponencialmente.

Por exemplo, 10! = 3.628.800

Veja também:

O inverno e a primavera da Inteligência Artificial

Em 2006, fiz a cadeira de Redes Neurais da UFRJ, como parte do meu mestrado em Processamento Digital de Sinais, motivado pelas tais redes que imitavam o cérebro humano, aprendiam sozinhas e que poderiam nos superar um dia.

Achei decepcionante, na época. As redes pareciam mais uma curiosidade, com pouca aplicação prática, do que algo realmente útil.

Alguns motivos:

– Só conseguíamos criar redes de três, cinco camadas, com poucos neurônios por camada (shallow network)

– Aplicações restritas à interpolação de funções

– O software Estatística tinha algo pronto para redes pequenas. Qualquer aplicação mais complexa, seria necessário pegar toda a matemática e implementar do zero.

Os resultados frios e estéreis eram porque, em 2006, eu estava em pleno “Inverno da Inteligência Artificial”.

Contudo, 10 anos depois, o campo era quente e fértil de inovações: redes de centenas de camadas (daí o termo deep neural network), milhares de neurônios por…

Ver o post original 1.411 mais palavras