Expressões Regulares
Gabarito: letra C. A expressão regular a|b* representa a união da string "a" com zero ou mais repetições de "b". O operador | (alternação) significa "ou", e o operador * (Kleene star) aplica-se apenas ao símbolo b, gerando: ε (cadeia vazia), "b", "bb", "bbb", ... Além disso, inclui-se a própria string "a". Portanto, o conjunto é {ε, a, b, bb, bbb, ...}, exatamente o descrito na alternativa C.
Alternativa A — ❌ Incorreta
Falta o elemento ε (cadeia vazia). O * em b* permite zero ocorrências de b, o que produz a cadeia vazia, ausente em A.
Alternativa B — ❌ Incorreta
Descreve o conjunto {ab, abb, abbb, ...}, que corresponde à expressão ab* (um "a" seguido de zero ou mais "b"). Na expressão original, o "a" não é prefixo; ele é uma alternativa independente.
Alternativa C — ✅ Correta ⟵ GABARITO
Contém exatamente todos os elementos: ε (vazio), "a", e todas as cadeias de zero ou mais "b" (b, bb, bbb, ...).
Alternativa D — ❌ Incorreta
{"ba", "bba", "bbba", ...} representa b+a (um ou mais "b" seguidos de "a"). Não corresponde a a|b*.
Alternativa E — ❌ Incorreta
Descreve ab*a? Na verdade, {aba, abba, abbba, ...} equivale a a b+ a? Não importa: não é o conjunto correto. A expressão original não exige "a" em ambos os lados.
Dica: Lembre-se de que o operador * tem precedência sobre |. Assim, a|b* é interpretado como a | (b*), não como (a|b)*. Se fosse (a|b)*, o conjunto seria todas as cadeias de "a" e "b" em qualquer ordem, inclusive ε. O parênteses faz toda a diferença!
Gabarito: letra C.