Por que todo mundo odeia matrizes?

Photo by rawpixel.com from Pexels

Acho que todo mundo, mesmo quem não curte muito matemática, tem a lembrança de ter aprendido sobre matrizes em algum momento na escola. Elas se pareciam com algo assim:

Artigo sobre matrizes na Wikipedia

Confesso que durante boa parte da minha vida escolar nunca ficou muito claro o que eram matrizes, muito menos PARA QUÊ elas serviam, e conversando com amigos e colegas percebo que meu caso passa longe de ser o único. MUITA gente odeia matrizes. Porém, foi só mais tarde que eu consegui entender melhor essas estruturas, e isso aconteceu quando comecei a programar com VisuAlg e aprendi a declarar variáveis da seguinte maneira:

nomes: vetor [1..5] de caractere

Vetores! Do programa mais simples ao mais complexo, se você precisa armazenar ou organizar dados em forma de lista, o vetor é a estrutura perfeita. Aliás, lista é o nome que damos para um vetor de tamanho dinâmico (ou seja, variável), embora essa definição não seja de fato “escrita na pedra”. Em JavaScript, por exemplo, o objeto Array (palavra em inglês para “vetor”) sempre tem tamanho dinâmico, embora no Java exista uma diferença estrita entre Arrays e Lists, sendo que no caso dos Arrays o tamanho precisa ser definido na declaração (mais ou menos do mesmo jeito que podemos ver no exemplo acima do VisuAlg).

Conheço várias pessoas viciadas em listas, e eu sou uma delas. Listas de compras, de tarefas, de contatos no celular, de séries e filmes pra assistir. Mas e aí, como saímos do conceito de vetor/lista e evoluímos para o conceito de matriz? Bom, do ponto de vista prático a matriz é um vetor com mais de 1 dimensão. Em vez de crescer só para os lados (linhas), ela também cresce para cima/baixo (colunas). Ou seja, aí temos 2 dimensões. Esse esquema de organização é extremamente útil, principalmente para organizar conjuntos de dados onde temos várias entradas (linhas) e valores relacionados a essas entradas (colunas). Com certeza você já viu algo assim, e sem saber, estava olhado para uma matriz:

Photo by Pixabay from Pexels

Nada demais até aí, certo? Um cardápio de restaurante é uma matriz bidimensional com 2 colunas (prato e preço) e várias linhas (todos os “pares” de pratos e preços). Talvez o ódio para com as matrizes venha do fato de que as aulas de matemática não nos mostrem nenhuma aplicação prática delas. Por outro lado, talvez muita gente não goste delas pelo potencial que ela tem de dar um nó na cabeça de qualquer um. Isso pode acontecer quando começamos a olhar para as matrizes não somente como linhas e colunas, mas também como estruturas que podem crescer em todas as direções… e dimensões. Soa um pouco abstrato? Que tal dar uma olhada em uma matriz tridimensional?

Uma matriz tridimensional nada mais é do que um conjunto de matrizes bidimensionais. Juntas, as 6 faces do cubo mágico (matrizes 2D) formam o cubo propriamente dito (1 matriz 3D). Poderíamos expandir essa lógica infinitamente: uma matriz 4D é um conjunto de matrizes 3D, uma matriz 5D é um conjunto de matrizes 4D, e assim por diante. Ainda soa abstrato? Infelizmente, a coisa é abstrata mesmo. No nosso cotidiano, dificilmente lidamos com mais de 3 dimensões, mas as aplicações são variadas para esse tipo de conceito, tanto na matemática quanto na computação.

Por exemplo, imagine que a gente precise representar um grande armazém de mercadorias. Esse armazém é dividido em vários setores (digamos que sejam 4 setores). Isso poderia ser facilmente representado com uma matriz 2D, não é? Mas, e se quiséssemos representar também os contêineres que estão armazenados em cada setor, e as caixas dentro de cada contêiner? Tá aí uma boa aplicação para uma matriz 4D:

Um exemplo de matriz 4D, criado pelo autor. Os números representam as caixas dentro dos contêineres.

Talvez esse não seja o exemplo mais usual do mundo, mas deixei ele aqui só para mostrar que essa ideia de ter “coisas dentro de outras coisas” existe no nosso dia-a-dia, e podemos organizar essa complexidade utilizando estruturas como as matrizes. Pra quem quiser ir ainda mais a fundo no assunto e enlouquecer com todas as possibilidades das matrizes multidimensionais, deixo aqui a clássica cena do filme Interestelar, no qual Cooper (personagem de Matthew McConaughey) viaja por um espaço/tempo 5D. A explicação pra isso, contudo, não cabe aqui, mas se você se interessar, vale a pena assistir o filme e também ler mais sobre o assunto.

Cena do filme Interestelar, 2014 (Título original: Interstellar)

Em resumo: matrizes são como vetores, só que multidimensionais. Ou seria o vetor uma matriz de 1 dimensão? Enfim, vocês entenderam…

Fontes: