B-Tree no Factorio
(razberry.substack.com)Aprendendo sobre B-Trees
-
Árvores binárias de busca (Binary Search Trees, BSTs): cada nó tem uma chave; os nós à esquerda têm valores de chave menores, e os nós à direita têm valores de chave maiores.
-
BSTs só funcionam quando as chaves podem ser ordenadas, e se os valores forem adicionados apenas de um lado, o balanceamento se perde e a eficiência cai.
-
BSTs desbalanceadas podem ser corrigidas por meio de pivotamento, mas isso não é adequado para armazenamento em disco (exige rebalanceamento frequente, e nós adjacentes podem ficar armazenados em páginas diferentes).
-
B-Trees: são compostas por nós com mais chaves e ponteiros do que uma árvore binária.
-
Cada nó tem várias chaves e vários ponteiros de acordo com essas chaves (por exemplo: um nó com as chaves 17 e 24 teria ponteiros para nós com chaves menores que 17, entre 17 e 24, e maiores que 24).
Implementação de B-Tree no Factorio
- Implementação simples de uma árvore binária de busca no Factorio (jogo de construção de fábricas): cada nó é composto por um baú de madeira (chave) e dois caminhos (ponteiros).
- Como não há uma forma de comparar o valor dos materiais, é atribuída uma ordem arbitrária, e a comparação é feita usando braços filtradores.
- A implementação de B-Tree é mais complexa: cada nó tem três chaves e ponteiros para quatro nós filhos.
- A B-Tree pode armazenar mais informações e, em vez de ordenar itens manualmente, a árvore é deixada vazia por enquanto até que se encontre uma forma melhor de representá-la depois.
Opinião do GN⁺
- O ponto mais importante deste texto é entender o conceito de B-Tree e a abordagem criativa de implementá-la no jogo Factorio.
- O aspecto mais interessante para os leitores é que isso oferece uma oportunidade de compreender estruturas de dados complexas da ciência da computação de forma visual e intuitiva por meio de um jogo.
- Essa abordagem torna o aprendizado mais divertido e envolvente, além de sugerir uma nova forma de explorar conceitos fundamentais de engenharia de software por meio de um meio não tradicional como os jogos.
1 comentários
Comentários do Hacker News