Capítulo 6 — Estruturas discretas
Mapa da aula
Aula 06 publicada. Mapa, exemplo, EX016.
flowchart TD
N0["6.1 Conjuntos e política"]
N1["6.2 Grafos de reporte"]
N2["Laboratório — Quais funcionários não alcançam a TI"]
N3["6.3 Lógica e lacunas"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX016"]
Desenho lógico
flowchart LR
N0["6.1 Conjuntos e política"]
N1["6.2 Grafos de reporte"]
N2["Laboratório — Quais funcionários não alcançam a TI"]
N3["6.3 Lógica e lacunas"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX016"]
[6.1 Conjuntos e política]
|
v
[6.2 Grafos de reporte]
|
v
[Laboratório — Quais funcionários não alcançam a TI]
|
v
[6.3 Lógica e lacunas]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX016]
Objetivos de aprendizagem
Você vai (1) usar conjuntos e lógica para descrever regras de política; (2) modelar relações de reporte como grafos; (3) encontrar lacunas nas regras com lógica simples.
6.1 Conjuntos e política
Um conjunto é uma coleção de itens distintos. Nadia descreve os funcionários da Ashcombe como conjuntos: atendentes de balcão, gestores, pessoal de TI e voluntários. Uma regra de política pode dizer que apenas gestores e pessoal de TI podem exportar listas de usuários. Em termos de conjuntos, os exportadores permitidos são a união de gestores e pessoal de TI. Ela confere a lista de acesso real e descobre que dois voluntários pertencem ao conjunto de exportadores. Expressar regras como conjuntos facilita comparar o que a política pretende com o que o sistema de fato permite.
6.2 Grafos de reporte
Um grafo tem nós ligados por arestas. Nadia desenha um grafo em que os funcionários são nós e uma aresta mostra a quem cada pessoa contaria sobre um e-mail suspeito. A maioria dos atendentes contaria ao gestor da unidade, que poderia ou não contar à TI. Algumas unidades não têm nenhum caminho até a TI. O laboratório encontra quais nós não alcançam o nó da TI. Um grafo torna visíveis as rotas por onde os alertas viajam e mostra onde a ausência de um único gestor poderia impedir que um reporte importante chegasse a quem pode agir.
Laboratório — Quais funcionários não alcançam a TI
# Reporting graph: who can reach IT? (synthetic)
edges = {"IT": [], "Central-mgr": ["IT"], "Riverside-mgr": ["IT"], "Hill-mgr": ["Central-mgr"], "Quay-mgr": [], "Elm-mgr": []}
staff = {"Central": 20, "Riverside": 18, "Hill": 12, "Quay": 5, "Elm": 6}
for b in staff: edges[f"{b}-staff"] = [f"{b}-mgr"]
def reach(n, seen=None):
seen = seen or set()
if n == "IT": return True
seen.add(n)
return any(reach(m, seen) for m in edges[n] if m not in seen)
blocked = [b for b in staff if not reach(f"{b}-staff")]
print("branches without a route to IT:", blocked, "staff:", sum(staff[b] for b in blocked))
Execute com python3 lab_graph.py. Saída verificada:
branches without a route to IT: ['Quay', 'Elm'] staff: 11
6.3 Lógica e lacunas
Nadia escreve em lógica a regra dos computadores dos visitantes: uma sessão deve terminar se o visitante sair ou se passarem trinta minutos. Ela testa casos e encontra uma lacuna: se um visitante sai sem encerrar a sessão e outro se senta em menos de trinta minutos, a sessão continua com o e-mail do primeiro visitante aberto. Ela propõe acrescentar uma regra para que as sessões terminem quando a tela ficar ociosa por três minutos. A lógica simples expõe casos que a linguagem comum esconde, e testar regras contra casos é um hábito que ela usará ao longo do curso.
Exemplo resolvido
Nadia usa conjuntos para comparar a política com as listas de acesso, um grafo para encontrar funcionários sem rota até a TI e lógica para encontrar uma lacuna nas sessões dos visitantes.
Caso sintético. Os dados são sintéticos.
Erros e limites
As rotas reais de reporte são informais. Tempos de ociosidade podem incomodar os visitantes.
Exercícios
- EX016 — União de conjuntos. Que união de conjuntos descreve os exportadores permitidos? Rubrica: 3 = gestores e pessoal de TI;; 2 = união;; 1 = voluntários;; 0 = nenhuma.
- EX017 — Funcionários inalcançáveis. Quantos funcionários não alcançavam a TI no laboratório? Rubrica: 3 = 11, em Quay e Elm;; 2 = 11;; 1 = vago;; 0 = nenhuma.
- EX018 — Lacuna da sessão. Que lacuna o teste lógico revelou? Rubrica: 3 = um novo visitante herda uma sessão aberta;; 2 = herdar;; 1 = vago;; 0 = nenhuma.
Síntese
Conjuntos, grafos e lógica expõem as diferenças entre as regras e rotas pretendidas e as reais.
Continue estudando — aula 06 (capítulo 06 de 40)
← Capítulo 05 · Índice das aulas · Capítulo 07 →
Continue para a próxima aula já escrita.