summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2022-05-27 23:27:27 +0200
committerDavid A. Madore <david+git@madore.org>2022-05-27 23:27:27 +0200
commitdadb4ff38f53dd4b3b5e4b13e16f713d32018a89 (patch)
treebb587fd096360801611d5546ec02ffdd4a41cc6f
parentb56f7e20a51fb6cec8238f943c19dc6837923d0e (diff)
downloadinf105-dadb4ff38f53dd4b3b5e4b13e16f713d32018a89.tar.gz
inf105-dadb4ff38f53dd4b3b5e4b13e16f713d32018a89.tar.bz2
inf105-dadb4ff38f53dd4b3b5e4b13e16f713d32018a89.zip
Write another short quiz.
-rwxr-xr-xmisc/quiz-extract-automata.pl53
-rw-r--r--quiz-20220602.tex432
2 files changed, 485 insertions, 0 deletions
diff --git a/misc/quiz-extract-automata.pl b/misc/quiz-extract-automata.pl
new file mode 100755
index 0000000..8327ce3
--- /dev/null
+++ b/misc/quiz-extract-automata.pl
@@ -0,0 +1,53 @@
+#! /usr/local/bin/perl -w
+
+use strict;
+use warnings;
+
+my $inputfile = $ARGV[0];
+die "please pass input file as argument" unless defined($inputfile);
+my $outputdir = "/tmp/automata";
+
+my $f;
+
+open $f, "<", $inputfile or die "can't open $inputfile: $!";
+my %automata;
+my $thisname;
+while (<$f>) {
+ $thisname = undef if defined($thisname) && /^\\end\{center\}/;
+ $automata{$thisname} .= $_ if defined($thisname);
+ $thisname = $1 if /^\\begin\{center\}\s*\%+\s*NAME:\s*(\S+)/;
+}
+close $f;
+
+my $prologue = <<'__EOF__';
+\documentclass[crop,tikz]{standalone}
+%
+%
+%
+\usepackage{tikz}
+\usetikzlibrary{arrows,automata,positioning}
+%
+\tikzstyle{automaton}=[>=stealth',initial text={},thick,every loop/.style={min distance=7mm,looseness=5}]
+\tikzstyle{state}=[]
+\tikzstyle{final}=[accepting by arrow]
+%
+%
+%
+__EOF__
+
+mkdir $outputdir;
+
+foreach my $name (keys(%automata)) {
+ chdir $outputdir;
+ print "Processing $name\n";
+ open $f, ">", "${outputdir}/${name}.tex";
+ print $f $prologue;
+ print $f "\\begin{document}\n\n";
+ print $f $automata{$name};
+ print $f "\n\\end{document}\n";
+ close $f;
+ system "pdflatex", "${name}.tex";
+ system "pdf2svg", "${name}.pdf", "${name}.raw.svg";
+ system "scour", "-i", "${name}.raw.svg", "-o", "${name}.svg";
+ system "rsvg-convert", "${name}.svg", "-d", "300", "-p", "300", "-b", "white", "-o", "${name}.png";
+}
diff --git a/quiz-20220602.tex b/quiz-20220602.tex
new file mode 100644
index 0000000..7e8ab0a
--- /dev/null
+++ b/quiz-20220602.tex
@@ -0,0 +1,432 @@
+%% This is a LaTeX document. Hey, Emacs, -*- latex -*- , get it?
+\documentclass[12pt,a4paper]{article}
+\usepackage[francais]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+%\usepackage{ucs}
+\usepackage{times}
+% A tribute to the worthy AMS:
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage{amssymb}
+\usepackage{amsthm}
+%
+\usepackage{mathrsfs}
+%
+\usepackage{graphics}
+\usepackage[usenames,dvipsnames]{xcolor}
+\usepackage{tikz}
+\usetikzlibrary{arrows,automata,positioning}
+%
+\newcounter{quescnt}
+\newenvironment{question}%
+{\stepcounter{quescnt}\bigskip\noindent\textbf{Question~\arabic{quescnt}.}\par\nobreak}
+{\relax}
+\newcounter{answcnt}[quescnt]
+\newcommand\answer{%
+\stepcounter{answcnt}\smallskip\textbf{(\Alph{answcnt})}~}
+\newcommand\rightanswer{%
+\stepcounter{answcnt}\smallskip\leavevmode\llap{$\rightarrow$}\textbf{(\Alph{answcnt})}~}
+%
+\DeclareUnicodeCharacter{00A0}{~}
+\DeclareUnicodeCharacter{03B5}{$\varepsilon$}
+%
+\DeclareMathSymbol{\tiret}{\mathord}{operators}{"7C}
+\DeclareMathSymbol{\traitdunion}{\mathord}{operators}{"2D}
+%
+\tikzstyle{automaton}=[>=stealth',initial text={},thick,every loop/.style={min distance=7mm,looseness=5}]
+\tikzstyle{state}=[]
+\tikzstyle{final}=[accepting by arrow]
+%
+%
+%
+\begin{document}
+
+\textbf{Questions pour INF105 pour le QCM du 2022-06-02.}
+
+Chaque question comporte \emph{une et une seule réponse correcte}.
+Elle a été indiquée par une flèche ci-dessous :
+
+
+%
+%
+%
+
+\begin{question}
+
+Parmi les différents langages ci-dessous sur l'alphabet $\Sigma :=
+\{a,b\}$, qui sont tous des sous-ensembles du langage rationnel $L_0
+:= L(a{*}b{*}) = \{a^i b^j : i,j \in \mathbb{N}\}$, un seul est
+rationnel : lequel ?
+
+\answer
+Le langage $\{a^i b^j : i=j\}$ formé des mots de $L_0$ ayant le même
+nombre de $a$ que de $b$.
+
+\answer
+Le langage $\{a^i b^j : i\geq j\}$ formé des mots de $L_0$ ayant au
+moins autant de $a$ que de $b$.
+
+\answer
+Le langage $\{a^i b^j : i\neq j\}$ formé des mots de $L_0$ ayant un
+nombre différent de $a$ et de $b$.
+
+\rightanswer
+Le langage $\{a^i b^j : i\equiv j \pmod{12}\}$ formé des mots de $L_0$
+tels que le nombre de $a$ et de $b$ soient congrus modulo $12$
+(c'est-à-dire que la différence entre ces deux nombres soit multiple
+de $12$).
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+Parmi les différents langages ci-dessous sur l'alphabet $\Sigma :=
+\{a,b\}$, un seul \emph{n'est pas} rationnel : lequel ?
+
+\answer
+Le langage des mots $w$ comportant exactement $42$ lettres $a$ (au
+total, c'est-à-dire $|w|_a = 42$).
+
+\rightanswer
+Le langage des mots $w$ comportant exactement autant de lettres $a$
+que de lettres $b$ (au total, c'est-à-dire $|w|_a = |w|_b$).
+
+\answer
+Le langage des mots qui \emph{n'ont pas} le mot “$abbab$” comme facteur.
+
+\answer
+Le langage des mots qui \emph{n'ont pas} le mot “$abbab$” comme sous-mot.
+
+\answer
+Le langage des mots qui \emph{ne sont pas} un sous-mot de “$abbab$”.
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+Parmi les différents langages ci-dessous sur l'alphabet $\Sigma :=
+\{a,b,c\}$, un seul \emph{n'est pas} rationnel : lequel ?
+
+\answer
+Le langage des mots de longueur $\geq 3$ dont la troisième lettre (à
+partir du début) est identique à la troisième lettre à partir de la
+fin.
+
+\answer
+Le langage des mots de longueur $\geq 3$ dont chaque troisième lettre
+(c'est-à-dire la troisième, la sixième, la neuvième, etc., jusqu'à la
+fin du mot) sont toutes identiques.
+
+\rightanswer
+Le langage des mots de longueur impaire dont la lettre du milieu est
+un $a$.
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+Quel langage reconnaît l'automate fini sur l'alphabet $\Sigma :=
+\{a,b\}$ représenté ci-dessous ?
+
+\begin{center} %% NAME: q4
+\begin{tikzpicture}[>=latex,line join=bevel,automaton]
+\node (q1) at (0bp,0bp) [draw,circle,state,initial] {$1$};
+\node (q2) at (70bp,0bp) [draw,circle,state] {$2$};
+\node (q3) at (00bp,-70bp) [draw,circle,state] {$3$};
+\node (q4) at (70bp,-70bp) [draw,circle,state,final] {$4$};
+ \draw [->] (q1) to node[auto] {$a$} (q2);
+ \draw [->] (q3) to node[auto] {$a$} (q4);
+ \draw [->] (q1) to node[auto] {$b$} (q3);
+ \draw [->] (q2) to node[auto] {$b$} (q4);
+ \draw [->] (q1) to[loop above] node[auto] {$a,b$} (q1);
+ \draw [->] (q4) to[loop below] node[auto] {$a,b$} (q4);
+\end{tikzpicture}
+\end{center}
+
+\rightanswer
+Le langage formé des mots de longueur $\geq 2$ dont toutes les lettres
+ne sont pas identiques.
+
+\answer
+Le langage formé des mots de longueur $\geq 2$ dont la dernière lettre
+est identique à la première.
+
+\answer
+Le langage formé des mots comportant au moins deux $a$ ou bien
+comportant au moins deux $b$.
+
+\answer
+Le langage formé des mots dont le nombre de $a$ et le nombre de $b$
+sont tous les deux pairs.
+
+\answer
+Le langage formé des mots ayant $ab$ comme facteur.
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+L'élimination des transitions spontanées sur l'automate fini sur
+l'alphabet $\Sigma := \{a,b\}$ représenté ci-dessous
+
+\begin{center} %% NAME: q5
+\begin{tikzpicture}[>=latex,line join=bevel,automaton]
+\node (q1) at (0bp,0bp) [draw,circle,state,initial] {$1$};
+\node (q2) at (70bp,0bp) [draw,circle,state] {$2$};
+\node (q3) at (140bp,0bp) [draw,circle,state,final] {$3$};
+ \draw [->] (q1) to node[auto] {$a$} (q2);
+ \draw [->] (q2) to node[auto] {$b$} (q3);
+ \draw [->,out=270,in=270] (q3) to node[above] {$\varepsilon$} (q1);
+\end{tikzpicture}
+\end{center}
+
+\noindent s'obtient-elle...
+
+\rightanswer
+En supprimant la transition étiquetée $\varepsilon$ reliant $3$ à $1$
+et en ajoutant une transition étiquetée $a$ reliant $3$ à $2$ ?
+
+\answer
+En supprimant la transition étiquetée $\varepsilon$ reliant $3$ à $1$
+et en ajoutant une transition étiquetée $a$ reliant $2$ à $1$ ?
+
+\answer
+En remplaçant la transition étiquetée $\varepsilon$ reliant $3$ à $1$
+par une transition étiquetée $a$ (toujours reliant $3$ à $1$) ?
+
+\answer
+En remplaçant la transition étiquetée $\varepsilon$ reliant $3$ à $1$
+par une transition étiquetée $b$ (toujours reliant $3$ à $1$) ?
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+Quel est le langage reconnu par l'automate ci-dessous ?
+
+\begin{center} %% NAME: q6
+\begin{tikzpicture}[>=latex,line join=bevel,automaton]
+\node (q1) at (0bp,0bp) [draw,circle,state,initial above,final,accepting below] {$1$};
+\node (q2) at (70bp,0bp) [draw,circle,state,initial above,final,accepting below] {$2$};
+\node (q3) at (140bp,0bp) [draw,circle,state,initial above,final,accepting below] {$3$};
+ \draw [->] (q1) to node[auto] {$a$} (q2);
+ \draw [->] (q2) to node[auto] {$b$} (q3);
+\end{tikzpicture}
+\end{center}
+
+\rightanswer
+$\{\varepsilon,a,b,ab\}$
+
+\answer
+$\{\varepsilon,ab\}$
+
+\answer
+$\{\varepsilon,a,b,ab,ba\}$
+
+\answer
+$\{\varepsilon,ab,ba\}$
+
+\answer
+$\{a,b,ab\}$
+
+\answer
+$\{ab\}$
+
+\answer
+$\varnothing$
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+Quel est le langage reconnu par l'automate ci-dessous ?
+
+\begin{center} %% NAME: q7
+\begin{tikzpicture}[>=latex,line join=bevel,automaton]
+\node (q1) at (0bp,0bp) [draw,circle,state,final,accepting below] {$1$};
+\node (q2) at (70bp,0bp) [draw,circle,state,initial above,final,accepting below] {$2$};
+\node (q3) at (140bp,0bp) [draw,circle,state,initial above] {$3$};
+ \draw [->] (q1) to node[auto] {$a$} (q2);
+ \draw [->] (q2) to node[auto] {$b$} (q3);
+\end{tikzpicture}
+\end{center}
+
+\answer
+$\{\varepsilon,a,b,ab\}$
+
+\answer
+$\{\varepsilon,ba\}$
+
+\answer
+$\{\varepsilon,a,b,ab,ba\}$
+
+\answer
+$\{\varepsilon,ab,ba\}$
+
+\answer
+$\{\varepsilon,a,b\}$
+
+\rightanswer
+$\{\varepsilon\}$
+
+\answer
+$\varnothing$
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+L'automate canonique (= automate fini déterministe complet ayant le
+nombre minimum possible d'états) équivalent à l'automate $\mathscr{A}$
+représenté ci-dessous
+
+\begin{center} %% NAME: q8
+\begin{tikzpicture}[>=latex,line join=bevel,automaton]
+\node (q1) at (0bp,0bp) [draw,circle,state,initial] {$1$};
+\node (q2) at (70bp,0bp) [draw,circle,state,final,accepting below] {$2$};
+\node (q3) at (140bp,0bp) [draw,circle,state,final] {$3$};
+ \draw [->] (q1) to[loop above] node[auto] {$a$} (q1);
+ \draw [->] (q1) to node[auto] {$b$} (q2);
+ \draw [->] (q2) to[loop above] node[auto] {$b$} (q2);
+ \draw [->] (q2) to node[auto] {$a$} (q3);
+ \draw [->] (q3) to[loop above] node[auto] {$a,b$} (q3);
+\end{tikzpicture}
+\end{center}
+
+\noindent s'obtient-il...
+
+\answer
+En ne changeant rien (l'automate $\mathscr{A}$ est déjà minimal) ?
+
+\rightanswer
+En fusionnant les états $2$ et $3$ (donnant un automate minimal à deux états) ?
+
+\answer
+En fusionnant les états $1$ et $2$ (donnant un automate minimal à deux états) ?
+
+\answer
+En fusionnant tous les états (donnant un automate minimal à un seul état) ?
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+Parmi les expressions rationnelles ci-dessous, laquelle dénote le
+langage reconnu par l'automate suivant ?
+
+\begin{center} %% NAME: q9
+\begin{tikzpicture}[>=latex,line join=bevel,automaton]
+\node (q1) at (0bp,0bp) [draw,circle,state,initial] {$1$};
+\node (q2) at (70bp,0bp) [draw,circle,state,final] {$2$};
+ \draw [->] (q1) to[loop above] node[auto] {$a$} (q1);
+ \draw [->,out=30,in=150] (q1) to node[auto] {$\varepsilon$} (q2);
+ \draw [->,out=210,in=330] (q2) to node[auto] {$\varepsilon$} (q1);
+ \draw [->] (q2) to[loop above] node[auto] {$b$} (q2);
+\end{tikzpicture}
+\end{center}
+
+\rightanswer
+$(a|b){*}$
+
+\answer
+$(ab|ba){*}$
+
+\answer
+$(aa|bb){*}$
+
+\answer
+$a{*}\,|\,b{*}$
+
+\answer
+$a(a|b){*}b$
+
+\end{question}
+
+
+%
+%
+%
+
+\begin{question}
+
+Parmi les expressions rationnelles ci-dessous, laquelle dénote le
+langage reconnu par l'automate suivant ? (Note : l'expression
+correcte ci-dessous est obtenue en éliminant les états dans
+l'ordre $3,2,1$.)
+
+\begin{center} %% NAME: q10
+\begin{tikzpicture}[>=latex,line join=bevel,automaton]
+\node (q1) at (0bp,0bp) [draw,circle,state] {$1$};
+\node (q2) at (60bp,35bp) [draw,circle,state] {$2$};
+\node (q3) at (60bp,-35bp) [draw,circle,state] {$3$};
+ \draw [<-] (q1) -- ++(-20bp,20bp);
+ \draw [->] (q1) -- ++(-20bp,-20bp);
+ \draw [->,out=90,in=150] (q1) to node[auto] {$a$} (q2);
+ \draw [->,out=330,in=30] (q2) to node[auto] {$b$} (q3);
+ \draw [->,out=210,in=270] (q3) to node[auto] {$c$} (q1);
+ \draw [->] (q2) to node[auto] {$a$} (q1);
+ \draw [->] (q3) to node[auto] {$b$} (q2);
+ \draw [->] (q1) to node[auto] {$c$} (q3);
+\end{tikzpicture}
+\end{center}
+
+\rightanswer
+$(cc\,|\,(a|cb)(bb){*}(a|bc)){*}$
+
+\answer
+$(a(b(cc){*}b){*}a){*}$
+
+\answer
+$(abc|cba){*}$
+
+\answer
+$(aa|b(aa|cc)b|cc){*}$
+
+\end{question}
+
+
+%
+%
+%
+\end{document}