graph TD A[Início] --> B{Escolher Pão}; B --> C1[Pão 1]; B --> C2[Pão 2]; B --> C3[Pão 3]; C1 --> D1{Escolher Recheio}; C2 --> D2{Escolher Recheio}; C3 --> D3{Escolher Recheio}; D1 --> E1_1[Recheio 1]; D1 --> E1_2[Recheio 2]; D1 --> E1_3[Recheio 3]; D1 --> E1_4[Recheio 4]; E1_1 --> F1_1_1[Molho 1]; E1_1 --> F1_1_2[Molho 2]; F1_1_1 --> G1_1_1[Fim]; F1_1_2 --> G1_1_2[Fim]; subgraph Pao1 [Pão 1] D1 end subgraph Pao2 [Pão 2] D2 end subgraph Pao3 [Pão 3] D3 end style A fill:#f9f,stroke:#333,stroke-width:2px style G1_1_1 fill:#afa,stroke:#333,stroke-width:2px style G1_1_2 fill:#afa,stroke:#333,stroke-width:2px
Fundamentos da Análise Combinatória: Permutação e Arranjo
Compreendendo os Princípios de Contagem para Cenários de Probabilidade
Introdução à Análise Combinatória
A análise combinatória é um ramo da matemática que estuda os métodos de contagem. Sua importância na estatística e na ciência de dados reside na capacidade de quantificar o número de maneiras distintas de organizar ou selecionar elementos de um conjunto, o que é fundamental para o cálculo de probabilidades. Antes de determinar a probabilidade de um evento, muitas vezes precisamos saber quantos resultados possíveis existem e quantos deles correspondem ao evento de interesse.
Este material visa apresentar os conceitos fundamentais de permutação e arranjo, bem como os princípios básicos de contagem, que são a base para a compreensão de cenários probabilísticos mais complexos.
Objetivo de Aprendizagem
Ao final desta aula, você será capaz de:
- Compreender e aplicar os princípios fundamentais de contagem (aditivo e multiplicativo).
- Distinguir e aplicar os conceitos de permutação (simples e com repetição) em diferentes cenários.
- Distinguir e aplicar os conceitos de arranjo (simples) em diferentes cenários.
- Resolver problemas de contagem que envolvem permutação e arranjo.
- Conectar os conceitos de contagem ao cálculo de probabilidades.
Princípios Fundamentais de Contagem
Os princípios de contagem são as ferramentas básicas para resolver problemas combinatórios.
Princípio Aditivo
O Princípio Aditivo afirma que se uma tarefa pode ser realizada de \(m\) maneiras e uma segunda tarefa pode ser realizada de \(n\) maneiras, e se essas duas tarefas não podem ser realizadas simultaneamente (são mutuamente exclusivas), então há \(m + n\) maneiras de realizar uma ou outra tarefa.
Um estudante pode escolher um projeto de pesquisa em três áreas distintas: biologia (5 opções de temas), química (4 opções de temas) ou física (3 opções de temas). Quantas opções de projetos o estudante tem ao todo?
- Como o estudante escolherá apenas uma área, as escolhas são mutuamente exclusivas.
- Número total de opções = Opções de Biologia + Opções de Química + Opções de Física
- Número total de opções = \(5 + 4 + 3 = 12\) opções.
Princípio Multiplicativo (ou Princípio Fundamental da Contagem)
O Princípio Multiplicativo afirma que se uma decisão pode ser tomada de \(m\) maneiras e, para cada uma dessas maneiras, uma segunda decisão pode ser tomada de \(n\) maneiras, então o número total de maneiras de tomar as duas decisões é \(m \times n\). Este princípio pode ser estendido para qualquer número de decisões sequenciais.
Uma lanchonete oferece 3 tipos de pão, 4 tipos de recheio e 2 tipos de molho. Quantos tipos diferentes de sanduíches podem ser montados escolhendo um de cada item?
Para montar um sanduíche, o estudante toma 3 decisões sequenciais:
- Escolher o pão: 3 maneiras.
- Escolher o recheio: 4 maneiras.
- Escolher o molho: 2 maneiras.
Número total de sanduíches = \(3 \times 4 \times 2 = 24\) tipos diferentes de sanduíches.
Exemplo de Árvore de Decisão da Montagem de Sanduíches
Para ilustrar o Princípio Multiplicativo:
(Note: O diagrama completo para 24 combinações seria muito grande. Este é um exemplo simplificado que mostra a estrutura de como as escolhas se ramificam. Cada caminho do “Início” ao “Fim” representa uma combinação única.)
Permutação
Permutação refere-se ao número de maneiras de organizar um conjunto de itens em uma ordem específica. A ordem dos elementos é importante.
Permutação Simples
A permutação simples é usada quando queremos saber o número de maneiras de organizar \(n\) objetos distintos. A fórmula para a permutação de \(n\) objetos é \(P_n = n!\) (n fatorial), onde \(n! = n \times (n-1) \times \dots \times 2 \times 1\). Por definição, \(0! = 1\).
Fórmula: \(P_n = n!\)
De quantas maneiras distintas 3 livros diferentes podem ser organizados em uma prateleira?
- Temos 3 livros distintos. A ordem importa.
- \(P_3 = 3! = 3 \times 2 \times 1 = 6\) maneiras.
As 6 maneiras seriam:
- (Livro A, Livro B, Livro C)
- (Livro A, Livro C, Livro B)
- (Livro B, Livro A, Livro C)
- (Livro B, Livro C, Livro A)
- (Livro C, Livro A, Livro B)
- (Livro C, Livro B, Livro A)
Exemplo de Código em Python (Permutação Simples)
Código Python
import math
from itertools import permutations
def permutacao_simples(n):
"""Calcula a permutação simples de n elementos."""
return math.factorial(n)
# Exemplo: 3 livros na prateleira
n_livros = 3
resultado_permutacao = permutacao_simples(n_livros)
print(f"Número de maneiras de organizar {n_livros} livros: {resultado_permutacao}")
# Listando as permutações (para visualização)
itens = ["A", "B", "C"]
todas_permutacoes = list(permutations(itens))
print(f"Todas as permutações de {itens}: {todas_permutacoes}")
print(f"Total de permutações listadas: {len(todas_permutacoes)}")
Exemplo de Código em R (Permutação Simples)
Código R
# Instalar e carregar o pacote 'gtools' se ainda não tiver
# install.packages("gtools")
library(gtools)
permutacao_simples <- function(n) {
return(factorial(n))
}
# Exemplo: 3 livros na prateleira
n_livros <- 3
resultado_permutacao <- permutacao_simples(n_livros)
cat(sprintf(
"Número de maneiras de organizar %d livros: %d\n",
n_livros,
resultado_permutacao
))
Número de maneiras de organizar 3 livros: 6
Código R
[,1] [,2] [,3]
[1,] "A" "B" "C"
[2,] "A" "C" "B"
[3,] "B" "A" "C"
[4,] "B" "C" "A"
[5,] "C" "A" "B"
[6,] "C" "B" "A"
Total de permutações listadas: 6
Permutação com Repetição (ou Permutação de Itens Nem Todos Distintos)
Quando temos \(n\) objetos, onde \(n_1\) são de um tipo, \(n_2\) são de outro tipo, …, \(n_k\) são de um k-ésimo tipo, e \(n_1 + n_2 + \dots + n_k = n\), o número de permutações distintas é dado pela fórmula:
Fórmula: \(P_n^{n_1, n_2, \dots, n_k} = \frac{n!}{n_1! n_2! \dots n_k!}\)
Exemplo: Quantos anagramas (arranjos de letras) distintos podem ser formados com as letras da palavra “ARARA”?
A palavra “ARARA” tem \(n=5\) letras. Temos:
- ‘A’: 3 repetições (\(n_1 = 3\))
- ‘R’: 2 repetições (\(n_2 = 2\))
Número de anagramas = \(\frac{5!}{3!2!} = \frac{5 \times 4 \times 3 \times 2 \times 1}{(3 \times 2 \times 1)(2 \times 1)} = \frac{120}{6 \times 2} = \frac{120}{12} = 10\) anagramas.
Exemplo de Código em Python (Permutação com Repetição)
Código Python
import math
from collections import Counter
def permutacao_com_repeticao(palavra):
"""Calcula o número de permutações distintas de uma string com repetições."""
n = len(palavra)
contagem_letras = Counter(palavra)
denominador = 1
for count in contagem_letras.values():
denominador *= math.factorial(count)
return math.factorial(n) / denominador
# Exemplo: palavra "ARARA"
palavra_exemplo = "ARARA"
resultado_repeticao = permutacao_com_repeticao(palavra_exemplo)
print(
f"Número de anagramas distintos da palavra '{palavra_exemplo}': {int(resultado_repeticao)}"
)
Exemplo de Código em R (Permutação com Repetição)
Código R
permutacao_com_repeticao <- function(palavra) {
n <- nchar(palavra)
letras <- strsplit(palavra, "")[]
# Contar as ocorrências de cada letra
contagem_letras <- table(letras)
denominador <- 1
for (count in contagem_letras) {
denominador <- denominador * factorial(count)
}
return(factorial(n) / denominador)
}
# Exemplo: palavra "ARARA"
palavra_exemplo <- "ARARA"
resultado_repeticao <- permutacao_com_repeticao(palavra_exemplo)
cat(sprintf(
"Número de anagramas distintos da palavra '%s': %d\n",
palavra_exemplo,
as.integer(resultado_repeticao)
))
Número de anagramas distintos da palavra 'ARARA': 10
Extra: atualizar os códigos acima para exibir os anagramas.
Arranjo
Arranjo refere-se ao número de maneiras de selecionar e organizar um subconjunto de itens de um conjunto maior, onde a ordem dos elementos selecionados é importante.
Arranjo Simples
O arranjo simples é usado quando selecionamos \(k\) objetos de um total de \(n\) objetos distintos, e a ordem de seleção é importante.
Fórmula: \(A_n^k = \frac{n!}{(n-k)!}\)
Exemplo: Em uma corrida com 8 atletas, de quantas maneiras diferentes os três primeiros lugares (ouro, prata, bronze) podem ser preenchidos?
Temos \(n=8\) atletas e queremos selecionar \(k=3\) para os três primeiros lugares, onde a ordem importa (ser ouro é diferente de ser prata). \(A_8^3 = \frac{8!}{(8-3)!} = \frac{8!}{5!} = \frac{8 \times 7 \times 6 \times 5!}{5!} = 8 \times 7 \times 6 = 336\) maneiras.
Exemplo de Código em Python (Arranjo Simples)
Código Python
import math
from itertools import permutations # Permutations com 'r' argumento para arranjos
def arranjo_simples(n, k):
"""Calcula o arranjo simples de n elementos tomados k a k."""
if k > n:
return 0 # Não é possível escolher mais itens do que o total disponível
return math.factorial(n) // math.factorial(n - k)
# Exemplo: 8 atletas, 3 primeiros lugares
n_atletas = 8
k_lugares = 3
resultado_arranjo = arranjo_simples(n_atletas, k_lugares)
print(
f"Número de maneiras de preencher os {k_lugares} primeiros lugares com {n_atletas} atletas: {resultado_arranjo}"
)
# Listando os arranjos (para visualização, com itertools.permutations)
atletas = ["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8"]
primeiros_lugares = list(permutations(atletas, k_lugares))
# Note: A lista completa seria muito longa para imprimir, então mostramos um subconjunto.
print(
f"Exemplo de 5 arranjos dos {k_lugares} primeiros lugares: {primeiros_lugares[:5]}..."
)
print(f"Total de arranjos listados (mesmo que o calculado): {len(primeiros_lugares)}")
Exemplo de Código em R (Arranjo Simples)
Código R
# install.packages("gtools")
library(gtools)
arranjo_simples <- function(n, k) {
if (k > n) {
return(0)
}
return(factorial(n) / factorial(n - k))
}
# Exemplo: 8 atletas, 3 primeiros lugares
n_atletas <- 8
k_lugares <- 3
resultado_arranjo <- arranjo_simples(n_atletas, k_lugares)
cat(sprintf(
"Número de maneiras de preencher os %d primeiros lugares com %d atletas: %d\n",
k_lugares,
n_atletas,
resultado_arranjo
))
Número de maneiras de preencher os 3 primeiros lugares com 8 atletas: 336
Código R
# Listando os arranjos (para visualização)
atletas <- c('A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8')
primeiros_lugares <- permutations(n = n_atletas, r = k_lugares, v = atletas)
# Note: A lista completa seria muito longa para imprimir, então mostramos um subconjunto.
print(head(primeiros_lugares, 5))
[,1] [,2] [,3]
[1,] "A1" "A2" "A3"
[2,] "A1" "A2" "A4"
[3,] "A1" "A2" "A5"
[4,] "A1" "A2" "A6"
[5,] "A1" "A2" "A7"
Código R
Total de arranjos listados (mesmo que o calculado): 336
Distinção entre Permutação e Arranjo
A principal diferença entre permutação e arranjo reside na natureza da seleção:
- Permutação: Lida com a organização de todos os elementos de um conjunto (ou subconjunto quando a permutação é de \(n\) objetos distintos tomados \(k\) a \(k\), que é equivalente ao arranjo), onde a ordem é crucial. Se você está reorganizando um conjunto completo, é uma permutação. Se você está escolhendo um subconjunto e a ordem importa, é um arranjo.
- Arranjo: Lida com a seleção e organização de um subconjunto de elementos de um conjunto maior, onde a ordem também é crucial.
Um bom “macete” para diferenciar é:
-
A ordem importa?
-
SIM: É um Arranjo ou Permutação.
-
Você usa todos os itens disponíveis?
- SIM: Permutação (simples ou com repetição).
- NÃO (escolhe um subconjunto): Arranjo (simples).
-
NÃO: É uma Combinação (tópico de aula futura).
-
Diagrama de Fluxo de Decisão
graph TD A[Problema de Contagem] --> B{A ordem dos elementos importa?}; B -- Sim --> C{Você está usando TODOS os elementos do conjunto?}; B -- Não --> D[Combinação]; C -- Sim --> E[Permutação]; C -- Não --> F[Arranjo]; E --> E1{Há elementos repetidos?}; E1 -- Sim --> E2[Permutação com Repetição]; E1 -- Não --> E3[Permutação Simples]; F --> F1[Arranjo Simples]; style A fill:#f9f,stroke:#333,stroke-width:2px; style D fill:#afa,stroke:#333,stroke-width:2px; style E2 fill:#afa,stroke:#333,stroke-width:2px; style E3 fill:#afa,stroke:#333,stroke-width:2px; style F1 fill:#afa,stroke:#333,stroke-width:2px;
Aplicações em Probabilidade
Os princípios de contagem são a espinha dorsal para o cálculo de probabilidades, especialmente em espaços amostrais finitos e equiprováveis (onde cada resultado tem a mesma chance de ocorrer). A probabilidade de um evento \(E\) é frequentemente calculada como:
\(P(E) = \frac{\text{\# resultados favoráveis ao evento E}}{\text{\# resultados possíveis no espaço amostral}}\)
Onde o “# resultados favoráveis” e o “# resultados possíveis” são determinados usando os princípios de contagem (permutação, arranjo, e futuramente, combinação).
Três amigos (A, B, C) sentam-se aleatoriamente em 3 cadeiras. Qual a probabilidade de A sentar-se na primeira cadeira, B na segunda e C na terceira?
Número total de resultados possíveis (Espaço Amostral): São 3 amigos em 3 cadeiras, e a ordem importa. Isso é uma permutação simples de 3 elementos: \(P_3 = 3! = 6\) maneiras.
Número de resultados favoráveis ao evento (Evento E): O evento é ” A na \(1^a\), B na \(2^a\), C na \(3^a\) “. Existe apenas \(1\) maneira de isso acontecer: (A, B, C).
Probabilidade: \(P(\text{A na } 1^a, \text{ B na } 2^a, \text{ C na } 3^a) = \frac{1}{6}\)
Este exemplo simples demonstra como os conceitos de contagem se aplicam diretamente ao cálculo de probabilidades.
Verificação de Aprendizagem
Resolva os problemas abaixo, identificando se é um caso de Permutação (simples ou com repetição) ou Arranjo (simples) e aplicando a fórmula correta.
- Senha de Banco: Um banco exige que as senhas dos caixas eletrônicos sejam formadas por 4 dígitos distintos. Quantas senhas diferentes podem ser criadas? (Dígitos de 0 a 9).
Tipo: Arranjo Simples. Temos \(n=10\) dígitos (0 a 9) e queremos selecionar \(k=4\) para a senha, onde a ordem importa e os dígitos são distintos.
Cálculo: \(A_{10}^4 = \frac{10!}{(10-4)!} = \frac{10!}{6!} = 10 \times 9 \times 8 \times 7 = 5040\) senhas.
- Pódio Olímpico: Em uma final olímpica de natação com 10 nadadores, de quantas maneiras diferentes os atletas podem ganhar as medalhas de ouro, prata e bronze?
- Tipo: Arranjo Simples. Temos \(n=10\) nadadores e queremos selecionar \(k=3\) para as medalhas, onde a ordem importa (ouro é diferente de prata).
- Cálculo: \(A_{10}^3 = \frac{10!}{(10-3)!} = \frac{10!}{7!} = 10 \times 9 \times 8 = 720\) maneiras.
- Formação de Palavras: Quantos anagramas distintos podem ser formados com as letras da palavra “MATEMATICA”?
-
Tipo: Permutação com Repetição. A palavra “MATEMATICA” tem \(n=10\) letras.
-
Detalhes:
- M: 2 vezes (\(n_M = 2\))
- A: 3 vezes (\(n_A = 3\))
- T: 2 vezes (\(n_T = 2\))
- E: 1 vez
- I: 1 vez
- C: 1 vez
-
Cálculo: \(P_{10}^{2,3,2,1,1,1} = \frac{10!}{2!3!2!1!1!1!} = \frac{3.628.800}{(2)(6)(2)} = \frac{3.628.800}{24} = 151.200\) anagramas.
- Ordem de Atendimento: Uma fila de espera em um consultório médico tem 5 pacientes. De quantas maneiras diferentes esses pacientes podem ser atendidos?
- Tipo: Permutação Simples. Temos \(n=5\) pacientes e queremos organizar todos eles em uma fila.
- Cálculo: \(P_5 = 5! = 5 \times 4 \times 3 \times 2 \times 1 = 120\) maneiras.
-
Placas de Carro - Simplificado: Considerando que as placas de carro antigas no Brasil eram formadas por 2 letras seguidas por 4 dígitos (ex: AB-1234), quantas placas distintas poderiam ser formadas se:
- As letras e os dígitos podem se repetir.
- As letras devem ser distintas, mas os dígitos podem se repetir. (Considere 26 letras no alfabeto e 10 dígitos).
Letras: 26 opções (A-Z)
-
Dígitos: 10 opções (0-9)
-
As letras e os dígitos podem se repetir.
- Tipo: Princípio Multiplicativo.
- Cálculo: (Letra 1) \(\times\) (Letra 2) \(\times\) (Dígito 1) \(\times\) (Dígito 2) \(\times\) (Dígito 3) \(\times\) (Dígito 4) \(26 \times 26 \times 10 \times 10 \times 10 \times 10 = 26^2 \times 10^4 = 676 \times 10.000 = 6.760.000\) placas.
-
As letras devem ser distintas, mas os dígitos podem se repetir.
- Tipo: Para as letras, é Arranjo Simples (26 letras tomadas 2 a 2). Para os dígitos, é Princípio Multiplicativo.
- Cálculo para Letras: \(A_{26}^2 = \frac{26!}{(26-2)!} = \frac{26!}{24!} = 26 \times 25 = 650\)
- Cálculo para Dígitos: \(10 \times 10 \times 10 \times 10 = 10^4 = 10.000\)
- Total de Placas: \(650 \times 10.000 = 6.500.000\) placas.
-