From d970e67926f56aff01daa55dfe43badeb3ee6c09 Mon Sep 17 00:00:00 2001 From: Sebastian Lenzlinger <74497638+sebaschi@users.noreply.github.com> Date: Fri, 26 Apr 2024 15:09:24 +0200 Subject: [PATCH] Stand 26. April 2024. --- fai/bibliography.bib | 16 ++ fai/main.tex | 428 +++++++++++++++++++++++++++++++++++++ fai/sunglasses_emoji.png | Bin 0 -> 20641 bytes patterns/main_patterns.tex | 2 +- 4 files changed, 445 insertions(+), 1 deletion(-) create mode 100644 fai/bibliography.bib create mode 100644 fai/main.tex create mode 100644 fai/sunglasses_emoji.png diff --git a/fai/bibliography.bib b/fai/bibliography.bib new file mode 100644 index 0000000..f6a2e6d --- /dev/null +++ b/fai/bibliography.bib @@ -0,0 +1,16 @@ +@book{taylor, + author = "Taylor, Joseph L.", + title = "Complex Variables", + publisher = {AMS}, + year = {2011}, + isbn = {978-0-8218-6901-7}, + keywords = {complex,variables,analysis} +} + +@unpublished{sekhon, + author = "Sekhon, Senan", + title = "Metric and Topological Spaces", + year = {2019}, + note = "Unpublished", + keywords = {metric spaces,topological spaces} +} \ No newline at end of file diff --git a/fai/main.tex b/fai/main.tex new file mode 100644 index 0000000..b12ea47 --- /dev/null +++ b/fai/main.tex @@ -0,0 +1,428 @@ +\documentclass[10pt]{extarticle} + +\usepackage[english]{babel} +\usepackage{graphicx} +\usepackage{framed} +\usepackage[normalem]{ulem} +\usepackage{indentfirst} +\usepackage{amsmath,amsthm,amssymb,amsfonts} +\usepackage[italicdiff]{physics} +\usepackage[T1]{fontenc} +%\usepackage{pifont} %For unusual symbols +%\usepackage{mathdots} %For unusual combinations of dots +\usepackage{wrapfig} +\usepackage{lmodern,mathrsfs} +\usepackage[inline,shortlabels]{enumitem} +\setlist{topsep=2pt,itemsep=2pt,parsep=0pt,partopsep=0pt} +\usepackage[dvipsnames]{xcolor} +\usepackage[utf8]{inputenc} +\usepackage[a4paper, top=0.5in,bottom=0.2in, left=0.5in, right=0.5in, footskip=0.3in, includefoot]{geometry} +\usepackage[most]{tcolorbox} +\usepackage{tikz,tikz-3dplot,tikz-cd,tkz-tab,tkz-euclide,pgf,pgfplots} +\pgfplotsset{compat=newest} +\usepackage{multicol} +\usepackage[bottom,multiple]{footmisc} %ensures footnotes are at the bottom of the page, and separates footnotes by a comma if they are adjacent +\usepackage[backend=bibtex,style=numeric]{biblatex} +\renewcommand*{\finalnamedelim}{\addcomma\addspace} %forces authors' names to be separated by comma, instead of "and" +\addbibresource{bibliography} +\usepackage{hyperref} +\usepackage[nameinlink]{cleveref} %nameinlink ensures that the entire element is clickable in the pdf, not just the number + +\newcommand{\remind}[1]{\textcolor{red}{\textbf{#1}}} %To remind me of unfinished work to fix later +\newcommand{\hide}[1]{} %To hide large blocks of code without using % symbols + +\newcommand{\ep}{\varepsilon} +\newcommand{\vp}{\varphi} +\newcommand{\lam}{\lambda} +\newcommand{\Lam}{\Lambda} +%\newcommand{\abs}[1]{\ensuremath{\left\lvert#1\right\rvert}} % This clashes with the physics package +%\newcommand{\norm}[1]{\ensuremath{\left\lVert#1\right\rVert}} % This clashes with the physics package +\renewcommand{\ip}[1]{\ensuremath{\left\langle#1\right\rangle}} +\newcommand{\floor}[1]{\ensuremath{\left\lfloor#1\right\rfloor}} +\newcommand{\ceil}[1]{\ensuremath{\left\lceil#1\right\rceil}} +\newcommand{\A}{\mathbb{A}} +\newcommand{\B}{\mathbb{B}} +\newcommand{\C}{\mathbb{C}} +\newcommand{\D}{\mathbb{D}} +\newcommand{\E}{\mathbb{E}} +\newcommand{\F}{\mathbb{F}} +\newcommand{\K}{\mathbb{K}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} +\newcommand{\T}{\mathbb{T}} +\newcommand{\X}{\mathbb{X}} +\newcommand{\Y}{\mathbb{Y}} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\As}{\mathcal{A}} +\newcommand{\Bs}{\mathcal{B}} +\newcommand{\Cs}{\mathcal{C}} +\newcommand{\Ds}{\mathcal{D}} +\newcommand{\Es}{\mathcal{E}} +\newcommand{\Fs}{\mathcal{F}} +\newcommand{\Gs}{\mathcal{G}} +\newcommand{\Hs}{\mathcal{H}} +\newcommand{\Is}{\mathcal{I}} +\newcommand{\Js}{\mathcal{J}} +\newcommand{\Ks}{\mathcal{K}} +\newcommand{\Ls}{\mathcal{L}} +\newcommand{\Ms}{\mathcal{M}} +\newcommand{\Ns}{\mathcal{N}} +\newcommand{\Os}{\mathcal{O}} +\newcommand{\Ps}{\mathcal{P}} +\newcommand{\Qs}{\mathcal{Q}} +\newcommand{\Rs}{\mathcal{R}} +\newcommand{\Ss}{\mathcal{S}} +\newcommand{\Ts}{\mathcal{T}} +\newcommand{\Us}{\mathcal{U}} +\newcommand{\Vs}{\mathcal{V}} +\newcommand{\Ws}{\mathcal{W}} +\newcommand{\Xs}{\mathcal{X}} +\newcommand{\Ys}{\mathcal{Y}} +\newcommand{\Zs}{\mathcal{Z}} +\newcommand{\ab}{\textbf{a}} +\newcommand{\bb}{\textbf{b}} +\newcommand{\cb}{\textbf{c}} +\newcommand{\db}{\textbf{d}} +\newcommand{\ub}{\textbf{u}} +%\renewcommand{\vb}{\textbf{v}} % This clashes with the physics package (the physics package already defines the \vb command) +\newcommand{\wb}{\textbf{w}} +\newcommand{\xb}{\textbf{x}} +\newcommand{\yb}{\textbf{y}} +\newcommand{\zb}{\textbf{z}} +\newcommand{\Ab}{\textbf{A}} +\newcommand{\Bb}{\textbf{B}} +\newcommand{\Cb}{\textbf{C}} +\newcommand{\Db}{\textbf{D}} +\newcommand{\eb}{\textbf{e}} +\newcommand{\ex}{\textbf{e}_x} +\newcommand{\ey}{\textbf{e}_y} +\newcommand{\ez}{\textbf{e}_z} +\newcommand{\abar}{\overline{a}} +\newcommand{\bbar}{\overline{b}} +\newcommand{\cbar}{\overline{c}} +\newcommand{\dbar}{\overline{d}} +\newcommand{\ubar}{\overline{u}} +\newcommand{\vbar}{\overline{v}} +\newcommand{\wbar}{\overline{w}} +\newcommand{\xbar}{\overline{x}} +\newcommand{\ybar}{\overline{y}} +\newcommand{\zbar}{\overline{z}} +\newcommand{\Abar}{\overline{A}} +\newcommand{\Bbar}{\overline{B}} +\newcommand{\Cbar}{\overline{C}} +\newcommand{\Dbar}{\overline{D}} +\newcommand{\Ubar}{\overline{U}} +\newcommand{\Vbar}{\overline{V}} +\newcommand{\Wbar}{\overline{W}} +\newcommand{\Xbar}{\overline{X}} +\newcommand{\Ybar}{\overline{Y}} +\newcommand{\Zbar}{\overline{Z}} +\newcommand{\Aint}{A^\circ} +\newcommand{\Bint}{B^\circ} +\newcommand{\limk}{\lim_{k\to\infty}} +\newcommand{\limm}{\lim_{m\to\infty}} +\newcommand{\limn}{\lim_{n\to\infty}} +\newcommand{\limx}[1][a]{\lim_{x\to#1}} +\newcommand{\liminfm}{\liminf_{m\to\infty}} +\newcommand{\limsupm}{\limsup_{m\to\infty}} +\newcommand{\liminfn}{\liminf_{n\to\infty}} +\newcommand{\limsupn}{\limsup_{n\to\infty}} +\newcommand{\sumkn}{\sum_{k=1}^n} +\newcommand{\sumk}[1][1]{\sum_{k=#1}^\infty} +\newcommand{\summ}[1][1]{\sum_{m=#1}^\infty} +\newcommand{\sumn}[1][1]{\sum_{n=#1}^\infty} +\newcommand{\emp}{\varnothing} +\newcommand{\exc}{\backslash} +\newcommand{\sub}{\subseteq} +\newcommand{\sups}{\supseteq} +\newcommand{\capp}{\bigcap} +\newcommand{\cupp}{\bigcup} +\newcommand{\kupp}{\bigsqcup} +\newcommand{\cappkn}{\bigcap_{k=1}^n} +\newcommand{\cuppkn}{\bigcup_{k=1}^n} +\newcommand{\kuppkn}{\bigsqcup_{k=1}^n} +\newcommand{\cappk}[1][1]{\bigcap_{k=#1}^\infty} +\newcommand{\cuppk}[1][1]{\bigcup_{k=#1}^\infty} +\newcommand{\cappm}[1][1]{\bigcap_{m=#1}^\infty} +\newcommand{\cuppm}[1][1]{\bigcup_{m=#1}^\infty} +\newcommand{\cappn}[1][1]{\bigcap_{n=#1}^\infty} +\newcommand{\cuppn}[1][1]{\bigcup_{n=#1}^\infty} +\newcommand{\kuppk}[1][1]{\bigsqcup_{k=#1}^\infty} +\newcommand{\kuppm}[1][1]{\bigsqcup_{m=#1}^\infty} +\newcommand{\kuppn}[1][1]{\bigsqcup_{n=#1}^\infty} +\newcommand{\cappa}{\bigcap_{\alpha\in I}} +\newcommand{\cuppa}{\bigcup_{\alpha\in I}} +\newcommand{\kuppa}{\bigsqcup_{\alpha\in I}} +\newcommand{\Rx}{\overline{\mathbb{R}}} +\newcommand{\dx}{\,dx} +\newcommand{\dy}{\,dy} +\newcommand{\dt}{\,dt} +\newcommand{\dax}{\,d\alpha(x)} +\newcommand{\dbx}{\,d\beta(x)} +\DeclareMathOperator{\glb}{\text{glb}} +\DeclareMathOperator{\lub}{\text{lub}} +\newcommand{\xh}{\widehat{x}} +\newcommand{\yh}{\widehat{y}} +\newcommand{\zh}{\widehat{z}} +\newcommand{\<}{\langle} +\renewcommand{\>}{\rangle} +\renewcommand{\iff}{\Leftrightarrow} +\DeclareMathOperator{\im}{\text{im}} +\let\spn\relax\let\Re\relax\let\Im\relax +\DeclareMathOperator{\spn}{\text{span}} +\DeclareMathOperator{\Re}{\text{Re}} +\DeclareMathOperator{\Im}{\text{Im}} +\DeclareMathOperator{\diag}{\text{diag}} + +\newtheoremstyle{mystyle}{}{}{}{}{\sffamily\bfseries}{.}{ }{} +\newtheoremstyle{cstyle}{}{}{}{}{\sffamily\bfseries}{.}{ }{\thmnote{#3}} +\makeatletter +\renewenvironment{proof}[1][\proofname] {\par\pushQED{\qed}{\normalfont\sffamily\bfseries\topsep6\p@\@plus6\p@\relax #1\@addpunct{.} }}{\popQED\endtrivlist\@endpefalse} +\makeatother +\newcommand{\coolqed}[1]{\includegraphics[width=#1cm]{sunglasses_emoji.png}} %Defines the new QED symbol +\renewcommand{\qedsymbol}{\coolqed{0.32}} %Implements the new QED symbol +\theoremstyle{mystyle}{\newtheorem{definition}{Definition}[section]} +\theoremstyle{mystyle}{\newtheorem{proposition}[definition]{Proposition}} +\theoremstyle{mystyle}{\newtheorem{theorem}[definition]{Theorem}} +\theoremstyle{mystyle}{\newtheorem{lemma}[definition]{Lemma}} +\theoremstyle{mystyle}{\newtheorem{corollary}[definition]{Corollary}} +\theoremstyle{mystyle}{\newtheorem*{remark}{Remark}} +\theoremstyle{mystyle}{\newtheorem*{remarks}{Remarks}} +\theoremstyle{mystyle}{\newtheorem*{example}{Example}} +\theoremstyle{mystyle}{\newtheorem*{examples}{Examples}} +\theoremstyle{definition}{\newtheorem*{exercise}{Exercise}} +\theoremstyle{cstyle}{\newtheorem*{cthm}{}} + +%Warning environment +\newtheoremstyle{warn}{}{}{}{}{\normalfont}{}{ }{} +\theoremstyle{warn} +\newtheorem*{warning}{\warningsign{0.2}\relax} + +%Symbol for the warning environment, designed to be easily scalable +\newcommand{\warningsign}[1]{\tikz[scale=#1,every node/.style={transform shape}]{\draw[-,line width={#1*0.8mm},red,fill=yellow,rounded corners={#1*2.5mm}] (0,0)--(1,{-sqrt(3)})--(-1,{-sqrt(3)})--cycle; +\node at (0,-1) {\fontsize{48}{60}\selectfont\bfseries!};}} + +\tcolorboxenvironment{definition}{boxrule=0pt,boxsep=0pt,colback={red!10},left=8pt,right=8pt,enhanced jigsaw, borderline west={2pt}{0pt}{red},sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{proposition}{boxrule=0pt,boxsep=0pt,colback={Orange!10},left=8pt,right=8pt,enhanced jigsaw, borderline west={2pt}{0pt}{Orange},sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{theorem}{boxrule=0pt,boxsep=0pt,colback={blue!10},left=8pt,right=8pt,enhanced jigsaw, borderline west={2pt}{0pt}{blue},sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{lemma}{boxrule=0pt,boxsep=0pt,colback={Cyan!10},left=8pt,right=8pt,enhanced jigsaw, borderline west={2pt}{0pt}{Cyan},sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{corollary}{boxrule=0pt,boxsep=0pt,colback={violet!10},left=8pt,right=8pt,enhanced jigsaw, borderline west={2pt}{0pt}{violet},sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{proof}{boxrule=0pt,boxsep=0pt,blanker,borderline west={2pt}{0pt}{CadetBlue!80!white},left=8pt,right=8pt,sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{remark}{boxrule=0pt,boxsep=0pt,blanker,borderline west={2pt}{0pt}{Green},left=8pt,right=8pt,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{remarks}{boxrule=0pt,boxsep=0pt,blanker,borderline west={2pt}{0pt}{Green},left=8pt,right=8pt,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{example}{boxrule=0pt,boxsep=0pt,blanker,borderline west={2pt}{0pt}{Black},left=8pt,right=8pt,sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{examples}{boxrule=0pt,boxsep=0pt,blanker,borderline west={2pt}{0pt}{Black},left=8pt,right=8pt,sharp corners,before skip=10pt,after skip=10pt,breakable} +\tcolorboxenvironment{cthm}{boxrule=0pt,boxsep=0pt,colback={gray!10},left=8pt,right=8pt,enhanced jigsaw, borderline west={2pt}{0pt}{gray},sharp corners,before skip=10pt,after skip=10pt,breakable} + +%align and align* environments with inline size +\newenvironment{talign}{\let\displaystyle\textstyle\align}{\endalign} +\newenvironment{talign*}{\let\displaystyle\textstyle\csname align*\endcsname}{\endalign} + +\usepackage[explicit]{titlesec} +\titleformat{\section}{\fontsize{24}{30}\sffamily\bfseries}{\thesection}{20pt}{#1} +\titleformat{\subsection}{\fontsize{16}{18}\sffamily\bfseries}{\thesubsection}{12pt}{#1} +\titleformat{\subsubsection}{\fontsize{10}{12}\sffamily\large\bfseries}{\thesubsubsection}{8pt}{#1} + +\titlespacing*{\section}{0pt}{5pt}{5pt} +\titlespacing*{\subsection}{0pt}{5pt}{5pt} +\titlespacing*{\subsubsection}{0pt}{5pt}{5pt} + +%\newcommand{\sectionbreak}{\clearpage} %Start every section on a new page + +\newcommand{\Disp}{\displaystyle} +\newcommand{\qe}{\hfill\(\bigtriangledown\)} +\DeclareMathAlphabet\mathbfcal{OMS}{cmsy}{b}{n} +\setlength{\parindent}{0.2in} +\setlength{\parskip}{0pt} +\setlength{\columnseprule}{0pt} + +\title{\huge\sffamily\bfseries A Fun Template} +\author{\Large\sffamily Senan Sekhon} +\date{\sffamily October 4, 2020} + +\begin{document} + +\setlength{\abovedisplayskip}{3pt} +\setlength{\belowdisplayskip}{3pt} +\setlength{\abovedisplayshortskip}{0pt} +\setlength{\belowdisplayshortskip}{0pt} +\maketitle + +%Custom colors for different environments +\definecolor{contcol1}{HTML}{72E094} +\definecolor{contcol2}{HTML}{24E2D6} +\definecolor{convcol1}{HTML}{C0392B} +\definecolor{convcol2}{HTML}{8E44AD} + +\begin{tcolorbox}[title=Contents, fonttitle=\huge\sffamily\bfseries\selectfont,interior style={left color=contcol1!40!white,right color=contcol2!40!white},frame style={left color=contcol1!80!white,right color=contcol2!80!white},coltitle=black,top=2mm,bottom=2mm,left=2mm,right=2mm,drop fuzzy shadow,enhanced,breakable] +\makeatletter +\@starttoc{toc} +\makeatother +\end{tcolorbox} + +\vspace*{10mm} + +\begin{tcolorbox}[title=Conventions, fonttitle=\large\sffamily\bfseries\selectfont,interior style={left color=convcol1!40!white,right color=convcol2!40!white},frame style={left color=convcol1!80!white,right color=convcol2!80!white},coltitle=black,top=2mm,bottom=2mm,left=2mm,right=2mm,drop fuzzy shadow,enhanced,breakable] +$\F$ denotes either $\R$ or $\C$.\\ +$\N$ denotes the set $\{1,2,3,...\}$ of natural numbers (excluding $0$). +\end{tcolorbox} + +\newpage + +\section{Sample Chapter} +Let's dive right in! + +\subsection{Some Definitions} +\begin{definition} +The \textbf{derivative} of a function $f:I\to\R$ at $a\in I$ is given by: +\begin{equation*} + f'(x)=\limx\frac{f(x)-f(a)}{x-a} +\end{equation*} +\end{definition} + +\begin{center} +You know those awesome commutative diagrams? + +\begin{tikzcd} +A \arrow[r,"p"] \arrow[d,red,"q"'] & B \arrow[d,"r" red] \\ +C \arrow[r,red,"s"' blue] & D +\end{tikzcd} + +The derivative has \emph{nothing} to do with them! +\end{center} + +\begin{proposition}\label{diffcont} +If $f$ is differentiable at $a$, then $f$ is continuous at $a$. +\end{proposition} +\begin{proof} +Exercise (but only because this is a template). +\end{proof} + +The converse of \Cref{diffcont} is not true in general. + +\begin{examples}\leavevmode % This is needed to start the list in the next line so it won't be misaligned +\begin{enumerate} + \item $f(x)=\abs{x}$ + \item $f(x)=\begin{cases} \sin(x) & x\ge 0 \\ 0 & x<0 \end{cases}$ +\end{enumerate} +\end{examples} + +\begin{theorem} +The following statements are true: +\begin{enumerate} + \item First statement + \item Second statement +\end{enumerate} +\end{theorem} +\begin{proof}% For some reason, the proof environment does not need \leavevmode +\begin{enumerate} + \item Trivial. + \item Trivial.\qedhere % qedhere is to place the qed symbol here instead of in the next line +\end{enumerate} +\end{proof} + +\begin{corollary} +We are both very lucky to have each other as a collaborator. +\end{corollary} +\begin{proof} +We simply note that: +\begin{equation*} + \frac{1}{1}+\frac{1}{1}\gg\frac{1}{1} \qedhere +\end{equation*} +\end{proof} +\begin{remark} +This corollary is also obvious from empirical evidence. +\end{remark} + +\begin{lemma} +$(a+b)^2=a^2+2ab+b^2$ +\end{lemma} +\begin{proof} +Expand the left side. +\end{proof} +\begin{remarks}\leavevmode +\begin{enumerate} + \item It's also kind of obvious. + \item No extra points for guessing what $(a-b)^2$ is. +\end{enumerate} +\end{remarks} + +\begin{example} +$(2+4)^2=2^2+2\cdot 2\cdot 4+4^2=36$ +\end{example} + +\begin{theorem}[Pythagoras' Theorem]\label{pythagoras} +If $c$ is the hypotenuse of a right triangle and $a$ and $b$ are the other two sides, then $a^2+b^2=c^2$. +\end{theorem} +\begin{proof} +Draw a picture and convince yourself. +\end{proof} + +\hyperref[pythagoras]{Pythagoras' theorem} helps motivate the study of metric spaces, which you can learn about in \cite{sekhon}.\\ + +A lot of nice integrals can be computed using the residue theorem, see \cite[Section 5.2]{taylor}. + + +\newpage +\appendix +\section{Bonus Material} +The \verb!talign! and \verb!talign*! environments work like the \verb!align! and \verb!align*! environments, except they render equations in inline size. For example, \verb!\begin{align*}...\end{align*}! yields: +\begin{align*} + \sumn\frac{1}{n^2}=\frac{\pi^2}{6} +\end{align*} +While \verb!\begin{talign*}...\end{talign*}! yields: +\begin{talign*} + \sumn\frac{1}{n^2}=\frac{\pi^2}{6} +\end{talign*} +As usual, the purpose of \verb!*! is to prevent numbering of the equation.\\ + +Some commands, like \verb!\sumn!, can be used with or without a starting value (the default starting value is 1). For example, \verb!$\sumn\frac{1}{n^2}$! yields $\sumn\frac{1}{n^2}$, while \verb!$\sumn[69]\frac{1}{n^2}$! yields $\sumn[69]\frac{1}{n^2}$. This can be used in inline mode as well as display mode. + +\newpage + +\section{Combinatorial Optimization} +previous chapters: classical state-space search +- find action sequence (path) from initial to goal state +- difficulty: large number of states (“state explosion”) +next chapters: combinatorial optimization +$\rightsquigarrow$ similar scenario, but: +- no actions or transitions +- don’t search for path, but for configuration (“state”) +with low cost/high quality +German: Zustandsraumexplosion, kombinatorische Optimierung, +Konfiguration +\subsection{Intro and Hill-Climbing} + +\begin{definition}\label{cop} +A \textbf{combinatorial optimization problem \emph{COP}} is given by a tuple +$\langle C, S, opt, v\rangle$ +consisting of: +\begin{itemize} + \item a finite set of (solution) \textbf{candidates} $C$ + \item a finite set of \textbf{solutions} $S\subseteq C$ + \item an \textbf{objective sense} $opt\in\{min,max\}$ + \item an \textbf{objective function} $v:S\rightarrow \R$ +\end{itemize} +\textbf{Remarks:} "problem" here means "instance". Interesting COPs usually have to many candidates to enumerate explicitly. +\end{definition} +\begin{definition}\label{opt} +Let $\Os = \langle C,S,opt,v\rangle$ be a COP. The \textbf{optimal solution quality} $v^*$ of $\Os$ is defined as $v^*= \mathsf{min/max}_{c\in S}v(c) | \ opt=\mathsf{min/max}$ (undefined if $S=\emptyset$). A solution $s$ of $\Os$ is called \textbf{optimal} if $v(s)=v^*$. +\end{definition} +\textbf{Algorithmic Problem we want to solve:} Find a \emph{solution} to a COP $\Os$ which is as close to $v^*$ as possible. \\ +\textbf{Special cases:} \emph{pure search:} all sols same quality; finding any sol is hard to begin with; formal: $v$ is a constant function and $opt$ can be chosen arbitrarily. \emph{pure optimization:} all candidates are sols; difficulty is finding sol of high quality; formal: $S = C$. \\ + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%% D1 CSP +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Constraint Satisfaction Problems} +\subsection{Intro} +\textbf{Summary:} {\color{red} Constrain Satisfaction} is the problem of finding an {\color{red}assignment} for a set of \emph{variables} from a given \emph{domain}, which satisfies a given set of \emph{constraints}. +\begin{definition} + +\end{definition} + + +\printbibliography + +\end{document} \ No newline at end of file diff --git a/fai/sunglasses_emoji.png b/fai/sunglasses_emoji.png new file mode 100644 index 0000000000000000000000000000000000000000..be855822817da1a9452238b5471a1fc709d55675 GIT binary patch literal 20641 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 M07*qoM6N<$f+?1z3IG5A literal 0 HcmV?d00001 diff --git a/patterns/main_patterns.tex b/patterns/main_patterns.tex index b496197..620258b 100644 --- a/patterns/main_patterns.tex +++ b/patterns/main_patterns.tex @@ -1,4 +1,4 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ref{}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % writeLaTeX Example: A quick guide to LaTeX % % Source: Dave Richeson (divisbyzero.com), Dickinson College