diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b70f01c --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.log +*.aux +*.out +*.toc +*.synctex.gz + +algorithms/.ropeproject/ + +*.bcf diff --git a/LICENSE b/LICENSE index f18056d..803b837 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ -MIT License +The MIT License (MIT) -Copyright (c) 2016 hse-ami +Copyright (c) 2016 knkeer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/README.md b/README.md index a5d7f96..3583539 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,39 @@ -# lectures -Лекции ПМИ +# hse-ami-lectures + +Здесь будут храниться и изменяться конспекты лекций 1-2-го курса ПМИ (1 курс начинается с 2-3 модуля). + +Разделение по папкам: +* 1 курс: + * discrete-math – дискретная математика-1 + * linear-algebra – линейная алгебра и геометрия + * algorithms\_(old) – алгоритмы и структуры данных + * algebra – алгебра +* 2 курс: + * calculus-3 – математический анализ-3 + * computer-systems – компьютерные системы + * probability-theory – лекции и семинары 151 группы по теории вероятностей + * hse_algo_pilot – алгоритмы пилотного потока + +Система наименования лекций: <название предмета>\_<номер лекции>\_[дата]. + +Пример: discrete-math-2\_15\_[10.01.2016] + +Команда, стоящая за конспектами 2-ого курса: + +* Теория вероятностей и математическая статистика + * Алексей Хачиянц + * Никита Попов + * Денис Беляков +* Математический анализ-3 + * Руслан Хайдуров + * Анастасия Иовлева + * Михаил Дискин +* Компьютерные системы + * Вадим Гринберг + * Петр Жижин + * Ксения Закирова +* Алгоритмы и структуры данных (основной поток) + * Вадим Гринберг + * Анастасия Иовлева +* Алгоритмы и струтуры данных (пилотный поток) + * Данила Кутенин diff --git a/algebra/README.md b/algebra/README.md new file mode 100644 index 0000000..979e098 --- /dev/null +++ b/algebra/README.md @@ -0,0 +1,28 @@ +# Алгебра + +Лекция 1 (4.04.2016). Полугруппы и группы: основные определения и примеры. Группы подстановок и группы матриц. Подгруппы. Порядок элемента и циклические подгруппы. Смежные классы и индекс подгруппы. Теорема Лагранжа. + +Лекция 2 (11.04.2016). Следствия из теоремы Лагранжа. Нормальные подгруппы. Факторгруппы и теорема о гомоморфизме. Прямое произведение групп. Разложение конечной циклической группы. + +Лекция 3 (18.04.2016). Факторизация по сомножителям. Конечно порождённые и свободные абелевы группы. Подгруппы +свободных абелевых групп. + +Лекция 4 (25.04.2016). Теорема о согласованных базисах. Алгоритм +приведения целочисленной матрицы к диагональному виду. Строение конечно порождённых абелевых групп. Конечные абелевы группы. + +Лекция 5 (29.04.2016). Строение конечно порождённых абелевых груп (продолжение). Экспонента +конечной абелевой группы. Действие группы на множестве. Орбиты и стабилизаторы. + +Лекция 6 (16.05.2016). Три действия группы на себе. Теорема Кэли. Классы сопряжённости. +Кольца. Делители нуля, обратимые элементы, нильпотенты. Поля и алгебры. +Идеалы. + +Лекция 7 (23.05.2016). Факторкольца. Теорема о +гомоморфизме колец. Евклидовы кольца, кольца главных идеалов и факториальные +кольца. + +Лекция 8 (27.05.2016). Элементарные симметрические многочлены. Основная теорема о симметрических многочленах. Лексикографический порядок. Теорема Виета. + +Лекция 9 (4.06.2015). Примеры полей. Характеристика поля. Расширения полей, алгебраические и трансцендентные элементы. Минимальный многочлен. Конечное расширение и его степень. Присоединение корня многочлена. Поле разложения многочлена: существование и единственность + +Лекция 10 (11.06.2015). Конечные поля. Простое подполе и порядок конечного поля. Автоморфизм Фробениуса. Теорема существования и единственности для конечных полей. Поле из четырёх элементов. Цикличность мультипликативной группы конечного поля. Неприводимые многочлены над конечным полем. Подполя конечного поля. diff --git a/algebra/algebra_01_[04.04.2016].pdf b/algebra/algebra_01_[04.04.2016].pdf new file mode 100644 index 0000000..cd06cd9 Binary files /dev/null and b/algebra/algebra_01_[04.04.2016].pdf differ diff --git a/algebra/algebra_02_[11.04.2016].pdf b/algebra/algebra_02_[11.04.2016].pdf new file mode 100644 index 0000000..c32047b Binary files /dev/null and b/algebra/algebra_02_[11.04.2016].pdf differ diff --git a/algebra/algebra_03_[18.04.2016].pdf b/algebra/algebra_03_[18.04.2016].pdf new file mode 100644 index 0000000..8e1d1ee Binary files /dev/null and b/algebra/algebra_03_[18.04.2016].pdf differ diff --git a/algebra/algebra_04_[25.04.2016].pdf b/algebra/algebra_04_[25.04.2016].pdf new file mode 100644 index 0000000..333a130 Binary files /dev/null and b/algebra/algebra_04_[25.04.2016].pdf differ diff --git a/algebra/algebra_05_[29.04.2016].pdf b/algebra/algebra_05_[29.04.2016].pdf new file mode 100644 index 0000000..2c552e3 Binary files /dev/null and b/algebra/algebra_05_[29.04.2016].pdf differ diff --git a/algebra/algebra_06_[16.05.2016].pdf b/algebra/algebra_06_[16.05.2016].pdf new file mode 100644 index 0000000..63dbc1b Binary files /dev/null and b/algebra/algebra_06_[16.05.2016].pdf differ diff --git a/algebra/algebra_07_[23.05.2016].pdf b/algebra/algebra_07_[23.05.2016].pdf new file mode 100644 index 0000000..204d5c9 Binary files /dev/null and b/algebra/algebra_07_[23.05.2016].pdf differ diff --git a/algebra/algebra_08_[27.05.2016].pdf b/algebra/algebra_08_[27.05.2016].pdf new file mode 100644 index 0000000..fc21bf2 Binary files /dev/null and b/algebra/algebra_08_[27.05.2016].pdf differ diff --git a/algebra/algebra_09_[04.06.2015].pdf b/algebra/algebra_09_[04.06.2015].pdf new file mode 100644 index 0000000..4e5924a Binary files /dev/null and b/algebra/algebra_09_[04.06.2015].pdf differ diff --git a/algebra/algebra_10_[11.06.2015].pdf b/algebra/algebra_10_[11.06.2015].pdf new file mode 100644 index 0000000..d2147cf Binary files /dev/null and b/algebra/algebra_10_[11.06.2015].pdf differ diff --git a/algebra/algebra_full.pdf b/algebra/algebra_full.pdf new file mode 100644 index 0000000..718f4af Binary files /dev/null and b/algebra/algebra_full.pdf differ diff --git a/algebra/tex/algebra_01_[04.04.2016].tex b/algebra/tex/algebra_01_[04.04.2016].tex new file mode 100644 index 0000000..3394fc2 --- /dev/null +++ b/algebra/tex/algebra_01_[04.04.2016].tex @@ -0,0 +1,536 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\def\Ker{{\rm Ker}}% +\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exc}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция 1} + +\medskip + +{\it Полугруппы и группы: основные определения и примеры. Группы +подстановок и группы матриц. Подгруппы. Порядок элемента и +циклические подгруппы. Смежные классы и индекс подгруппы. Теорема +Лагранжа.} + +\medskip + +\begin{definition} +{\it Множество с бинарной операцией}~--- это множество $M$ с +заданным отображением +$$ +M\times M \to M, \quad (a,b) \mapsto a\circ b. +$$ +\end{definition} + +Множество с бинарной операцией обычно обозначают $(M,\circ)$. + +\begin{definition} +Множество с бинарной операцией $(M,\circ)$ называется {\it +полугруппой}, если данная бинарная операция {\it ассоциативна}, +т.\,е. +$$ +a\circ (b \circ c) = (a\circ b)\circ c \quad \text{для всех} \ a,b,c\in M. +$$ +\end{definition} + +Не все естественно возникающие операции ассоциативны. Например, если +$M=\NN$ и $a\circ b:=a^b$, то +$$ +2^{\left(1^2\right)}=2\ne (2^1)^2=4. +$$ + +Другой пример неассоциативной бинарной операции: $M = \ZZ$ и $a +\circ b := a - b$ (проверьте!). + +Полугруппу обычно обозначают $(S,\circ)$. + +\begin{definition} +Полугруппа $(S,\circ)$ называется {\it моноидом}, если в ней есть +{\it нейтральный элемент}, т.\,е. такой элемент $e\in S$, что +$e\circ a=a\circ e=a$ для любого $a\in S$. +\end{definition} + +Во Франции полугруппа $(\NN,+)$ является моноидом, а в России нет. + +\begin{remark} +Если в полугруппе есть нейтральный элемент, то он один. В самом +деле, $e_1\circ e_2=e_1=e_2$. +\end{remark} + +\begin{definition} +Моноид $(S,\circ)$ называется {\it группой}, если для каждого +элемента $a\in S$ найдется {\it обратный элемент}, т.\,е. такой +$b\in S$, что $a\circ b = b\circ a= e$. +\end{definition} + +\begin{exc} +Докажите, что если обратный элемент существует, то он один. +\end{exc} + +Обратный элемент обозначается $a^{-1}$. Группу принято обозначать +$(G,\circ)$ или просто $G$, когда понятно, о какой операции идёт +речь. Обычно символ $\circ$ для обозначения операции опускают и +пишут просто $ab$. + +\begin{definition} +Группа $G$ называется {\it коммутативной} или {\it абелевой}, если +групповая операция {\it коммутативна}, т.\,е. $ab=ba$ для любых +$a,b\in G$. +\end{definition} + +Если в случае произвольной группы $G$ принято использовать +мультипликативные обозначения для групповой операции~--- $gh$, $e$, +$g^{-1}$, то в теории абелевых групп чаще используют аддитивные +обозначения, т.\,е. $a+b$, $0$, $-a$. + +\begin{definition} +{\it Порядок} группы $G$~--- это число элементов в~$G$. Группа +называется {\it конечной}, если её порядок конечен, и {\it +бесконечной} иначе. +\end{definition} + +Порядок группы $G$ обозначается $|G|$. + +\smallskip + +Приведём несколько серий примеров групп. + +\smallskip + +1) Числовые аддитивные группы: \ $(\ZZ,+)$, $(\QQ,+)$, $(\RR,+)$, +$(\CC,+)$, $(\ZZ_n,+)$. + +\smallskip + +2) Числовые мультипликативные группы: \ +$(\QQ\setminus\{0\},\times)$, $(\RR\setminus\{0\},\times)$, +$(\CC\setminus\{0\},\times)$, +$(\ZZ_p\setminus\{\overline{0}\},\times)$, $p$~--- простое. + +3) Группы матриц: \ $\GL_n(\RR)=\{A\in\Mat(n\times n, \RR) \mid +\det(A)\ne 0\}$; \ $\SL_n(\RR)=\{A\in\Mat(n\times n, \RR) \mid +\det(A)=1\}$. + +4) Группы подстановок: \ симметрическая группа $S_n$~--- все +подстановки длины $n$, $|S_n|=n!$; + +знакопеременная группа $A_n$~--- чётные подстановки длины $n$, +$|A_n|=n!/2$. + +\begin{exc} +Докажите, что группа $S_n$ коммутативна $\Leftrightarrow$ $n +\leqslant 2$, а $A_n$ коммутативна $\Leftrightarrow$ $n \leqslant +3$. +\end{exc} + +\begin{definition} +Подмножество $H$ группы $G$ называется {\it подгруппой}, если выполнены следующие три условия: (1) $e \in H$; \quad (2) $ab\in H$ для любых $a,b +\in H$; \quad (3) $a^{-1}\in H$ для любого +$a\in H$. +\end{definition} + +\begin{exc} +Проверьте, что $H$ является подгруппой тогда и только тогда, когда + $H$ непусто и $ab^{-1}\in H$ для любых $a,b\in H$. +\end{exc} + +В каждой группе $G$ есть {\it несобственные} подгруппы $H=\{e\}$ и +$H=G$. Все прочие подгруппы называются {\it собственными}. Например, +чётные числа $2\ZZ$ образуют собственную подгруппу в $(\ZZ,+)$. + +\begin{proposition} \label{sbgrz} +Всякая подгруппа в $(\ZZ,+)$ имеет вид $k\ZZ$ для некоторого целого +неотрицательного $k$. +\end{proposition} + +\begin{proof} +Пусть $H$~--- подгруппа в $\ZZ$. Если $H=\{0\}$, положим $k=0$. +Иначе пусть $k$~--- наименьшее натуральное число, лежащее в~$H$ +(почему такое есть?). Тогда $k\ZZ \subseteq H$. С другой стороны, +если $a\in H$ и $a=qk+r$~--- результат деления $a$ на $k$ с +остатком, то $0 \leqslant r \leqslant k-1$ и $r = a - qk \in H$. +Отсюда $r=0$ и $H=k\ZZ$. +\end{proof} + +\begin{definition} +Пусть $G$~--- группа и $g\in G$. {\it Циклической подгруппой}, +порождённой элементом~$g$, называется подмножество $\{g^n \mid +n\in\ZZ\}$ в $G$. +\end{definition} + +Циклическая подгруппа, порождённая элементом $g$, обозначается +$\langle g\rangle$. Элемент $g$ называется {\it порождающим} или +{\it образующим} для подгруппы $\langle g\rangle$. Например, +подгруппа $2\ZZ$ в $(\ZZ,+)$ является циклической, и в качестве +порождающего элемента в ней можно взять $g=2$ или $g=-2$. Другими +словами, $2\ZZ=\langle 2\rangle=\langle -2\rangle$. + +\begin{definition} +Пусть $G$~--- группа и $g\in G$. {\it Порядком} элемента $g$ +называется такое наименьшее натуральное число~$m$, что $g^m=e$. Если +такого натурального числа $m$ не существует, говорят, что порядок +элемента $g$ равен бесконечности. +\end{definition} + +Порядок элемента обозначается $\ord(g)$. Заметим, что $\ord(g)=1$ тогда и только тогда, когда $g=e$. + +Следующее предложение объясняет, почему для порядка группы и порядка элемента используется одно и то же слово. + +\begin{proposition} \label{p1} +Пусть $G$~--- группа и $g\in G$. Тогда $\ord(g)=|\langle g\rangle|$. +\end{proposition} + +\begin{proof} +Заметим, что если $g^k=g^s$, то $g^{k-s}=e$. Поэтому если элемент +$g$ имеет бесконечный порядок, то все элементы $g^n$, $n\in\ZZ$, +попарно различны, и подгруппа $\langle g\rangle$ содержит бесконечно +много элементов. Если же порядок элемента $g$ равен $m$, то из +минимальности числа $m$ следует, что элементы $e=g^0, g=g^1, +g^2,\ldots,g^{m-1}$ попарно различны. Далее, для всякого $n\in\ZZ$ +мы имеем $n=mq+r$, где $0 \leqslant r \leqslant m-1$, и +$$ +g^n=g^{mq+r}=(g^m)^qg^r=e^qg^r=g^r. +$$ +Следовательно, $\langle g\rangle=\{e,g,\ldots, g^{m-1}\}$ и +$|\langle g\rangle|=m$. +\end{proof} + +\begin{definition} +Группа $G$ называется {\it циклической}, если найдётся такой элемент +$g\in G$, что $G=\langle g\rangle$. +\end{definition} + +Ясно, что любая циклическая группа коммутативна и не более чем +счётна. Примерами циклических групп являются группы $(\ZZ,+)$ и +$(\ZZ_n,+)$, $n \ge 1$. + +Перейдем ещё к одному сюжету, связанному с парой группа--подгруппа. + +\begin{definition} +Пусть $G$~--- группа, $H\subseteq G$~--- подгруппа и $g\in G$. {\it +Левым смежным классом} элемента $g$ группы $G$ по подгруппе $H$ +называется подмножество +$$ +gH=\{gh \mid h\in H\}. +$$ +\end{definition} + +\begin{lemma} \label{l1} +Пусть $G$~--- группа, $H\subseteq G$~--- её подгруппа и $g_1,g_2\in +G$. Тогда либо $g_1H=g_2H$, либо $g_1H\cap g_2H=\varnothing$. +\end{lemma} + +\begin{proof} +Предположим, что $g_1H\cap g_2H\ne\varnothing$, т.\,е. +$g_1h_1=g_2h_2$ для некоторых $h_1,h_2\in H$. Нужно доказать, что +$g_1H=g_2H$. Заметим, что $g_1H=g_2h_2h_1^{-1}H\subseteq g_2H$. +Обратное включение доказывается аналогично. +\end{proof} + +\begin{lemma} \label{l2} +Пусть $G$~--- группа и $H\subseteq G$~--- конечная подгруппа. Тогда +$|gH|=|H|$ для любого $g\in G$. +\end{lemma} + +\begin{proof} +Поскольку $gH=\{gh \mid h\in H\}$, в $|gH|$ элементов не больше, чем +в~$H$. Если $gh_1=gh_2$, то домножаем слева на $g^{-1}$ и получаем +$h_1=h_2$. Значит, все элементы вида $gh$, где $h\in H$, попарно +различны, откуда $|gH|=|H|$. +\end{proof} + +\begin{definition} +Пусть $G$~--- группа и $H\subseteq G$~--- подгруппа. {\it Индексом} +подгруппы $H$ в группе $G$ называется число левых смежных классов +$G$ по~$H$. +\end{definition} + +Индекс группы $G$ по подгруппе $H$ обозначается $[G:H]$. + +\smallskip + +{\bf Теорема Лагранжа}.\ Пусть $G$~--- конечная группа и $H\subseteq +G$~--- подгруппа. Тогда +$$ +|G| = |H| \cdot [G:H]. +$$ + +\begin{proof} +Каждый элемент группы $G$ лежит в (своём) левом смежном классе по +подгруппе $H$, разные смежные классы не пересекаются +(лемма~\ref{l1}) и каждый из них содержит по $|H|$ элементов +(лемма~\ref{l2}). +\end{proof} + +На следующей лекции мы обсудим следствия из данной теоремы. + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~4, +$\S$~1,3,5) +\bibitem{Ko1} +А.\,И.~Кострикин. Введение в алгебру. Основы алгебры. М.: Наука. +Физматлит, 1994 (глава~4, $\S$~1-2) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~1, $\S$~2) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава~13, $\S$~54-56) +\end{thebibliography} + +\end{document} diff --git a/algebra/tex/algebra_02_[11.04.2016].tex b/algebra/tex/algebra_02_[11.04.2016].tex new file mode 100644 index 0000000..6c049b5 --- /dev/null +++ b/algebra/tex/algebra_02_[11.04.2016].tex @@ -0,0 +1,590 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\def\Ker{{\rm Ker}}% +\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exc}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция 2} + +\medskip + +{\it Следствия из теоремы Лагранжа. Нормальные подгруппы. Факторгруппы и теорема о гомоморфизме. Прямое произведение групп. Разложение конечной циклической группы.} + +\medskip + +Рассмотрим некоторые следствия из теоремы Лагранжа. + +\begin{corollary} \label{c1} +Пусть $G$~--- конечная группа и $H\subseteq G$~--- подгруппа. Тогда +$|H|$ делит $|G|$. +\end{corollary} + +\begin{corollary} \label{c2} +Пусть $G$~--- конечная группа и $g\in G$. Тогда $\ord(g)$ делит +$|G|$. +\end{corollary} + +\begin{proof} +Это вытекает из следствия~\ref{c1} и предложения~2 прошлой лекции. +\end{proof} + +\begin{corollary} \label{c3} +Пусть $G$~--- конечная группа и $g\in G$. Тогда $g^{|G|}=e$. +\end{corollary} + +\begin{proof} +Согласно следствию~\ref{c2}, мы имеем $|G|=\ord(g) \cdot s$, откуда +$g^{|G|}=(g^{\ord(g)})^s=e^s=e$. +\end{proof} + +\begin{corollary} \label{c5} +Пусть $G$~--- группа. Предположим, что $|G|$~--- простое число. +Тогда $G$~--- циклическая группа, порождаемая любым своим +неединичным элементом. +\end{corollary} + +\begin{proof} +Пусть $g\in G$~--- произвольный неединичный элемент. Тогда +циклическая подгруппа $\langle g\rangle$ содержит более одного +элемента и $|\langle g\rangle|$ делит $|G|$ по следствию~\ref{c1}. +Значит, $|\langle g\rangle|=|G|$, откуда $G=\langle g\rangle$. +\end{proof} + +Наряду с левым смежным классом можно определить {\it правый смежный +класс} элемента $g$ группы $G$ по подгруппе $H$: +$$ +Hg=\{hg \mid h\in H\}. +$$ + +Повторяя доказательство теоремы Лагранжа для правых смежных классов, +мы получим, что для конечной группы $G$ число правых смежных классов +по подгруппе $H$ равно числу левых смежных классов и равно +$|G|/|H|$. В то же время равенство $gH=Hg$ выполнено не всегда. +Разумеется, оно выполнено, если группа $G$ абелева. Подгруппы $H$ +(неабелевых) групп $G$, для которых $gH=Hg$ выполнено для любого +$g\in G$, будут изучаться в следующей лекции. + +\begin{definition} +Подгруппа $H$ группы $G$ называется {\it нормальной}, если $gH=Hg$ +для любого $g\in G$. +\end{definition} + +\begin{proposition} +Для подгруппы $H \subseteq G$ следующие условия эквивалентны: + +\vspace{-2mm} +\begin{enumerate} +\item[(1)] +$H$ нормальна; + +\item[(2)] +$gHg^{-1} \subseteq H$ для любого $g \in G$; + +\item[(3)] +$gHg^{-1}=H$ для любого $g\in G$. +\end{enumerate} +\end{proposition} + +\vspace{-6mm} + +\begin{proof} +(1)$\Rightarrow$(2) Пусть $h \in H$ и $g \in G$. Поскольку $gH = +Hg$, имеем $gh = h'g$ для некоторого $h' \in H$. Тогда $ghg^{-1} = +h'gg^{-1} = h' \in H$.\\ +(2)$\Rightarrow$(3) Так как $gHg^{-1} \subseteq H$, остаётся +проверить обратное включение. Для $h \in H$ имеем $h = gg^{-1} h g +g^{-1} = g(g^{-1}hg)g^{-1} \subseteq gHg^{-1}$, поскольку $g^{-1}hg +\in H$ в силу пункта~(2), где вместо $g$ взято $g^{-1}$. + +(3)$\Rightarrow$(1) Для произвольного $g \in G$ в силу (3) имеем $gH += gHg^{-1} g \subseteq Hg$, так что $gH \subseteq Hg$. Аналогично +проверяется обратное включение. +\end{proof} +\vspace{-1mm} + +Условие (2) в этом предложении кажется излишним, но именно его +удобно проверять при доказательстве нормальности подгруппы~$H$. + +Обозначим через $G/H$ множество (левых) смежных классов группы $G$ +по нормальной подгруппе~$H$. На $G/H$ можно определить бинарную +операцию следующим образом: +$$ +(g_1H)(g_2H):=g_1g_2H. +$$ + +Зачем здесь нужна нормальность подгруппы $H$? Для проверки +корректности: заменим $g_1$ и $g_2$ другими представителями $g_1h_1$ +и $g_2h_2$ тех же смежных классов. Нужно проверить, что +$g_1g_2H=g_1h_1g_2h_2H$. Это следует из того, что +$g_1h_1g_2h_2=g_1g_2(g_2^{-1}h_1g_2)h_2$ и $g_2^{-1}h_1g_2$ лежит в +$H$. + +Ясно, что указанная операция на множестве $G/H$ ассоциативна, +обладает нейтральным элементом $eH$ и для каждого элемента $gH$ есть +обратный элемент $g^{-1}H$. + +\begin{definition} +Множество $G/H$ с указанной операцией называется {\it факторгруппой} +группы $G$ по нормальной подгруппе $H$. +\end{definition} + +\begin{example} +Если $G=(\ZZ,+)$ и $H=n\ZZ$, то $G/H$~--- это в точности группа +вычетов $(\ZZ_n,+)$. +\end{example} + +Как представлять себе факторгруппу? В этом помогает теорема о +гомоморфизме. Но прежде чем её сформулировать, обсудим ещё несколько +понятий. + +\begin{definition} +Пусть $G$ и $F$~--- группы. Отображение $\varphi\colon G\to F$ +называется {\it гомоморфизмом}, если +$\varphi(ab)=\varphi(a)\varphi(b)$ для любых $a,b\in G$. +\end{definition} + +\begin{remark} +Подчеркнём, что в этом определении произведение $ab$ берётся в +группе~$G$, в то время как произведение $\varphi(a) \varphi(b)$~--- +в группе~$F$. +\end{remark} + +\begin{lemma} +Пусть $\varphi \colon G \to F$~--- гомоморфизм групп, и пусть $e_G$ +и $e_F$~--- нейтральные элементы групп $G$ и $F$ соответственно. +Тогда: + +\vspace{-2mm} +\begin{enumerate} +\item[(а)] +$\varphi(e_G) = e_F$; + +\item[(б)] +$\varphi(a^{-1})=\varphi(a)^{-1}$ для любого $a\in G$. +\end{enumerate} +\end{lemma} + +\vspace{-5mm} + +\begin{proof} +(а) Имеем $\varphi(e_G)=\varphi(e_Ge_G)=\varphi(e_G)\varphi(e_G)$. +Теперь умножая крайние части этого равенства на $\varphi(e_G)^{-1}$ +(например, слева), получим $e_F = \varphi(e_G)$. + +(б) Имеем $\varphi(a^{-1}) \varphi(a) = \varphi(a^{-1}a) = +\varphi(e_G) = e_F$, откуда $\varphi(a^{-1}) = \varphi(a)^{-1}$. +\end{proof} + +\begin{definition} +Гомоморфизм групп $\varphi\colon G\to F$ называется {\it +изоморфизмом}, если отображение $\varphi$ биективно. +\end{definition} + +\begin{exc} +Пусть $\varphi\colon G\to F$~--- изоморфизм групп. Проверьте, что +обратное отображение $\varphi^{-1}\colon F \to G$ также является +изоморфизмом. +\end{exc} + +\begin{definition} +Группы $G$ и $F$ называют {\it изоморфными}, если между ними +существует изоморфизм. + +Обозначение: $G\cong F$ (или $G \simeq F$). +\end{definition} + +В алгебре группы рассматривают с точностью до изоморфизма: +изоморфные группы считаются \guillemotleft +одинаковыми\guillemotright{}. + +\begin{definition} +С каждым гомоморфизмом групп $\varphi\colon G\to F$ связаны его {\it +ядро} +$$ +\Ker(\varphi)=\{g\in G \mid \varphi(g)=e_F\} +$$ +и {\it образ} +$$ +\Im(\varphi)=\{a\in F \mid \exists g\in G : \varphi(g)=a\}. +$$ +\end{definition} + +Ясно, что $\Ker(\varphi)\subseteq G$ и $\Im(\varphi)\subseteq F$~--- +подгруппы. + +\begin{lemma} +Гомоморфизм групп $\varphi \colon G \to F$ инъективен тогда и только +тогда, когда $\Ker(\varphi) = \{e_G\}$. +\end{lemma} +\vspace{-3mm} +\begin{proof} +Ясно, что если $\varphi$ инъективен, то $\Ker(\varphi) = \lbrace e_G +\rbrace$. Обратно, пусть $g_1, g_2 \in G$ и $\varphi(g_1) = +\varphi(g_2)$. Тогда $g_1^{-1} g_2 \in \Ker(\varphi)$, поскольку +$\varphi(g_1^{-1} g_2) = \varphi(g_1^{-1}) \varphi(g_2) = +\varphi(g_1)^{-1} \varphi (g_2) = e_F$. Отсюда $g_1^{-1}g_2 = e_G$ и +$g_1 = g_2$. +\end{proof} + +\begin{corollary} +Гомоморфизм групп $\varphi\colon G\to F$ является изоморфизмом тогда +и только тогда, когда $\Ker(\varphi)=\{e_G\}$ и $\Im(\varphi)=F$. +\end{corollary} + +\begin{proposition} +Пусть $\varphi \colon G \to F$~--- гомоморфизм групп. Тогда +подгруппа $\Ker(\varphi)$ нормальна в~$G$. +\end{proposition} +\vspace{-3mm} +\begin{proof} +Достаточно проверить, что $g^{-1}hg \in \Ker(\varphi)$ для любых +$g\in G$ и $h \in \Ker(\varphi)$. Это следует из цепочки равенств +$$ +\varphi(g^{-1}hg) = \varphi(g^{-1}) \varphi(h) \varphi(g) = +\varphi(g^{-1}) e_F \varphi(g) = \varphi(g^{-1}) \varphi(g) = +\varphi(g)^{-1} \varphi (g) = e_F. +$$ +\end{proof} + +{\bf Теорема о гомоморфизме}. Пусть $\varphi\colon G\to F$~--- +гомоморфизм групп. Тогда группа $\Im(\varphi)$ изоморфна +факторгруппе $G/\Ker(\varphi)$. + +\begin{proof} +Рассмотрим отображение $\psi \colon G / \Ker(\varphi) \to F$, +заданное формулой $\psi(g\Ker(\varphi)) = \varphi(g)$. Проверка +корректности: равенство $\varphi(gh_1)=\varphi(gh_2)$ для любых +$h_1,h_2\in\Ker(\varphi)$ следует из цепочки +$$ +\varphi(gh_1)=\varphi(g)\varphi(h_1)=\varphi(g)=\varphi(g)\varphi(h_2)=\varphi(gh_2). +$$ +Отображение $\psi$ сюръективно по построению и инъективно в силу +того, что $\varphi(g) = e_F$ тогда и только тогда, когда $g \in \Ker +(\varphi)$ (т.\,е. $g\Ker(\varphi) = \Ker(\varphi)$). Остаётся +проверить, что $\psi$~--- гомоморфизм: +$$ +\psi((g\Ker(\varphi))(g'\Ker(\varphi))) = \psi(gg'\Ker(\varphi)) = +\varphi(gg') = \varphi(g)\varphi(g') = +\psi(g\Ker(\varphi))\psi(g'\Ker(\varphi)). +$$ +\end{proof} + +Тем самым, чтобы удобно реализовать факторгруппу $G/H$, можно найти +такой гомоморфизм $\varphi\colon G\to F$ в некоторую группу~$F$, что +$H = \Ker(\varphi)$, и тогда $G/H \cong \Im(\varphi)$. + +\begin{example} +Пусть $G=(\RR,+)$ и $H=(\ZZ,+)$. Рассмотрим группу +$F=(\CC\setminus\{0\},\times)$ и гомоморфизм +$$ +\varphi\colon G\to F, \quad a\mapsto e^{2\pi\imath a} = \cos (2\pi +a) + i \sin (2\pi a). +$$ +Тогда $\Ker(\varphi)=H$ и факторгруппа $G/H$ изоморфна окружности +$S^1$, рассматриваемой как подгруппа в~$F$, состоящая из комплексных +чисел с модулем~$1$. +\end{example} + +Определим ещё одну важную конструкцию, позволяющую строить новые +группы из имеющихся. + +\begin{definition} +{\it Прямым произведением} групп $G_1, \ldots, G_m$ называется +множество +$$ +G_1\times\ldots\times G_m=\{(g_1,\ldots,g_m) \mid g_1\in G_1,\ldots, +g_m\in G_m\} +$$ +с операцией +$(g_1,\ldots,g_m)(g_1',\ldots,g_m')=(g_1g_1',\ldots,g_mg_m')$. +\end{definition} + +Ясно, что эта операция ассоциативна, обладает нейтральным элементом +$(e_{G_1},\ldots,e_{G_m})$ и для каждого элемента $(g_1,\ldots,g_m)$ +есть обратный элемент $(g_1^{-1},\ldots,g_m^{-1})$. + +\begin{remark} +Группа $G_1\times\ldots\times G_m$ коммутативна в точности тогда, +когда коммутативна каждая из групп $G_1,\ldots, G_m$. +\end{remark} + +\begin{remark} +Если все группы $G_1, \ldots, G_m$ конечны, то $|G_1 \times \ldots +\times G_m| = |G_1| \cdot \ldots \cdot |G_m|$. +\end{remark} + +\begin{definition} +Группа $G$ \textit{раскладывается в прямое произведение} своих подгрупп $H_1, \ldots, H_m$, если отображение $H_1 \times \ldots \times H_M \rightarrow G$, $(h_1, \ldots, h_m) \mapsto h_1 \cdot \ldots \cdot h_m$ является изоморфизмом. +\end{definition} + + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~4, +$\S$~6 и глава~10, $\S$~1) +\bibitem{Ko1} +А.\,И.~Кострикин. Введение в алгебру. Основы алгебры. М.: Наука. +Физматлит, 1994 (глава~4, $\S$~2) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~1, $\S$~4) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава~13, $\S$~58, 60) +\end{thebibliography} + + +\end{document} diff --git a/algebra/tex/algebra_03_[18.04.2016].tex b/algebra/tex/algebra_03_[18.04.2016].tex new file mode 100644 index 0000000..84dbea2 --- /dev/null +++ b/algebra/tex/algebra_03_[18.04.2016].tex @@ -0,0 +1,544 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exc}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция 3} + +\medskip + +{\it Факторизация по +сомножителям. Конечно порождённые и свободные абелевы группы. Подгруппы +свободных абелевых групп.} + +\medskip + +Следующий результат связывает конструкции факторгруппы и прямого +произведения. + +{\bf Теорема о факторизации по сомножителям}. \ Пусть $H_1, \ldots, +H_m$~--- нормальные подгруппы в группах $G_1, \ldots, G_m$ +соответственно. Тогда $H_1 \times \ldots \times H_m$~--- нормальная +подгруппа в $G_1 \times \ldots \times G_m$ и имеет место изоморфизм +групп +$$ +(G_1 \times \ldots \times G_m) / (H_1 \times \ldots \times H_m) +\cong G_1 / H_1 \times \ldots \times G_m / H_m. +$$ + +\begin{proof} +Прямая проверка показывает, что $H_1\times\ldots\times H_m$~--- +нормальная подгруппа в $G_1\times\ldots\times G_m$. Требуемый +изоморфизм устанавливается отображением +$$ +(g_1,\ldots,g_m)(H_1\times\ldots\times H_m)\mapsto +(g_1H_1,\ldots,g_mH_m). +$$ +\end{proof} + +\begin{theorem} +Пусть $n=ml$~--- разложение натурального числа $n$ на два взаимно +простых множителя. Тогда имеет место изоморфизм групп +$$ +\ZZ_n\cong \ZZ_m\times\ZZ_l. +$$ +\end{theorem} + +\begin{proof} +Рассмотрим отображение +$$ +\varphi\colon \ZZ_n\to \ZZ_m\times\ZZ_l, \quad k \ (\text{mod}\ n) +\mapsto (k\ (\text{mod}\ m), k\ (\text{mod}\ l)). +$$ +Поскольку $m$ и $l$ делят~$n$, отображение $\varphi$ определено +корректно. Ясно, что $\varphi$~--- гомоморфизм. Далее, если $k$ +переходит в нейтральный элемент $(0,0)$, то $k$ делится и на $m$, и +на $l$, а~значит, делится на $n$ в силу взаимной простоты $m$ и~$l$. +Отсюда следует, что гомоморфизм $\varphi$ инъективен. Поскольку +множества $\ZZ_n$ и $\ZZ_m\times\ZZ_l$ содержат одинаковое число +элементов, отображение $\varphi$ биективно. +\end{proof} + +\begin{corollary} \label{corpr} +Пусть $n \geqslant 2$~--- натуральное число и $n=p_1^{k_1}\ldots +p_s^{k_s}$~--- его разложение в произведение простых множителей +\textup(где $p_i \ne p_j$ при $i \ne j$\textup). Тогда имеет место +изоморфизм групп +$$ +\ZZ_n\cong\ZZ_{p_1^{k_1}}\times\ldots\times\ZZ_{p_s^{k_s}}. +$$ +\end{corollary} + +Всюду в этой и следующей лекции $(A,+)$~--- абелева группа с +аддитивной формой записи операции. Для произвольного элемента $a\in +A$ и целого числа $s$ положим +$$ +sa = +\begin{cases} +\underbrace{a + \ldots + a}_s, & \text{ если } s > 0; \\ +0, & \text{ если } s = 0; \\ +\underbrace{(-a) + \ldots + (-a)}_{|s|}, & \text{ если } s < 0. +\end{cases} +$$ + +\begin{definition} +Абелева группа $A$ называется {\it конечно порождённой}, если +найдутся такие элементы $a_1,\ldots,a_n\in A$, что всякий элемент +$a\in A$ представим в виде $a=s_1a_1 + \ldots + s_na_n$ для +некоторых целых чисел $s_1, \ldots, s_n$. При этом элементы $a_1, +\ldots, a_n$ называются {\it порождающими} или {\it образующими} +группы~$A$. +\end{definition} + +\begin{remark} +Всякая конечно порождённая группа конечна или счётна. +\end{remark} + +\begin{remark} +Всякая конечная группа является конечно порождённой. +\end{remark} + +\begin{definition} +Конечно порождённая абелева группа $A$ называется {\it свободной}, +если в ней существует {\it базис}, т.\,е. такой набор элементов +$a_1,\ldots, a_n$, что каждый элемент $a\in A$ единственным образом +представим в виде $a=s_1a_1 + \ldots + s_na_n$, где $s_1, \ldots, +s_n \in \ZZ$. При этом число $n$ называется {\it рангом} свободной +абелевой группы $A$ и обозначается $\rk\,A$. +\end{definition} + +\begin{example} +Абелева группа $\ZZ^n:=\{(c_1,\ldots,c_n) \mid c_i\in\ZZ\}$ является +свободной с базисом +$$ +\begin{aligned} +e_1 &= (1,0,\ldots,0), \\ +e_2 &= (0,1,\ldots,0),\\ + &\ldots \\ +e_n &= (0,0,\ldots,1). +\end{aligned} +$$ +Этот базис называется {\it стандартным}. В группе $\ZZ^n$ можно +найти и много других базисов. Ниже мы все их опишем. +\end{example} + +\begin{proposition} +Ранг свободной абелевой группы определён корректно, т.\,е. любые два +её базиса содержат одинаковое число элементов. +\end{proposition} + +\begin{proof} +Пусть $a_1, \ldots, a_n$ и $b_1, \ldots, b_m$~--- два базиса +группы~$A$. Предположим, что $n < m$. Элементы $b_1, \ldots, b_m$ +однозначно разлагаются по базису $a_1, \ldots, a_n$, поэтому мы +можем записать +$$ +\begin{aligned} +b_1 &= s_{11}a_1 + s_{12}a_2 + \ldots + s_{1n}a_n, \\ +b_2 &= s_{21}a_1 + s_{22}a_2 + \ldots + s_{2n}a_n,\\ + &\ldots \\ +b_m &= s_{m1}a_1 + s_{m2}a_2 + \ldots + s_{mn}a_n, +\end{aligned} +$$ +где все коэффициенты $s_{ij}$~--- целые числа. Рассмотрим +прямоугольную матрицу $S = (s_{ij})$ размера $m \times n$. Так как +$n < m$, то ранг этой матрицы не превосходит~$n$, а~значит, строки +этой матрицы линейно зависимы над~$\QQ$. Домножая коэффициенты этой +зависимости на наименьшее общее кратное их знаменателей, мы найдём +такие целые $s_1, \ldots, s_m$, из которых не все равны нулю, что +$s_1 b_1 + \ldots + s_m b_m=0$. Поскольку $0 = 0b_1 + \ldots + +0b_m$, это противоречит однозначной выразимости элемента $0$ через +базис $b_1, \ldots, b_m$. +\end{proof} + +\begin{proposition} +Всякая свободная абелева группа ранга $n$ изоморфна группе $\ZZ^n$. +\end{proposition} + +\begin{proof} +Пусть $A$~--- свободная абелева группа, и пусть $a_1,\ldots,a_n$~--- +её базис. Рассмотрим отображение +$$\varphi \colon \ZZ^n \to A, \quad (s_1, \ldots, s_n) +\mapsto s_1a_1 + \ldots + s_na_n. +$$ +Легко видеть, что $\varphi$~--- гомоморфизм. Так как всякий элемент +$a \in A$ представим в виде $s_1a_1 + \ldots + s_na_n$, где $s_1, +\ldots, s_n \in \ZZ$, то $\varphi$ сюръективен. Из единственности +такого представления следует инъективность~$\varphi$. Значит, +$\varphi$~--- изоморфизм. +\end{proof} + +Пусть $e_1', \ldots, e_n'$~--- некоторый набор элементов из $\ZZ^n$. +Выразив эти элементы через стандартный базис $e_1, \ldots, e_n$, мы +можем записать +$$ +(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C, +$$ +где $C$~--- целочисленная квадратная матрица порядка~$n$. + +\begin{proposition} +Элементы $e_1', \ldots, e_n'$ составляют базис группы $\ZZ^n$ тогда +и только тогда, когда $\det C = \pm 1$. +\end{proposition} + +\begin{proof} +Предположим сначала, что $e'_1, \ldots, e'_n$~--- базис. Тогда +элементы $e_1, \ldots, e_n$ через него выражаются, поэтому $(e_1, +\ldots, e_n) = (e'_1, \ldots, e'_n) D$ для некоторой целочисленной +квадратной матрицы $D$ порядка~$n$. Но тогда $(e_1, \ldots, e_n) = +(e_1, \ldots, e_n)CD$, откуда $CD = E_n$, где $E_n$~--- единичная +матрица порядка~$n$. Значит, $(\det C)(\det D) = 1$. Учитывая, что +$\det C$ и $\det D$~--- целые числа, мы получаем $\det C = \pm 1$. + +Обратно, пусть $\det C = \pm 1$. Тогда матрица $C^{-1}$ является +целочисленной, а соотношение $(e_1, \ldots, e_n) = (e'_1, \ldots, +e'_n)C^{-1}$ показывает, что элементы $e_1, \ldots, e_n$ выражаются +через $e'_1, \ldots, e'_n$. Но $e_1, \ldots, e_n$~--- базис, поэтому +элементы $e'_1, \ldots, e'_n$ порождают группу~$\ZZ^n$. Осталось +доказать, что всякий элемент из $\ZZ^n$ однозначно через них +выражается. Предположим, что $s'_1e'_1 + \ldots + s'_ne'_n = +s''_1e'_1 + \ldots + s''_n e'_n$ для некоторых целых чисел $s'_1, +\ldots, s'_n, s''_1, \ldots, s''_n$. Мы можем это переписать в +следующем виде: +$$ +(e'_1, \ldots, e'_n) +\begin{pmatrix} s'_1 \\ \vdots \\ s'_n \end{pmatrix} = +(e'_1, \ldots, e'_n) +\begin{pmatrix} s''_1 \\ \vdots \\ s''_n \end{pmatrix}. +$$ +Учитывая, что $(e'_1, \ldots, e'_n) = (e_1, \ldots, e_n)C$ и что +$e_1, \ldots, e_n$~--- это базис, получаем +$$ +C \begin{pmatrix} s'_1 \\ \vdots \\ s'_n \end{pmatrix} = C +\begin{pmatrix} s''_1 \\ \vdots \\ s''_n \end{pmatrix}. +$$ +Домножая это равенство слева на~$C^{-1}$, окончательно получаем +$$ +\begin{pmatrix} s'_1 \\ \vdots \\ s'_n \end{pmatrix} = +\begin{pmatrix} s''_1 \\ \vdots \\ s''_n \end{pmatrix}. +$$ +\end{proof} + +\begin{theorem} +Всякая подгруппа $N$ свободной абелевой группы $L$ ранга $n$ +является свободной абелевой группой ранга $\leqslant n$. +\end{theorem} + +\begin{proof} +Воспользуемся индукцией по $n$. При $n=0$ доказывать нечего. Пусть +$n>0$ и $e_1,\ldots,e_n$~--- базис группы $L$. Рассмотрим в $L$ +подгруппу +$$ +L_1 = \langle e_1,\ldots,e_{n-1}\rangle : = \ZZ e_1 + \ldots + \ZZ +e_{n-1}. +$$ +Это свободная абелева группа ранга $n-1$. По предположению индукции +подгруппа $N_1:=N\cap L_1 \subseteq L_1$ является свободной абелевой +группой ранга $m \leqslant n-1$. Зафиксируем в $N_1$ базис $f_1, +\ldots, f_m$. + +Рассмотрим отображение +$$ +\varphi \colon N \to \ZZ, \quad s_1e_1 + \ldots + s_ne_n \mapsto +s_n. +$$ +Легко видеть, что $\varphi$~--- гомоморфизм и что $\Ker \varphi = +N_1$. Далее, $\Im \varphi$~--- подгруппа в~$\ZZ$, по предложению~1 +из лекции~1 она имеет вид $k \ZZ$ для некоторого целого $k \geqslant +0$. Если $k=0$, то $N \subseteq L_1$, откуда $N = N_1$ и всё +доказано. Если $k>0$, то пусть $f_{m+1}$~--- какой-нибудь элемент из +$N$, для которого $\varphi(f_{m+1}) = k$. Докажем, что $f_1, \ldots, +f_m, f_{m+1}$~--- базис в~$N$. Пусть $f \in N$~--- произвольный +элемент, и пусть $\varphi(f) = sk$, где $s \in \ZZ$. Тогда +$\varphi(f - sf_{m+1}) = 0$, откуда $f - sf_{m+1} \in N_1$ и, +следовательно, $f - sf_{m+1} = s_1 f_1 + \ldots + s_m f_m$ для +некоторых $s_1, \ldots, s_m \in \ZZ$. Значит, $f = s_1 f_1 + \ldots ++ s_m f_m + s f_{m+1}$ и элементы $f_1, \ldots, f_m, f_{m+1}$ +порождают группу~$N$. Осталось доказать, что они образуют базис +в~$N$. Предположим, что +$$ +s_1 f_1 + \ldots + s_m f_m + s_{m+1} f_{m+1} = s'_1 f_1 + \ldots + +s'_m f_m + s'_{m+1} f_{m+1} +$$ +для некоторых целых чисел $s_1, \ldots, s_m, s_{m+1}, s'_1, \ldots, +s'_m, s'_{m+1}$. Рассмотрев образ обеих частей этого равенства при +гомоморфизме~$\varphi$, получаем $s_{m+1} k = s'_{m+1} k$, откуда +$s_{m+1} = s'_{m+1}$ и +$$ +s_1 f_1 + \ldots + s_m f_m = s'_1 f_1 + \ldots + s'_m f_m. +$$ +Но $f_1, \ldots, f_m$~--- базис в~$N_1$, поэтому $s_1 = s'_1$, +\ldots, $s_m = s'_m$. +\end{proof} + + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~9, +\S\,1) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~2, \S\,3) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава~13, \S\,60) +\end{thebibliography} +\end{document} diff --git a/algebra/tex/algebra_04_[25.04.2016].tex b/algebra/tex/algebra_04_[25.04.2016].tex new file mode 100644 index 0000000..92e9876 --- /dev/null +++ b/algebra/tex/algebra_04_[25.04.2016].tex @@ -0,0 +1,644 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} +\DeclareMathOperator{\Tor}{\mathrm{Tor}} +%\newcommand{\Tor}{\mathop{\mathrm{Tor}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +%\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exc}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция 4} + +\medskip + +{\it Теорема о согласованных базисах. Алгоритм +приведения целочисленной матрицы к диагональному виду. Строение конечно порождённых абелевых групп. Конечные абелевы группы. } % Экспонента конечной абелевой группы.} + +В~теории абелевых групп операция прямого произведения конечного +числа групп обычно называется \textit{прямой суммой} и обозначается +символом~$\oplus$, так что пишут $A_1 \oplus A_2 \oplus \ldots +\oplus A_n$ вместо $A_1 \times A_2 \times \ldots \times A_n$. + +Дадим более точное описание подгрупп свободных абелевых групп. + +\smallskip + +{\bf Теорема о согласованных базисах.}\ Для всякой подгруппы $N$ +свободной абелевой группы $L$ ранга $n$ найдётся такой базис $e_1, +\ldots, e_n$ группы $L$ и такие натуральные числа $u_1, \ldots, +u_m$, $m \leqslant n$, что $u_1 e_1, \ldots, u_m e_m$~--- базис +группы $N$ и $u_i | u_{i+1}$ при $i = 1, \ldots, m-1$. + +\smallskip + +\begin{remark} +Числа $u_1, \ldots, u_p$, фигурирующие в теореме о согласованных +базисах, называются {\it инвариантными множителями} подгруппы $N +\subseteq L$. Можно показать, что они определены по подгруппе +однозначно. +\end{remark} + +\begin{corollary} +В~условиях теоремы о согласованных базисах имеет место изоморфизм +$$ +L / N \cong \ZZ_{u_1} \times \ldots \times \ZZ_{u_m} \times +\underbrace{\ZZ \times \ldots \times \ZZ}_{n - m}. +$$ +\end{corollary} + +\begin{proof} +Рассмотрим изоморфизм $L \cong \ZZ^n = \underbrace{\ZZ \times \ldots +\times \ZZ}_n$, сопоставляющий произвольному элементу $s_1 e_1 + +\ldots + s_n e_n \in L$ набор $(s_1, \ldots, s_n) \in \ZZ^n$. При +этом изоморфизме подгруппа $N \subseteq L$ отождествляется с +подгруппой +$$ +u_1 \ZZ \times \ldots \times u_m \ZZ \times \underbrace{\lbrace 0 +\rbrace \times \ldots \times \lbrace 0 \rbrace}_{n-m} \subseteq +\ZZ^n. +$$ +Теперь требуемый результат получается применением теоремы о +факторизации по сомножителям. +\end{proof} + +Теперь вернемся к доказательству теоремы о согласованных базисов. +Однако это требует некоторой подготовки. + +\begin{definition} +{\it Целочисленными элементарными преобразованиями строк} матрицы +называются преобразования следующих трёх типов: + +1) прибавление к одной строке другой, умноженной на целое число; + +2) перестановка двух строк; + +3) умножение одной строки на $-1$. + +Аналогично определяются {\it целочисленные элементарные +преобразования столбцов} матрицы. +\end{definition} + +Прямоугольную матрицу $C=(c_{ij})$ размера $n\times m$ назовём {\it +диагональной} и обозначим $\text{diag}(u_1,\ldots,u_p)$, если +$c_{ij}=0$ при $i\ne j$ и $c_{ii}=u_i$ при $i=1,\ldots,p$, где +$p=\text{min}(n,m)$. + +\begin{proposition} \label{palg} +Всякую прямоугольную целочисленную матрицу $C=(c_{ij})$ с помощью +элементарных преобразований строк и столбцов можно привести к виду +$\text{diag}(u_1,\ldots,u_p)$, где $u_1,\ldots,u_p \geqslant 0$ и +$u_i|u_{i+1}$ при $i=1,\ldots,p-1$. +\end{proposition} + +\begin{proof} +Если $C=0$, то доказывать нечего. Если $C\ne 0$, но $c_{11}=0$, то +переставим строки и столбцы и получим $c_{11}\ne 0$. Умножив, если +нужно, первую строку на $-1$, добьёмся условия $c_{11}>0$. Теперь +будем стремиться уменьшить~$c_{11}$. + +Если какой-то элемент $c_{i1}$ не делится на $c_{11}$, то разделим с +остатком: $c_{i1}=qc_{11}+r$. Вычитая из $i$-й строки $1$-ю строку, +умноженную на~$q$, и затем переставляя $1$-ю и $i$-ю строки, +уменьшаем~$c_{11}$. Повторяя эту процедуру, в~итоге добиваемся, что +все элементы $1$-й строки и $1$-го столбца делятся на $c_{11}$. + +Если какой-то $c_{ij}$ не делится на $c_{11}$, то поступаем +следующим образом. Вычтя из $i$-й строки $1$-ю строку с подходящим +коэффициентом, добьёмся $c_{i1}=0$. После этого прибавим к $1$-й +строке $i$-ю строку. При этом $c_{11}$ не изменится, а $c_{1j}$ +перестанет делиться на $c_{11}$, и мы вновь сможем уменьшить +$c_{11}$. + +В~итоге добьёмся того, что все элементы делятся на~$c_{11}$. После +этого обнулим все элементы $1$-й строки и $1$-го столбца, начиная со +вторых, и продолжим процесс с меньшей матрицей. +\end{proof} + +Теперь мы готовы доказать теорему о согласованных базисах. + +\begin{proof}[Доказательство теоремы о согласованных базисах] +Мы знаем, что $N$ является свободной абелевой группой ранга $m +\leqslant n$. Пусть $e_1, \ldots, e_n$~--- базис в $L$ и $f_1, +\ldots, f_m$~--- базис в~$N$. Тогда $(f_1, \ldots, f_m) = (e_1, +\ldots, e_n)C$, где $C$~--- целочисленная матрица размера $n \times +m$ и ранга~$m$. Покажем, что целочисленные элементарные +преобразования строк (столбцов) матрицы $C$~--- это в точности +элементарные преобразования над базисом в~$L$ (в~$N$). Для этого +рассмотрим сначала случай строк. Заметим, что каждое из +целочисленных элементарных преобразований строк реализуется при +помощи умножения матрицы $C$ слева на квадратную матрицу~$P$ +порядка~$n$, определяемую следующим образом: + +(1) в случае прибавления к $i$-й строке $j$-й, умноженной на целое +число~$z$, в матрице~$P$ на диагонали стоят единицы, на $(ij)$-м +месте~--- число~$z$, а на остальных местах~--- нули; + +(2) в случае перестановки $i$-й и $j$-й строк имеем $p_{ij} = p_{ji} += 1$, $p_{kk} = 1$ при $k \ne i,j$, а на остальных местах стоят +нули; + +(3) в случае умножения $i$-й строки на $-1$ имеем $p_{ii} = -1$, +$p_{jj} = 1$ при $j \ne i$, а на остальных местах стоят нули. + +Теперь заметим, что равенство $(f_1, \ldots, f_m) = (e_1, \ldots, +e_n)C$ эквивалентно равенству $(f_1, \ldots, f_m) = (e_1, \ldots, +e_n)P^{-1} PC$. Таким образом, базис $(f_1, \ldots, f_m)$ выражается +через новый базис $(e'_1, \ldots, e'_n) := (e_1, \ldots, e_n)P^{-1}$ +при помощи матрицы~$PC$. + +В случае столбцов всё аналогично: каждое из целочисленых +элементарных преобразований столбцов реализуется при помощи +умножения матрицы $C$ справа на некоторую квадратную матрицу $Q$ +порядка~$m$ (определяемую почти так же, как~$P$). В~этом случае +имеем $(f_1, \ldots, f_m)Q = (e_1, \ldots, e_n)CQ$, так что новый +базис $(f'_1, \ldots, f'_m) := (f_1, \ldots, f_m)Q$ выражается через +$(e_1, \ldots, e_n)$ при помощи матрицы $CQ$. + +Воспользовавшись предложением~\ref{palg}, мы можем привести матрицу +$C$ при помощи целочисленных элементарных преобразований строк и +столбцов к диагональному виду~$C'' = \text{diag}(u_1, \ldots, u_m)$, +где $u_i | u_{i+1}$ для всех $i = 1, \ldots, m-1$. С~учётом +сказанного выше это означает, что для некоторого базиса $e''_1, +\ldots, e''_n$ в~$L$ и некоторого базиса $f''_1, \ldots, f''_m$ +в~$N$ справедливо соотношение $(f''_1, \ldots, f''_m) = (e''_1, +\ldots, e''_n) C''$. Иными словами, $f''_i = u_i e''_i$ для всех $i += 1, \ldots, m$, а~это и требовалось. +\end{proof} + +\begin{definition} +Конечная абелева группа $A$ называется {\it примарной}, если её +порядок равен $p^k$ для некоторого простого числа~$p$. +\end{definition} + +\begin{remark} +В общем случае (когда группы не предполагаются коммутативными) +конечная группа $G$ с~условием $|G| = p^k$ ($p$~--- простое) +называется {\it $p$-группой}. +\end{remark} + +Следствие~1 лекции~3 показывает, что каждая конечная циклическая +группа разлагается в прямую сумму примарных циклических подгрупп. + +\begin{theorem} \label{traz} +Всякая конечно порождённая абелева группа $A$ разлагается в прямую +сумму примарных и бесконечных циклических подгрупп, т.\,е. +\begin{equation} \label{eqn} +A \cong \ZZ_{p_1^{k_1}} \oplus \ldots \oplus \ZZ_{p_s^{k_s}} \oplus +\ZZ \oplus \ldots \oplus \ZZ, +\end{equation} +где $p_1, \ldots, p_s$~--- простые числа \textup(не обязательно +попарно различные\textup) и $k_1, \ldots, k_s \in \NN$. Кроме того, +число бесконечных циклических слагаемых, а~также число и порядки +примарных циклических слагаемых определено однозначно. +\end{theorem} + +Сразу выделим некоторые следствия из этой теоремы. + +\begin{corollary} +Абелева группа $A$ является конечно порождённой тогда и только тогда, когда $A$ разлагается в прямую сумму циклических подгрупп. +\end{corollary} + +\begin{proof} +В одну сторону следует из теоремы. В другую сторону: пусть $A = A_1 \oplus \ldots \oplus A_m$, где $A_i$~--- циклическая подгруппа, то есть $A_i = \langle a_i \rangle$, $a_i \in A$. Тогда $\{a_1, \ldots, a_m \}$ --- набор порождающих элементов для группы $A$. +\end{proof} + +\begin{corollary} +Всякая конечная абелева группа разлагается в прямую сумму примарных +циклических подгрупп, причём число и порядки примарных циклических +слагаемых определено однозначно. +\end{corollary} + +Теперь преступим к доказательству самой теоремы. + +\begin{proof} +Пусть $a_1,\ldots,a_n$~--- конечная система порождающих группы $A$. +Рассмотрим гомоморфизм +$$ +\varphi \colon \ZZ^n \to A, \quad (s_1, \ldots, s_n) \mapsto s_1 a_1 ++ \ldots + s_n a_n. +$$ +Ясно, что $\varphi$ сюръективен. Тогда по теореме о гомоморфизме +получаем $A \cong \ZZ^n / N$, где $N = \Ker \varphi$. По теореме о +согласованных базисах существует такой базис $e_1, \ldots, e_n$ +группы $\ZZ^n$ и такие натуральные числа $u_1, \ldots, u_m$, $m +\leqslant n$, что $u_1 e_1, \ldots, u_m e_m$~--- базис группы~$N$. +Тогда имеем +$$ +\begin{array}{ccccccccccccc} +L &=& \langle e_1 \rangle &\oplus & \ldots & \oplus & \langle e_m +\rangle & \oplus & \langle e_{m+1} \rangle & \oplus & \ldots & +\oplus & \langle e_n \rangle, \\ +N &=& \langle u_1e_1 \rangle & \oplus & \ldots & \oplus & \langle +u_m e_m \rangle &\oplus & \lbrace 0 \rbrace & \oplus & \ldots & +\oplus & \lbrace 0 \rbrace. +\end{array} +$$ +Применяя теорему о факторизации по сомножителям, мы получаем +$$ +\ZZ^n / N \cong \ZZ / u_1 \ZZ \oplus \ldots \oplus \ZZ / u_m \ZZ +\oplus \underbrace{\ZZ / \lbrace 0 \rbrace \oplus \ldots \oplus \ZZ +/ \lbrace 0 \rbrace}_{n-m} \cong \ZZ_{u_1} \oplus \ldots \oplus +\ZZ_{u_m} \oplus \underbrace{\ZZ \oplus \ldots \oplus \ZZ}_{n-m}. +$$ +Чтобы добиться разложения~(\ref{eqn}), остаётся представить каждое +из циклических слагаемых $\ZZ_{u_i}$ в виде прямой суммы примарных +циклических подгрупп, воспользовавшись следствием~1 из лекции~3. + +Перейдём к доказательству единственности разложения~(\ref{eqn}). +Пусть $\langle c \rangle_q$ обозначает циклическую группу порядка +$q$ с порождающей~$c$. Пусть имеется разложение +\begin{equation} \label{eqn2} +A = \langle c_1\rangle_{p_1^{k_1}} \oplus \ldots \oplus \langle c_s +\rangle_{p_s^{k_s}} \oplus \langle c_{s+1} \rangle_{\infty} \oplus +\ldots \oplus \langle c_{s+t} \rangle_{\infty} +\end{equation} +(заметьте, что мы просто переписали в другом виде правую часть +соотношения~(\ref{eqn})). Рассмотрим в~$A$ так называемую {\it +подгруппу кручения} +$$ +\Tor A := \{ a \in A \mid ma=0 \ \text{для некоторого} \ m \in \NN +\}. +$$ +Иными словами, $\Tor A$~--- это подгруппа в~$A$, состоящая из всех +элементов конечного порядка. Выделим эту подгруппу в +разложении~(\ref{eqn2}). Рассмотрим произвольный элемент $a \in A$. +Он представим в виде +$$ +a = r_1c_1 + \ldots + r_m c_m + r_{m+1} c_{m+1} + \ldots + r_n c_n +$$ +для некоторых целых чисел $r_1, \ldots, r_n$. Легко видеть, что $a$ +имеет конечный порядок тогда и только тогда, когда $r_{m+1} = \ldots += r_m = 0$. Отсюда получаем, что +\begin{equation} \label{eqn3} +\Tor A = \langle c_1 \rangle_{p_1^{k_1}} \oplus \ldots \oplus +\langle c_s \rangle_{p_s^{k_s}}. +\end{equation} +Применяя опять теорему о факторизации по сомножителям, мы получаем +$A / \Tor A \cong \ZZ^t$, где $t$ --- количество бесконечных +циклических подгрупп в разложении~(\ref{eqn}). Отсюда следует, +что число $t$ однозначно выражается в терминах самой группы~$A$ +(как ранг свободной абелевой группы $A / \Tor A$). Значит, $t$ +не зависит от разложения~(\ref{eqn2}). + +Однозначность числа и порядков примарных циклических +групп будет доказана на следующей лекции. + +\end{proof} + +%Далее, для каждого простого числа $p$ определим в $A$ {\it подгруппу +%$p$-кручения} +%\begin{equation} \label{eqn4} +%\Tor_p A := \{ a\in A \mid p^ka=0 \ \text{для некоторого} \ k \in +%\NN \}. +%\end{equation} +%Ясно, что $\Tor_p A \subset \Tor A$. Выделим подгруппу $\Tor_p A$ в +%разложении~(\ref{eqn3}). Легко видеть, что $\langle c_i +%\rangle_{p_i^{k_i}} \subseteq \Tor_p A$ для всех $i$ с условием $p_i +%= p$. Если же $p_i \ne p$, то по следствию~2 из теоремы Лагранжа +%(см. лекцию~1) порядок любого ненулевого элемента $x \in \langle c_i +%\rangle_{p_i^{k_i}}$ является степенью числа~$p_i$, а~значит, $p^k x +%\ne 0$ для всех $k \in \NN$. Отсюда следует, что $\Tor_p A$ является +%суммой тех конечных слагаемых в разложении~(\ref{eqn3}), порядки +%которых суть степени~$p$. Поэтому доказательство теперь сводится к +%случаю, когда $A$~--- примарная группа. +% +%Пусть $|A|=p^k$ и +%$$ +%A = \langle c_1\rangle_{p^{k_1}}\oplus\ldots\oplus\langle +%c_r\rangle_{p^{k_r}}, \quad k_1+\ldots+k_r=k. +%$$ +%Докажем индукцией по~$k$, что набор чисел $k_1, \ldots, k_r$ не +%зависит от разложения. +% +%Если $k = 1$, то $|A| = p$, но тогда $A \cong \ZZ_p$ по следствию~5 +%из теоремы Лагранжа (см. лекцию~1). Пусть теперь $k > 1$. Рассмотрим +%подгруппу $pA: = \{ pa \mid a \in A \}$. В~терминах +%равенства~(\ref{eqn4}) имеем +%$$ +%pA = \langle pc_1 \rangle_{p^{k_1-1}} \oplus \ldots \oplus \langle +%pc_r\rangle_{p^{k_r-1}}. +%$$ +%В частности, при $k_i = 1$ соответствующее слагаемое равно $\lbrace +%0 \rbrace$ (и тем самым исчезает). Так как $|pA| = p^{k - r} < p^k$, +%то по предположению индукции группа $pA$ разлагается в прямую сумму +%примарных циклических подгрупп однозначно с точностью до порядка +%слагаемых. Следовательно, ненулевые числа в наборе $k_1 - 1, \ldots, +%k_r-1$ определены однозначно (с точностью до перестановки). Отсюда +%мы находим значения $k_i$, отличные от~$1$. Количество тех~$k_i$, +%которые равны~$1$, однозначно восстанавливается из условия $k_1 + +%\ldots + k_r = k$. +%\end{proof} + +%Заметим, что теорема о согласованных базисах даёт нам другое +%разложение конечной абелевой группы~$A$: +%\begin{equation} \label{eqn5} +%A=\ZZ_{u_1}\oplus\ldots\oplus\ZZ_{u_m}, \quad \text{где} \ +%u_i|u_{i+1} \ \text{при} \ i = 1, \ldots, m-1. +%\end{equation} +%Числа $u_1, \ldots, u_m$ называют {\it инвариантными множителями} +%конечной абелевой группы~$A$. +% +%\begin{definition} +%{\it Экспонентой} конечной абелевой группы $A$ называется число +%$\exp A$, равное наименьшему общему кратному порядков элементов +%из~$A$. +%\end{definition} +% +%\begin{remark} +%Легко видеть, что $\exp A = \min \lbrace n \in \NN \mid ma = 0 \ +%\text{для всех} \ a \in A \rbrace$. +%\end{remark} +% +%\begin{proposition} +%Экспонента конечной абелевой группы~$A$ равна её последнему +%инвариантному множителю~$u_m$. +%\end{proposition} +% +%\begin{proof} +%Обратимся к разложению~(\ref{eqn5}). Так как $u_i | u_m$ для всех $i +%= 1, \ldots, m$, то $u_ma=0$ для всех $a \in A$. Это означает, что +%$\exp A \leqslant u_m$ (и тем самым $\exp A \, | u_m$). С~другой +%стороны, в $A$ имеется циклическая подгруппа порядка $u_m$. Значит, +%$\exp A \geqslant u_m$. +%\end{proof} +% +%\begin{corollary} +%Конечная абелева группа $A$ является циклической тогда и только +%тогда, когда $\exp A =\nobreak |A|$. +%\end{corollary} +% +%\begin{proof} +%Группа $A$ является циклической тогда и только тогда, когда в +%разложении~(\ref{eqn5}) присутствует только одно слагаемое, т.\,е. +%$A = \ZZ_{u_m}$ и $|A| = u_m$. +%\end{proof} + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~9, +$\S$~1) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~2, $\S$~3) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава~13, $\S$~60) +\end{thebibliography} + +\end{document} diff --git a/algebra/tex/algebra_05_[29.04.2016].tex b/algebra/tex/algebra_05_[29.04.2016].tex new file mode 100644 index 0000000..385f97a --- /dev/null +++ b/algebra/tex/algebra_05_[29.04.2016].tex @@ -0,0 +1,677 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} +\DeclareMathOperator{\Tor}{\mathrm{Tor}} +%\newcommand{\Tor}{\mathop{\mathrm{Tor}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +%\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exercise}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция 5} + +\medskip + +{\it Строение конечно порождённых абелевых груп (продолжение). Экспонента +конечной абелевой группы. Действие группы на множестве. Орбиты и стабилизаторы.} +%Транзитивные и свободные действия. Три действия группы на себе. +%Теорема Кэли. Классы сопряжённости.} + +Продолжим доказательство теоремы с прошлой лекции. + +\begin{theorem} \label{traz} +Всякая конечно порождённая абелева группа $A$ разлагается в прямую +сумму примарных и бесконечных циклических подгрупп, т.\,е. +\begin{equation} \label{eqn} +A \cong \ZZ_{p_1^{k_1}} \oplus \ldots \oplus \ZZ_{p_s^{k_s}} \oplus +\ZZ \oplus \ldots \oplus \ZZ, +\end{equation} +где $p_1, \ldots, p_s$~--- простые числа \textup(не обязательно +попарно различные\textup) и $k_1, \ldots, k_s \in \NN$. Кроме того, +число бесконечных циклических слагаемых, а~также число и порядки +примарных циклических слагаемых определено однозначно. +\end{theorem} + +\begin{proof} +На прошлой лекции мы доказали существование разложения и то, что количество +бесконечных циклических групп $\ZZ$ определено однозначно. Для этого мы вводили +понятие \textit{подгруппы кручения}: +\begin{equation} \label{eqn3} +\Tor A = \langle c_1 \rangle_{p_1^{k_1}} \oplus \ldots \oplus +\langle c_s \rangle_{p_s^{k_s}}. +\end{equation} +Далее, для каждого простого числа $p$ определим в $A$ {\it подгруппу +$p$-кручения} +\begin{equation} \label{eqn4} +\Tor_p A := \{ a\in A \mid p^ka=0 \ \text{для некоторого} \ k \in +\NN \}. +\end{equation} +Ясно, что $\Tor_p A \subset \Tor A$. Выделим подгруппу $\Tor_p A$ в +разложении~(\ref{eqn3}). Легко видеть, что $\langle c_i +\rangle_{p_i^{k_i}} \subseteq \Tor_p A$ для всех $i$ с условием $p_i += p$. Если же $p_i \ne p$, то по следствию~2 из теоремы Лагранжа +(см. лекцию~2) порядок любого ненулевого элемента $x \in \langle c_i +\rangle_{p_i^{k_i}}$ является степенью числа~$p_i$, а~значит, $p^k x +\ne 0$ для всех $k \in \NN$. Отсюда следует, что $\Tor_p A$ является +суммой тех конечных слагаемых в разложении~(\ref{eqn3}), порядки +которых суть степени~$p$. Поэтому доказательство теперь сводится к +случаю, когда $A$~--- примарная группа. + +Пусть $|A|=p^k$ и +$$ +A = \langle c_1\rangle_{p^{k_1}}\oplus\ldots\oplus\langle +c_r\rangle_{p^{k_r}}, \quad k_1+\ldots+k_r=k. +$$ +Докажем индукцией по~$k$, что набор чисел $k_1, \ldots, k_r$ не +зависит от разложения. + +Если $k = 1$, то $|A| = p$, но тогда $A \cong \ZZ_p$ по следствию~5 +из теоремы Лагранжа (см. лекцию~2). Пусть теперь $k > 1$. Рассмотрим +подгруппу $pA: = \{ pa \mid a \in A \}$. В~терминах +равенства~(\ref{eqn4}) имеем +$$ +pA = \langle pc_1 \rangle_{p^{k_1-1}} \oplus \ldots \oplus \langle +pc_r\rangle_{p^{k_r-1}}. +$$ +В частности, при $k_i = 1$ соответствующее слагаемое равно $\lbrace +0 \rbrace$ (и тем самым исчезает). Так как $|pA| = p^{k - r} < p^k$, +то по предположению индукции группа $pA$ разлагается в прямую сумму +примарных циклических подгрупп однозначно с точностью до порядка +слагаемых. Следовательно, ненулевые числа в наборе $k_1 - 1, \ldots, +k_r-1$ определены однозначно (с точностью до перестановки). Отсюда +мы находим значения $k_i$, отличные от~$1$. Количество тех~$k_i$, +которые равны~$1$, однозначно восстанавливается из условия $k_1 + +\ldots + k_r = k$. +\end{proof} + +Заметим, что теорема о согласованных базисах даёт нам другое +разложение конечной абелевой группы~$A$: +\begin{equation} \label{eqn5} +A=\ZZ_{u_1}\oplus\ldots\oplus\ZZ_{u_m}, \quad \text{где} \ +u_i|u_{i+1} \ \text{при} \ i = 1, \ldots, m-1. +\end{equation} +Числа $u_1, \ldots, u_m$ называют {\it инвариантными множителями} +конечной абелевой группы~$A$. + +\begin{definition} +{\it Экспонентой} конечной абелевой группы $A$ называется число +$\exp A$, равное наименьшему общему кратному порядков элементов +из~$A$. Легко заметить, что это равносильно следующему условию: +$$ +\exp A = \min \lbrace n \in \NN \mid na = 0 \ +\text{для всех} \ a \in A \rbrace +$$ +\end{definition} + +\begin{proposition} +Экспонента конечной абелевой группы~$A$ равна её последнему +инвариантному множителю~$u_m$. +\end{proposition} + +\begin{proof} +Обратимся к разложению~(\ref{eqn5}). Так как $u_i | u_m$ для всех $i += 1, \ldots, m$, то $u_ma=0$ для всех $a \in A$. Это означает, что +$\exp A \leqslant u_m$ (и тем самым $\exp A \, | u_m$). С~другой +стороны, в $A$ имеется циклическая подгруппа порядка $u_m$. Значит, +$\exp A \geqslant u_m$. +\end{proof} + +\begin{corollary} +Конечная абелева группа $A$ является циклической тогда и только +тогда, когда $\exp A =\nobreak |A|$. +\end{corollary} + +\begin{proof} +Группа $A$ является циклической тогда и только тогда, когда в +разложении~(\ref{eqn5}) присутствует только одно слагаемое, т.\,е. +$A = \ZZ_{u_m}$ и $|A| = u_m$. +\end{proof} + + +Пусть $G$~--- произвольная группа и $X$~--- некоторое множество. + +\begin{definition} +\textit{Действием} группы $G$ на множестве $X$ называется +отображение $G\times X\to X$, $(g,x)\mapsto gx$, удовлетворяющее +следующим условиям: + +1) $ex=x$ для любого $x\in X$ ($e$~--- нейтральный элемент +группы~$G$); + +2) $g(hx)=(gh)x$ для всех $g,h\in G$ и $x\in X$. + +Обозначение: $G:X$. +\end{definition} + +Если задано действие группы $G$ на множестве~$X$, то каждый элемент +$g \in G$ определяет биекцию $a_g \colon X \to\nobreak X$ по правилу +$a_g(x) = gx$ (обратным отображением для $a_g$ будет $a_{g^{-1}}$). +Обозначим через $S(X)$ группу всех биекций (перестановок) множества +$X$ с операцией композиции. Тогда отображение $a \colon G \to S(X)$, +$g \mapsto a_g$, является гомоморфизмом групп. Действительно, для +произвольных элементов $g,h \in G$ и $x \in X$ имеем +$$ +a_{gh}(x) = (gh)x = g(hx) = g a_h(x) = a_g (a_h(x)) = (a_g a_h)(x). +$$ +Можно показать, что задание действия группы $G$ на множестве $X$ +равносильно заданию соответствующего гомоморфизма $a \colon G \to +S(X)$. + +\begin{example} +Симметрическая группа $S_n$ естественно действует на множестве $X = +\lbrace 1, 2, \ldots, n \rbrace$ по формуле $\sigma x =\nobreak +\sigma (x)$ ($\sigma \in S_n$, $x \in X$). Условие~1) здесь +выполнено по определению тождественной подстановки, условие~2) +выполнено по определению композиции подстановок. +\end{example} + +Пусть задано действие группы $G$ на множестве~$X$. + +\begin{definition} +{\it Орбитой} точки $x\in X$ называется подмножество +$$ +Gx = \lbrace x' \in X \mid x' = gx \ \text{для некоторого} \ g \in G +\rbrace = \{ gx \mid g\in G\}. +$$ +\end{definition} + +\begin{remark} +Для точек $x, x' \in X$ отношение \guillemotleft$x'$ лежит в орбите +$Gx$\guillemotright{} является отношением эквивалентности: + +(1) (рефлексивность) $x \in Gx$ для всех $x \in X$: это верно, так +как $x = ex \in Gx$ для всех $x \in X$; + +(2) (симметричность) если $x' \in Gx$, то $x \in Gx'$: это верно, +так как из условия $x' = gx$ следует $x = ex = (g^{-1}g)x = +g^{-1}(gx) = g^{-1}x' \in Gx'$; + +(3) (транзитивность) если $x' \in Gx$ и $x'' \in Gx'$, то $x'' \in +Gx$: это верно, так как из условий $x' = gx$ и $x'' = hx'$ следует +$x'' = hx' = h(gx) = (hg)x \in Gx$. + +Отсюда вытекает, что множество $X$ разбивается в объединение попарно +непересекающихся орбит действия группы~$G$. +\end{remark} + +\begin{definition} +{\it Стабилизатором \textup(стационарной подгруппой\textup)} точки +$x \in X$ называется подгруппа $\St(x) := \{ g \in G \mid gx = x +\}$. +\end{definition} + +\begin{exercise} +Проверьте, что множество $\St(x)$ действительно является подгруппой +в~$G$. +\end{exercise} + +%\begin{example} +%Рассмотрим действие группы $\SL_n(\RR)$, $n \geqslant 2$ на +%множестве~$\RR^n$, заданное формулой $(A, v) \mapsto A \cdot v$, где +%в правой части вектор $v$ рассматривается как столбец своих +%координат. Оказывается, что для этого действия имеется всего две +%орбиты $\lbrace 0 \rbrace$ и $\RR^n \setminus \lbrace 0 \rbrace$. +%Чтобы показать, что $\RR^n \setminus\nobreak \lbrace 0 \rbrace$ +%действительно является одной орбитой, достаточно проверить, что +%всякий ненулевой вектор можно получить, подействовав на элемент +%$e_1$ (первый базисный вектор) подходящей матрицей из +%группы~$\SL_n(\RR)$. Пусть $v \in \RR^n$~--- произвольный вектор с +%координатами $(x_1, \ldots, x_n)$. Покажем, что существует +%матрица~$A \in \SL_n(\RR)$, для которой $Ae_1 = v$ или, +%эквивалентно, +%\begin{equation} \label{eqn1} +%A\begin{pmatrix} 1 \\ 0 \\ \vdots \\ 0 \end{pmatrix} = +%\begin{pmatrix} x_1\\ x_2 \\ \vdots \\ x_n \end{pmatrix}. +%\end{equation} +%Из уравнения~(\ref{eqn1}) следует, что в первом столбце матрицы~$A$ +%должны стоять в точности числа $x_1, \ldots, x_n$. Как мы знаем из +%линейной алгебры, вектор $v$ можно дополнить до базиса $v, v_2, +%\ldots, v_n$ пространства~$\RR^n$. Пусть $A'$~--- квадратная матрица +%порядка~$n$, в которой по столбцам записаны координаты векторов $v, +%v_2, \ldots, v_n$. Эта матрица невырожденна и удовлетворяет условию +%$A'e_1 = v$ (а~также $A'e_i = v_i$ для всех $i = 2, \ldots, n$). +%Однако её определитель может быть отличен от~$1$. Поделив все +%элементы последнего столбца матрицы $A'$ на $\det A'$, мы получим +%искомую матрицу~$A$ с определителем~$1$. Итак, мы показали, что +%$\RR^n \setminus \lbrace 0 \rbrace$~--- одна орбита для нашего +%действия. Легко видеть, что стабилизатор точки $e_1$ при этом будет +%состоять из всех матриц в $\SL_n(\RR)$, у которых первый столбец +%равен $\begin{pmatrix} 1 \\ 0 \\ \vdots \\ 0 \end{pmatrix}$. (У +%любой другой точки стабилизатор будет другим!) +%\end{example} + +\begin{lemma} +Пусть конечная группа $G$ действует на множестве~$X$. Тогда для +всякого элемента $x\in X$ справедливо равенство +$$ +|Gx| = |G| / |\St(x)|. +$$ +В~частности, число элементов в \textup(любой\textup) орбите делит +порядок группы~$G$. +\end{lemma} + +\begin{proof} +Рассмотрим множество\footnote{Это множество может не быть +факторгруппой, так как подгруппа $\St(x)$ не обязана быть нормальной +в~$G$.} $G / \St(x)$ левых смежных классов группы $G$ по подгруппе +$\St(x)$ и определим отображение $\psi \colon G / \St(x) \to Gx$ по +формуле $g\St(x) \mapsto gx$. Это определение корректно, поскольку +для любого другого представителя $g'$ левого смежного класса +$g\St(x)$ имеем $g' = g h$, где $h \in \St(x)$, и тогда $g'x = (gh)x += g(hx) = gx$. Сюръективность отображения $\psi$ следует из +определения орбиты $Gx$. Проверим инъективность. Предположим, что +$g_1 \St(x) = g_2 \St(x)$ для некоторых $g_1, g_2 \in G$. Тогда +$g_1x = g_2x$. Подействовав на левую и правую части элементом +$g_2^{-1}$, получим $(g_2^{-1}g_1)x = x$, откуда $g_2^{-1}g_1 \in +\St(x)$. Последнее и означает, что $g_1 \St(x) = g_2 \St(x)$. Итак, +мы показали, что отобржание $\psi$ является биекцией. Значит, $|Gx| += |G / \St(x)| = [G : \St(x)]$ и требуемое равенство вытекает из +теоремы Лагранжа (см. лекцию~1). +\end{proof} + +\begin{example} +Рассмотрим действие группы $S^1 = \lbrace z \in \CC \mid |z| = 1 +\rbrace$ на множестве~$\CC$, заданное +формулой $(z,w) \mapsto zw$, где $z \in S^1$, $w \in \CC$, +а~$zw$~--- обычное произведение комплексных чисел. Для этого +действия орбитами будут множества вида $|z| = c$, где $c \in +\RR_{\geqslant 0}$,~--- это всевозможные окружности с центром в +нуле, а также отдельная орбита, состоящая из нуля. Имеем +$$ +\St(z) = +\begin{cases} +\lbrace 1 \rbrace, & \text{если} \ z \ne 0;\\ +S^1, & \text{если} \ z = 0. +\end{cases} +$$ +\end{example} + +% +%Пусть снова группа $G$ действует на множестве~$X$. +% +%\begin{definition} +%Действие $G$ на $X$ называется {\it транзитивным}, если для любых +%$x, x' \in X$ найдётся такой элемент $g \in G$, что $x' = gx$. +%(Иными словами, все точки множества $X$ образуют одну орбиту.) +%\end{definition} +% +%\begin{definition} +%Действие $G$ на $X$ называется {\it свободным}, если для любой точки +%$x \in X$ условие $gx=x$ влечёт $g=e$. (Иными словами, $\St(x) = +%\lbrace e \rbrace$ для всех $x \in X$.) +%\end{definition} +% +%\begin{definition} +%Действие $G$ на $X$ называется {\it эффективным}, если условие +%$gx=x$ для всех $x\in X$ влечёт $g=e$. (Иными словами, $\bigcap +%\limits_{x \in X} \St(x) = \lbrace e \rbrace$.) +%\end{definition} +% +%\begin{remark} +%Из определений следует, что всякое свободное действие эффективно. +%Обратное утверждение неверно, как показывает пример~1 при $n +%\geqslant 3$, см. ниже. +%\end{remark} +% +%В~примерах 1--3 все действия эффективны. В~примере~1 действие +%транзитивно, свободно при $n \leqslant 2$ и не свободно при $n +%\geqslant 3$. В~примере~2 действие не транзитивно и не свободно; но +%если его ограничить на подмножество $\CC \setminus \lbrace 0 +%\rbrace$ (то есть выбросить из $\CC$ точку~$0$), то оно станет +%свободным. В примере~3 действие не транзитивно и не свободно; но +%если его ограничить на подмножество $\RR^n \setminus \lbrace 0 +%\rbrace$, то оно станет транзитивным. +% +%\begin{remark} +%Действие $G$ на $X$ эффективно тогда и только тогда, когда +%определяемый им гомоморфизм $a \colon G \to S(X)$ инъективен. +%\end{remark} +% +%\begin{definition} +%{\it Ядром неэффективности} действия группы $G$ на множестве~$X$ +%называется подгруппа $K = \{ g\in G \mid gx = x \ \text{для всех} \ +%x\in X\}$. +%\end{definition} +% +%Легко проверить, что $K = \Ker a$, где $a \colon G \to S(X)$~--- +%определяемый действием гомоморфизм. Отсюда следует, что $K$~--- +%нормальная подгруппа в~$G$. Рассмотрим факторгруппу $G/K$ и +%определим её действие на множестве $X$ по формуле $(gK)x = gx$. +%Поскольку $kx = x$ для всех $k \in K$ и $x \in X$, действие +%определено корректно. +% +%\begin{lemma} +%Определённое выше действие группы $G/K$ на множестве $X$ является +%эффективным. +%\end{lemma} +% +%\begin{proof} +%Пусть элемент $g \in G$ таков, что $(gK)x = x$ для всех $x \in X$. +%Тогда $gx = x$ для всех $x \in X$, откуда $g \in K$ и $gK = K$. +%\end{proof} +% +%Пусть $G$~--- произвольная группа. Рассмотрим три действия $G$ на +%самой себе, т.\,е. положим $X=G$: +% +%1) действие {\it умножениями слева}: $(g,h)\mapsto gh$; +% +%2) действие {\it умножениями справа}: $(g,h)\mapsto hg^{-1}$; +% +%3) действие {\it сопряжениями}: $(g,h)\mapsto ghg^{-1}$. +% +%Непосредственно проверяется, что первые два действия свободны и +%транзитивны. Орбиты третьего действия называются {\it классами +%сопряжённости} группы~$G$. Например, $\{e\}$~--- класс сопряжённости +%в любой группе. В~частности, для нетривиальных групп действие +%сопряжениями не является транзитивным. +% +%\begin{definition} +%Два действия группы $G$ на множествах $X$ и $Y$ называются {\it +%изоморфными}, если существует такая биекция $\varphi\colon X\to Y$, +%что +%\begin{equation} \label{eqn2} +%\varphi(gx)=g\varphi(x) \ \text{для любых} \ g\in G, x\in X. +%\end{equation} +%\end{definition} +% +%\begin{proposition} +%Всякое свободное транзитивное действие группы $G$ на множестве $X$ +%изоморфно действию группы $G$ на себе левыми сдвигами. +%\end{proposition} +% +%\begin{proof} +%Зафиксируем произвольный элемент $x\in X$. Покажем, что отображение +%$\varphi \colon G\to X$, заданное формулой $\varphi(h) = hx$, +%является искомой биекцией. Сюръективность (соответственно +%инъективность) отображения $\varphi$ следует из транзитивности +%(соответственно свободности) действия $G$ на~$X$. +%Условие~(\ref{eqn2}) следует из цепочки равенств $\varphi(gh) = +%(gh)x = g(hx) = g(\varphi(h))$. +%\end{proof} +% +%\begin{corollary} +%Действия группы $G$ на себе правыми и левыми сдвигами изоморфны. +%\end{corollary} +% +%\smallskip +% +%{\bf Теорема Кэли.} Всякая конечная группа $G$ порядка $n$ изоморфна +%подгруппе симметрической группы~$S_n$. +% +%\begin{proof} +%Рассмотрим действие группы $G$ на себе левыми сдвигами. Как мы +%знаем, это действие свободно, поэтому соответствующий гомоморфизм $a +%\colon G \to S(G) \simeq\nobreak S_n$ инъективен, т.\,е. $\Ker a = +%\lbrace e \rbrace$. Учитывая, что $G / \lbrace e \rbrace \cong G$, +%по теореме о гомоморфизме получаем $G \cong \Im a$. +%\end{proof} + + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~10, +\S\,3) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~1, \S\,3) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава~13, \S\,57) +\end{thebibliography} + +\end{document} diff --git a/algebra/tex/algebra_06_[16.05.2016].tex b/algebra/tex/algebra_06_[16.05.2016].tex new file mode 100644 index 0000000..0a2835b --- /dev/null +++ b/algebra/tex/algebra_06_[16.05.2016].tex @@ -0,0 +1,788 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} +\usepackage{enumitem} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} +\DeclareMathOperator{\Tor}{\mathrm{Tor}} +%\newcommand{\Tor}{\mathop{\mathrm{Tor}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +%\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exercise}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция 6} + +\medskip + +{\it Три действия группы на себе. Теорема Кэли. Классы сопряжённости. +Кольца. Делители нуля, обратимые элементы, нильпотенты. Поля и алгебры. +Идеалы. } +% и факторкольца. Теорема о +%гомоморфизме. Центр алгебры матриц над полем. Простота алгебры +%матриц над полем.} + +\medskip + +Пусть $G$~--- произвольная группа. Рассмотрим три действия $G$ на +самой себе, т.\,е. положим $X=G$: + +1) действие {\it умножениями слева (левыми сдвигами)}: $(g,h)\mapsto gh$; + +2) действие {\it умножениями справа (правыми сдвигами)}: $(g,h)\mapsto hg^{-1}$; + +3) действие {\it сопряжениями}: $(g,h)\mapsto ghg^{-1}$. + +\begin{remark} +Для действий левыми и правыми сдвигами есть ровно одна орбита (сама $G$) и +стабилизатор любой точки тривиален, то есть $\St(x) = \{0\}$. +\end{remark} + +\begin{definition} +Орбитой действия сопряжениями называются \textit{классами сопряженности} +\end{definition} + +\begin{example} +В любой группе $G$ есть класс сопряженности $\{e\}$. \\Также, если $G$ коммутативна, то $\{x\}$ является классом сопряженности для всех $x$ из $G$. +\end{example} + +\smallskip + +{\bf Теорема Кэли.} Всякая конечная группа $G$ порядка $n$ изоморфна +подгруппе симметрической группы~$S_n$. + +\begin{proof} +Рассмотрим действие группы $G$ на себе левыми сдвигами. Как мы +знаем, это действие свободно, поэтому соответствующий гомоморфизм $a +\colon G \to S(G) \simeq\nobreak S_n$ инъективен, т.\,е. $\Ker a = +\lbrace e \rbrace$. Учитывая, что $G / \lbrace e \rbrace \cong G$, +по теореме о гомоморфизме получаем $G \cong \Im a$. +\end{proof} + +\medskip + +Теперь приступим к изучению колец. +\begin{definition} +{\it Кольцом} называется множество $R$ с двумя бинарными операциями +\guillemotleft $+$\guillemotright{}~(сложение) и \guillemotleft +$\times$\guillemotright{}~(умножение), обладающими следующими +свойствами: + +1) $(R,+)$ является абелевой группой (называемой {\it аддитивной +группой} кольца $R$); + +2) выполнены {\it левая и правая дистрибутивности}, т.е. +$$ +a(b+c)=ab+ac \quad \text{и} \quad (b+c)a=ba+ca \quad \text{для всех} +\ a,b,c\in R. +$$ + +В этом курсе мы рассматриваем только ассоциативные кольца с +единицей, поэтому дополнительно считаем, что выполнены ещё два +свойства: + +3) $a(bc)=(ab)c$ для всех $a,b,c\in R$ (\textit{ассоциативность +умножения}); + +4) существует такой элемент $1\in R$ (называемый \textit{единицей}), +что +\begin{equation} \label{eq1} +a1 = 1a = a \ \text{для всякого} \ a \in R. +\end{equation} +\end{definition} + +\begin{remark} +В произвольном кольце $R$ выполнены равенства +\begin{equation} \label{eq2} +a0 = 0a = 0 \ \text{для всякого} \ a \in R. +\end{equation} +В самом деле, имеем $a0 = a(0 + 0) = a0 + a0$, откуда $0 = a0$. +Аналогично устанавливается равенство $0a = 0$. +\end{remark} + +\begin{remark} +Если кольцо $R$ содержит более одного элемента, то $0\ne 1$. Это +следует из соотношений~(\ref{eq1}) и~(\ref{eq2}). +\end{remark} + +\textbf{Примеры колец:} +\begin{enumerate}[label=\textup{(\arabic*)},ref=\textup{\arabic*}] +\item \label{ex_num} +числовые кольца $\ZZ$, $\QQ$, $\RR$, $\CC$; + +\item +кольцо $\ZZ_n$ вычетов по модулю~$n$; + +\item \label{ex_mat} +кольцо $\Mat(n\times n, \RR)$ матриц с коэффициентами из~$\RR$; + +\item \label{ex_pol} +кольцо $\RR[x]$ многочленов от переменной $x$ с коэффициентами +из~$\RR$; + +\item +кольцо $\RR[[x]]$ \textit{формальных степенных рядов} от переменной +$x$ с коэффициентами из~$\RR$: +$$ +\RR[[x]] := \lbrace \sum \limits_{i = 0}^\infty a_i x^i \mid a_i \in +\RR \rbrace; +$$ + +\item \label{ex_func} +кольцо $\FFF(M, \RR)$ всех функций из множества $M$ во +множество~$\RR$ с операциями поточечного сложения и умножения: +$$ +(f_1 + f_2)(m) := f_1(m) + f_2(m); \quad (f_1f_2)(m) := f_1(m) +f_2(m) \quad \text{для всех} \quad f_1,f_2 \in \FFF(M, \RR), m \in +M. +$$ +\end{enumerate} + +\begin{remark} +В примерах (\ref{ex_mat})--(\ref{ex_func}) вместо $\RR$ можно брать +любое кольцо, в частности $\ZZ$, $\QQ$, $\CC$, $\ZZ_n$. +\end{remark} + +\begin{remark} +Обобщая пример~(\ref{ex_pol}), можно рассматривать кольцо $\RR[x_1, +\ldots, x_n]$ многочленов от нескольких переменных $x_1, \ldots, +x_n$ с коэффициентами из~$\RR$. +\end{remark} + +\begin{definition} +Кольцо $R$ называется {\it коммутативным}, если $ab=ba$ для всех +$a,b\in R$. +\end{definition} + +Все перечисленные в примерах (\ref{ex_num})--(\ref{ex_func}) кольца, +кроме $\Mat(n\times n, \RR)$ при $n \geqslant 2$, коммутативны. + +Пусть $R$~--- кольцо. + +\begin{definition} +Элемент $a\in R$ называется {\it обратимым}, если найдётся такой +$b\in R$, что $ab=ba=1$. Такой элемент $b$ обозначается классическим образом как $a^{-1}$. +\end{definition} + +\begin{remark} +Все обратимые элементы кольца $R$ образуют группу относительно +операции умножения. +\end{remark} + +\begin{definition} +Элемент $a\in R$ называется \textit{левым} (соответственно +\textit{правым}) \textit{делителем нуля}, если $a \ne 0$ и найдётся +такой $b \in R$, $b\ne 0$, что $ab=0$ (соответственно $ba = 0$). +\end{definition} + +\begin{remark} +В~случае коммутативных колец понятия левого и правого делителей нуля +совпадают, поэтому говорят просто о делителях нуля. +\end{remark} + +\begin{remark} +Все делители нуля в $R$ необратимы: если $ab = 0$, $a \ne 0$, $b \ne +0$ и существует $a^{-1}$, то получаем $a^{-1}ab = a^{-1}0$, откуда +$b = 0$~--- противоречие. +\end{remark} + +\begin{definition} +Элемент $a\in R$ называется {\it нильпотентом}, если $a \ne 0$ и +найдётся такое $m \in \NN$, что $a^m=0$. +\end{definition} + +\begin{remark} +Всякий нильпотент в $R$ является делителем нуля: если $a \ne 0$, +$a^m = 0$ и число $m$ наименьшее с таким свойством, то $m \geqslant +2$ и $a^{m-1} \ne 0$, откуда $aa^{m-1} = a^{m-1}a = 0$. +\end{remark} + +%\begin{definition} +%Элемент $a\in R$ называется {\it идемпотентом}, если $a^2=a$. +%\end{definition} + +\begin{definition} +{\it Полем} называется коммутативное ассоциативное кольцо $K$ с +единицей, в котором всякий ненулевой элемент обратим. +\end{definition} + +\begin{remark} +Тривиальное кольцо $\lbrace 0 \rbrace$ полем не считается, поэтому +$0 \ne 1$ в любом поле. +\end{remark} + +\textbf{Примеры полей:} $\QQ$, $\RR$, $\CC$, $\ZZ_2$. + +\begin{proposition} +Кольцо вычетов $\ZZ_n$ является полем тогда и только тогда, когда +$n$~--- простое число. +\end{proposition} + +\begin{proof} +Если число $n$ составное, то $n = m k$, где $1 < m, k < n$. Тогда +$\overline{m} \overline{k} = \overline{n} = \overline{0}$. +Следовательно, $\overline k$ и $\overline m$~--- делители нуля в +$\ZZ_n$, ввиду чего не все ненулевые элементы там обратимы. + +Если $n = p$~--- простое число, то возьмём произвольный ненулевой +вычет $\overline{a} \in \ZZ_p$ и покажем, что он обратим. Рассмотрим +вычеты +\begin{equation} \label{eq3} +\overline{1} \overline{a}, \overline{2} \overline{a}, \ldots, +\overline{(p-1)} \overline{a}. +\end{equation} +Если $\overline{r} \overline{a} = \overline{s} \overline{a}$ при $1 +\leqslant r,s \leqslant p-1$, то число $(r - s)a$ делится на~$p$. В +силу взаимной простоты чисел $a$ и $p$ получаем, что число $r - s$ +делится на~$p$. Тогда из условия $|r-s| \leqslant p - 2$ следует, +что $r = s$. Это рассуждение показывает, что все вычеты~(\ref{eq3}) +попарно различны. Поскольку все они отличны от нуля, среди них +должна найтись единица: существует такое $b \in \lbrace 1, \ldots, +p-1 \rbrace$, что $\overline{b} \overline{a}=\overline{1}$. Это и +означает, что вычет $\overline{a}$ обратим. +\end{proof} + +\begin{definition} +{\it Алгеброй} над полем $K$ (или кратко \textit{$K$-алгеброй}) +называется множество $A$ с операциями сложения, умножения и +умножения на элементы поля $K$, обладающими следующими свойствами: + +1) относительно сложения и умножения $A$ есть кольцо; + +2) относительно сложения и умножения на элементы из $K$ множество +$A$ есть векторное пространство; + +3 $(\lambda a)b=a(\lambda b)=\lambda(ab)$ для любых $\lambda\in K$ и +$a,b\in A$. + +{\it Размерностью} алгебры $A$ называется её размерность как +векторного пространства над~$K$. (Обозначение: $\dim_K A$.) +\end{definition} + +\textbf{Примеры.} + +1) Алгебра матриц $\Mat(n\times n, K)$ над +произвольным полем~$K$. Её размерность равна $n^2$. + +2) Алгебра $K[x]$ многочленов от переменной $x$ над произвольным +полем~$K$. Её размерность равна~$\infty$. + +3) $K, F$ --- поля, $K \subset F$, $F$ --- алгебра над $K$. \\ +Если это $\RR \subset \CC$, то $\dim_\RR\CC = 2$.\\ +Если это $\QQ \subset \RR$, то $\dim_\QQ\RR = \infty$. + +\begin{definition} +\textit{Подкольцом} кольца $R$ называется всякое подмножество $R' +\subseteq R$, замкнутое относительно операций сложения и умножения +(т.\,е. $a + b \in R'$ и $ab \in R'$ для всех $a,b \in R'$) и +являющееся кольцом относительно этих операций. \textit{Подполем} +называется всякое подкольцо, являющееся полем. +\end{definition} + +Например, $\ZZ$ является подкольцом в~$\QQ$, а~скалярные матрицы +образуют подполе в кольце $\Mat(n \times n, \RR)$. + +\begin{remark} +Если $K$~--- подполе поля~$F$, то $F$ является алгеброй над~$K$. +Так, поле $\CC$ является бесконечномерной алгеброй над~$\QQ$, тогда +как над $\RR$ имеет размерность~$2$. +\end{remark} + +\begin{definition} +\textit{Подалгеброй} алгебры $A$ (над полем~$K$) называется всякое +подмножество $A' \subseteq A$, замкнутое относительно всех трёх +имеющихся в $A$ операций (сложения, умножения и умножения на +элементы из~$K$) и являющееся алгеброй (над~$K$) относительно этих +операций. +\end{definition} + +Легко видеть, что подмножество $A' \subseteq A$ является алгеброй +тогда и только тогда, когда оно является одновременно подкольцом и +векторным подпространством в~$A$. + +Гомоморфизмы колец, алгебр определяются естественным образом как +отображения, сохраняющие все операции. + +\begin{exercise} +Сформулируйте точные определения гомоморфизма колец и гомоморфизма +алгебр. +\end{exercise} + +\begin{definition} +\textit{Изоморфизмом} колец, алгебр называется всякий гомоморфизм, +являющийся биекцией. +\end{definition} + +В теории групп нормальные подгруппы обладают тем свойством, что по +ним можно \guillemotleft факторизовать\guillemotright{}. В~этом +смысле аналогами нормальных подгрупп в теории колец служат идеалы. + +\begin{definition} +Подмножество $I$ кольца $R$ называется (\textit{двусторонним}) {\it +идеалом}, если оно является подгруппой по сложению и $ra\in I$, +$ar\in I$ для любых $a\in I$, $r\in R$. +\end{definition} + +\begin{remark} +В~некоммутативных кольцах рассматривают также левые и правые идеалы. +\end{remark} + +В каждом кольце $R$ есть {\it несобственные} идеалы $I=0$ и $I=R$. +Все остальные идеалы называются {\it собственными}. + +\begin{exercise} +Пусть $R$~--- коммутативное кольцо. С~каждым элементом $a \in R$ +связан идеал $(a) := \{ ra \mid r \in R \}$. +\end{exercise} + +\begin{definition} +Идеал $I$ называется {\it главным}, если существует такой элемент +$a\in R$, что $I=(a)$. (В~этой ситуации говорят, что $I$ порождён +элементом~$a$.) +\end{definition} + +\textbf{Пример.} В~кольце $\ZZ$ подмножество $k \ZZ$ ($k \in \ZZ$) +является главным идеалом, порождённым элементом~$k$. Более того, все +идеалы в $\ZZ$ являются главными. + +\begin{remark} +Главный идеал $(a)$ является несобственным тогда и только тогда, +когда $a=0$ или $a$ обратим. +\end{remark} + +Более общо, с каждым подмножеством $S \subseteq R$ связан идеал +$$ +(S) := \{ r_1 a_1 + \ldots + r_k a_k \mid a_i \in S, r_i \in R, +k\in\NN\}. +$$ +(Проверьте, что это действительно идеал!) Это наименьший по +включению идеал в~$R$, содержащий подмножество~$S$. В~этой ситуации +говорят, что идеал $I=(S)$ порождён подмножеством~$S$. + +% +%Вернёмся к случаю произвольного кольца $R$. Поскольку любой идеал +%$I$ является подгруппой абелевой группы $(R,+)$, мы можем +%рассмотреть факторгруппу $R/I$. Введём на ней умножение по формуле +%$$ +%(a+I)(b+I) := ab + I. +%$$ +%Покажем, что это определение корректно. Пусть элементы $a',b' \in R$ +%таковы, что $a' + I = a + I$ и $b' + I = b + I$. Проверим, что $a'b' +%+ I = ab + I$. Заметим, что $a' = a + x$ и $b' = b + y$ для +%некоторых $x, y \in I$. Тогда +%$$ +%a'b' + I = (a + x)(b + y) + I = ab + ay + xb + xy + I = ab + I, +%$$ +%поскольку $ay, xb, xy \in I$ в силу определения идеала. +% +%\begin{exercise} +%Проверьте, что множество $R/I$ является кольцом относительно +%имеющейся там операции сложения и только что введённой операции +%умножения. +%\end{exercise} +% +%\begin{definition} +%Кольцо $R/I$ называется {\it факторкольцом} кольца $R$ по +%идеалу~$I$. +%\end{definition} +% +%\textbf{Пример.} $\ZZ / n \ZZ = \ZZ_n$. +% +%Пусть $\varphi\colon R\to R'$~--- гомоморфизм колец. Тогда +%определены его ядро $\Ker \varphi = \lbrace r \in R \mid \varphi(r) +%= 0 \rbrace$ и образ $\Im \varphi = \lbrace \varphi(r) \mid r \in R +%\rbrace \subseteq R'$. +% +%\begin{lemma} +%Ядро $\Ker \varphi$ является идеалом в~$R$. +%\end{lemma} +% +%\begin{proof} +%Так как $\varphi$~--- гомоморфизм абелевых групп, то $\Ker \varphi$ +%является подгруппой в $R$ по сложению. Покажем теперь, что $ra \in +%\Ker \varphi$ и $ar \in \Ker \varphi$ для произвольных элементов $a +%\in \Ker \varphi$ и $r \in R$. Имеем $\varphi(ra) = \varphi(r) +%\varphi(a) = \varphi(r) 0 = 0$, откуда $ra \in \Ker \varphi$. +%Аналогично получаем $ar \in \Ker \varphi$. +%\end{proof} +% +%\begin{exercise} +%Проверьте, $\Im \varphi$~--- подкольцо в~$R'$. +%\end{exercise} +% +%\smallskip +% +%{\bf Теорема о гомоморфизме для колец.}\ Пусть $\varphi\colon R\to +%R'$~-- гомоморфизм колец. Тогда имеет место изоморфизм +%$$ +%R/\Ker\,\varphi\cong\Im\varphi. +%$$ +% +%\smallskip +% +%\begin{proof} +%Положим для краткости $I = \Ker \varphi$ и рассмотрим отображение +%$$ +%\pi \colon R/I \to \Im \varphi, \quad a+I \mapsto \varphi(a). +%$$ +%Из доказательства теоремы о гомоморфизме для групп следует, что +%отображение $\pi$ корректно определено и является изоморфизмом +%абелевых групп (по сложению). Покажем, что $\pi$~--- изоморфизм +%колец. Для этого остаётся проверить, что $\pi$ сохраняет операцию +%умножения: +%$$ +%\pi((a+I)(b+I)) = \pi(ab+I) = \varphi(ab) = \varphi(a) \varphi(b) = +%\pi(a+I) \pi(b+I). +%$$ +%\end{proof} +% +%\begin{example} +%Пусть $R = \FFF(M, \RR)$. Зафиксируем произвольную точку $m_0 \in M$ +%и рассмотрим гомоморфизм $\varphi \colon R \to \RR$, $f \mapsto +%f(m_0)$. Ясно, что гомоморфизм $\varphi$ сюръективен. Его ядром +%является идеал $I$ всех функций, обращающихся в нуль в точке $m_0$. +%По теореме о гомоморфизме получаем $R / I \cong \RR$. +%\end{example} +% +%\begin{definition} +%Кольцо $R$ называется {\it простым}, если в нём нет собственных +%(двусторонних) идеалов. +%\end{definition} +% +%\textbf{Пример.} Всякое поле является простым кольцом. +% +%\begin{definition} +%\textit{Центром} алгебры $A$ над полем $K$ называется её +%подмножество +%$$ +%Z(A) = \{ a \in A \mid ab = ba \ \text{для всех} \ b \in A \}. +%$$ +%\end{definition} +% +%\begin{theorem} +%Пусть $K$~--- поле, $n$~--- натуральное число и $A = \Mat(n \times +%n, K)$~--- алгебра квадратных матриц порядка~$n$ над полем~$K$. +% +%\textup{(1)} $Z(A) = \lbrace \lambda E \mid \lambda \in K \rbrace$, +%где $E$~--- единичная матрица \textup(в частности, $Z(A)$~--- +%одномерное подпространство в~$A$\textup); +% +%\textup{(2)} алгебра $A$ проста \textup(как кольцо\textup). +%\end{theorem} +% +%\begin{proof} +%Для каждой пары индексов $i,j \in \lbrace 1, \ldots, n \rbrace$ +%обозначим через $E_{ij}$ соответствующую \textit{матричную +%единицу}~--- такую матрицу, в которой на $(i,j)$-месте стоит +%единица, а на всех остальных местах~--- нули. Непосредственная +%проверка показывает, что +%$$ +%E_{ij}E_{kl} = +%\begin{cases} +%E_{il}, & \ \text{если} \ j = k;\\ +%0, & \ \text{если} \ j \ne k. +%\end{cases} +%$$ +%Заметим, что матричные единицы образуют базис в~$A$ и всякая матрица +%$X = (x_{kl})$ представима в виде $X = \sum \limits_{k,l = 1}^n +%x_{kl} E_{kl}$. +% +%(1) Пусть матрица $X = \sum \limits_{k,l = 1}^n x_{kl} E_{kl}$ лежит +%в $Z(A)$. Тогда $X$ коммутирует со всеми матричными единицами. +%Выясним, что означает условие $XE_{ij} = E_{ij}X$. Имеем +%$$ +%XE_{ij} = (\sum \limits_{k,l = 1}^n x_{kl} E_{kl})E_{ij} = \sum +%\limits_{k = 1}^n x_{ki}E_{kj}; \qquad E_{ij}X = E_{ij}(\sum +%\limits_{k,l = 1}^n x_{kl} E_{kl}) = \sum \limits_{l = 1}^n +%x_{jl}E_{il}. +%$$ +%Сравнивая правые части двух равенств, получаем $x_{ii} = x_{jj}$, +%$x_{ki}=0$ при $k \ne i$ и $x_{jl}=0$ при $j \ne l$. Поскольку эти +%равенства имеют место при любых значениях $i,j$, мы получаем, что +%матрица $X$ скалярна, т.\,е. $X = \lambda E$ для некоторого $\lambda +%\in K$. С~другой стороны, ясно, что всякая скалярная матрица лежит в +%$Z(A)$. +% +%(2) Пусть $I$~--- двусторонний идеал алгебры~$A$. Если $I \ne +%\lbrace 0 \rbrace$, то $I$ содержит ненулевую матрицу~$X$. Покажем, +%что тогда $I = A$. Пусть индексы $k,l$ таковы, что $x_{kl} \ne 0$. +%Тогда +%$$ +%E_{ik} X E_{lj} = E_{ik}(\sum_{p,q = 1}^n x_{pq} E_{pq}) E_{lj} = +%E_{ik} \sum \limits_{p = 1}^n x_{pl}E_{pj} = x_{kl} E_{ij} \in I. +%$$ +%Домножая $x_{kl}E_{ij}$ на скалярную матрицу $(x_{kl})^{-1}E$, мы +%получаем, что $E_{ij} \in I$. Из произвольности выбора $i,j$ +%следует, что все матричные единицы лежат в~$I$. Отсюда $I = A$, что +%и требовалось. +%\end{proof} + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~1, +\S\,3,4,6,8,9 и глава~9, \S\,2) +\bibitem{Ko1} +А.\,И.~Кострикин. Введение в алгебру. Основы алгебры. М.: Наука. +Физматлит, 1994 (глава~4, \S\,3) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~4, \S\,1,4) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава 14, \S\,63--64) +\end{thebibliography} + +\end{document} diff --git a/algebra/tex/algebra_07_[23.05.2016].tex b/algebra/tex/algebra_07_[23.05.2016].tex new file mode 100644 index 0000000..0d94cba --- /dev/null +++ b/algebra/tex/algebra_07_[23.05.2016].tex @@ -0,0 +1,830 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} +\usepackage{enumitem} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} +\DeclareMathOperator{\Tor}{\mathrm{Tor}} +%\newcommand{\Tor}{\mathop{\mathrm{Tor}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +%\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exercise}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция~7} + +\medskip + +{\it Факторкольца. Теорема о +гомоморфизме колец. Евклидовы кольца, кольца главных идеалов и факториальные +кольца.} + +\medskip + + + +Вернёмся к случаю произвольного кольца $R$. Поскольку любой идеал +$I$ является подгруппой абелевой группы $(R,+)$, мы можем +рассмотреть факторгруппу $R/I$. Введём на ней умножение по формуле +$$ +(a+I)(b+I) := ab + I. +$$ +Покажем, что это определение корректно. Пусть элементы $a',b' \in R$ +таковы, что $a' + I = a + I$ и $b' + I = b + I$. Проверим, что $a'b' ++ I = ab + I$. Заметим, что $a' = a + x$ и $b' = b + y$ для +некоторых $x, y \in I$. Тогда +$$ +a'b' + I = (a + x)(b + y) + I = ab + ay + xb + xy + I = ab + I, +$$ +поскольку $ay, xb, xy \in I$ в силу определения идеала. + +\begin{exercise} +Проверьте, что множество $R/I$ является кольцом относительно +имеющейся там операции сложения и только что введённой операции +умножения. +\end{exercise} + +\begin{definition} +Кольцо $R/I$ называется {\it факторкольцом} кольца $R$ по +идеалу~$I$. +\end{definition} + +\textbf{Пример.} $\ZZ / n \ZZ = \ZZ_n$. + +Пусть $\varphi\colon R\to R'$~--- гомоморфизм колец. Тогда +определены его ядро $\Ker \varphi = \lbrace r \in R \mid \varphi(r) += 0 \rbrace$ и образ $\Im \varphi = \lbrace \varphi(r) \mid r \in R +\rbrace \subseteq R'$. + +\begin{lemma} +Ядро $\Ker \varphi$ является идеалом в~$R$. +\end{lemma} + +\begin{proof} +Так как $\varphi$~--- гомоморфизм абелевых групп, то $\Ker \varphi$ +является подгруппой в $R$ по сложению. Покажем теперь, что $ra \in +\Ker \varphi$ и $ar \in \Ker \varphi$ для произвольных элементов $a +\in \Ker \varphi$ и $r \in R$. Имеем $\varphi(ra) = \varphi(r) +\varphi(a) = \varphi(r) 0 = 0$, откуда $ra \in \Ker \varphi$. +Аналогично получаем $ar \in \Ker \varphi$. +\end{proof} + +\begin{exercise} +Проверьте, $\Im \varphi$~--- подкольцо в~$R'$. +\end{exercise} + +\smallskip + +{\bf Теорема о гомоморфизме для колец.}\ Пусть $\varphi\colon R\to +R'$~-- гомоморфизм колец. Тогда имеет место изоморфизм +$$ +R/\Ker\,\varphi\cong\Im\varphi. +$$ + +\smallskip + +\begin{proof} +Положим для краткости $I = \Ker \varphi$ и рассмотрим отображение +$$ +\pi \colon R/I \to \Im \varphi, \quad a+I \mapsto \varphi(a). +$$ +Из доказательства теоремы о гомоморфизме для групп следует, что +отображение $\pi$ корректно определено и является изоморфизмом +абелевых групп (по сложению). Покажем, что $\pi$~--- изоморфизм +колец. Для этого остаётся проверить, что $\pi$ сохраняет операцию +умножения: +$$ +\pi((a+I)(b+I)) = \pi(ab+I) = \varphi(ab) = \varphi(a) \varphi(b) = +\pi(a+I) \pi(b+I). +$$ +\end{proof} + +\begin{example}\ +\begin{enumerate} +\item Пусть $R = \FFF(M, \RR)$. Зафиксируем произвольную точку $m_0 \in M$ +и рассмотрим гомоморфизм $\varphi \colon R \to \RR$, $f \mapsto +f(m_0)$. Ясно, что гомоморфизм $\varphi$ сюръективен. Его ядром +является идеал $I$ всех функций, обращающихся в нуль в точке $m_0$. +По теореме о гомоморфизме получаем $R / I \cong \RR$. +\item Рассмотрим отображение $\varphi \colon \RR[x] \to \CC$, $f \mapsto f(i)$. Очевидно, что $\varphi$ --- гомоморфизм, причем сюръективный. Если функция принадлежит ядру $\varphi$, то есть $f(i) = 0$, то $(x - i) \mid f$ в кольце $\CC[x]$. Но и сопряженный к корню также будет являться корнем многочлена, так что дополнительно $(x + i) \mid f$. Итого, получаем, что $f \in (x - i)(x + i) = (x^2 + 1)$ и, соответственно, $\Ker \varphi \subseteq (x^2 + 1)$. В обратную сторону включение тем более очевидно. Далее, по теореме о гомоморфизме получаем $\RR[x] / (x^2 + 1) \cong \CC$. +\end{enumerate} +\end{example} + +%\begin{definition} +%Кольцо $R$ называется {\it простым}, если в нём нет собственных +%(двусторонних) идеалов. +%\end{definition} +% +%\textbf{Пример.} Всякое поле является простым кольцом. +% +%\begin{definition} +%\textit{Центром} алгебры $A$ над полем $K$ называется её +%подмножество +%$$ +%Z(A) = \{ a \in A \mid ab = ba \ \text{для всех} \ b \in A \}. +%$$ +%\end{definition} +% +%\begin{theorem} +%Пусть $K$~--- поле, $n$~--- натуральное число и $A = \Mat(n \times +%n, K)$~--- алгебра квадратных матриц порядка~$n$ над полем~$K$. +% +%\textup{(1)} $Z(A) = \lbrace \lambda E \mid \lambda \in K \rbrace$, +%где $E$~--- единичная матрица \textup(в частности, $Z(A)$~--- +%одномерное подпространство в~$A$\textup); +% +%\textup{(2)} алгебра $A$ проста \textup(как кольцо\textup). +%\end{theorem} +% +%\begin{proof} +%Для каждой пары индексов $i,j \in \lbrace 1, \ldots, n \rbrace$ +%обозначим через $E_{ij}$ соответствующую \textit{матричную +%единицу}~--- такую матрицу, в которой на $(i,j)$-месте стоит +%единица, а на всех остальных местах~--- нули. Непосредственная +%проверка показывает, что +%$$ +%E_{ij}E_{kl} = +%\begin{cases} +%E_{il}, & \ \text{если} \ j = k;\\ +%0, & \ \text{если} \ j \ne k. +%\end{cases} +%$$ +%Заметим, что матричные единицы образуют базис в~$A$ и всякая матрица +%$X = (x_{kl})$ представима в виде $X = \sum \limits_{k,l = 1}^n +%x_{kl} E_{kl}$. +% +%(1) Пусть матрица $X = \sum \limits_{k,l = 1}^n x_{kl} E_{kl}$ лежит +%в $Z(A)$. Тогда $X$ коммутирует со всеми матричными единицами. +%Выясним, что означает условие $XE_{ij} = E_{ij}X$. Имеем +%$$ +%XE_{ij} = (\sum \limits_{k,l = 1}^n x_{kl} E_{kl})E_{ij} = \sum +%\limits_{k = 1}^n x_{ki}E_{kj}; \qquad E_{ij}X = E_{ij}(\sum +%\limits_{k,l = 1}^n x_{kl} E_{kl}) = \sum \limits_{l = 1}^n +%x_{jl}E_{il}. +%$$ +%Сравнивая правые части двух равенств, получаем $x_{ii} = x_{jj}$, +%$x_{ki}=0$ при $k \ne i$ и $x_{jl}=0$ при $j \ne l$. Поскольку эти +%равенства имеют место при любых значениях $i,j$, мы получаем, что +%матрица $X$ скалярна, т.\,е. $X = \lambda E$ для некоторого $\lambda +%\in K$. С~другой стороны, ясно, что всякая скалярная матрица лежит в +%$Z(A)$. +% +%(2) Пусть $I$~--- двусторонний идеал алгебры~$A$. Если $I \ne +%\lbrace 0 \rbrace$, то $I$ содержит ненулевую матрицу~$X$. Покажем, +%что тогда $I = A$. Пусть индексы $k,l$ таковы, что $x_{kl} \ne 0$. +%Тогда +%$$ +%E_{ik} X E_{lj} = E_{ik}(\sum_{p,q = 1}^n x_{pq} E_{pq}) E_{lj} = +%E_{ik} \sum \limits_{p = 1}^n x_{pl}E_{pj} = x_{kl} E_{ij} \in I. +%$$ +%Домножая $x_{kl}E_{ij}$ на скалярную матрицу $(x_{kl})^{-1}E$, мы +%получаем, что $E_{ij} \in I$. Из произвольности выбора $i,j$ +%следует, что все матричные единицы лежат в~$I$. Отсюда $I = A$, что +%и требовалось. +%\end{proof} + + +Далее в этой лекции всюду предполагается, что $R$~--- коммутативное кольцо +без делителей нуля. + +\begin{definition} +Говорят, что элемент $b \in R$ {\it делит} элемент $a\in R$ ($b$~--- +\textit{делитель}~$a$, $a$ \textit{делится} на~$b$; пишут $b \,|\, +a$) если существует элемент $c\in R$, для которого $a=bc$. +\end{definition} + +\begin{definition} +Два элемента $a, b \in R$ называются {\it ассоциированными}, если +$a=bc$ для некоторого обратимого элемента $c$ кольца~$R$. +\end{definition} + +\begin{remark} +Легко видеть, что отношение ассоциированности является отношением +эквивалентности на кольце~$R$. +\end{remark} + +\begin{definition} +Кольцо $R$ без делителей нуля, не являющееся полем, называется {\it +евклидовым}, если существует функция +$$ +N\colon R\setminus\{0\} \to \ZZ_{\geqslant 0} +$$ +(называемая {\it нормой}), удовлетворяющая следующим условиям: + +1) $N(ab) \geqslant N(a)$ для всех $a, b \in R \setminus \{0\}$; + +2) для любых $a, b \in R$, $b \ne 0$, существуют такие $q,r\in R$, +что $a = qb + r$ и либо $r = 0$, либо $N(r) < N(b)$. +\end{definition} + +Неформально говоря, условие 2) означает возможность \guillemotleft +деления с остатком\guillemotright{} в кольце~$R$. + +\textbf{Примеры евклидовых колец:} + +1) $\ZZ$ с нормой $N(a) = |a|$; + +2) $K[x]$ (где $K$~--- произвольное поле) с нормой $N(f) = \deg f$. + +\begin{lemma} \label{lemma_first} +Пусть $R$~--- евклидово кольцо и $a,b \in R \setminus \lbrace 0 +\rbrace$. Равенство $N(ab) = N(a)$ выполнено тогда и только тогда, +когда $b$ обратим. +\end{lemma} + +\begin{proof} +Если $b$ обратим, то $N(a)\leqslant N(ab)\leqslant +N(abb^{-1})=N(a)$, откуда $N(ab)=N(a)$. + +Пусть теперь $N(ab) = N(a)$. Разделим $a$ на $ab$ с остатком: $a = +qab + r$, где либо $r = 0$, либо $N(r) < N(ab)$. Если $r \ne 0$, то +с учётом равенства $r = a(1-qb)$ имеем $N(a) \leqslant N(a(1-qb)) = +N(r) < N(ab) = N(a)$~--- противоречие. Значит, $r = 0$ и $a = qab$, +откуда $a(1 - qb) = 0$. Так как в $R$ нет делителей нуля и $a \ne +0$, то $1 - qb = 0$, откуда $qb = 1$, т.\,е. $b$ обратим. +\end{proof} + + +\begin{definition} +Кольцо $R$ называется \textit{кольцом главных идеалов}, если всякий +идеал в $R$ является главным. +\end{definition} + +\begin{theorem} \label{thm_er_rpi} +Всякое евклидово кольцо $R$ является кольцом главных идеалов. +\end{theorem} + +\begin{proof} +Пусть $I$~--- произвольный идеал в~$R$. Если $I = \lbrace 0 +\rbrace$, то $I = (0)$ и поэтому $I$ является главным. Далее +считаем, что $I \ne \lbrace 0 \rbrace$. Пусть $a \in I \setminus +\lbrace 0 \rbrace$~--- элемент с наименьшей нормой. Тогда главный +идеал $(a)$ содержится в~$I$. Предположим, что какой-то элемент $b +\in I$ не лежит в~$(a)$, т.\,е. не делится на~$a$. Тогда разделим +$b$ на $a$ с остатком: $b = qa + r$, где $r \ne 0$ и $N(r) < N(a)$. +Так как $r = b - aq$, то $r \in I$, что в силу неравенства $N(r) < +N(a)$ противоречит нашему выбору элемента~$a$. +\end{proof} + +\begin{definition} +{\it Наибольшим общим делителем} элементов $a$ и $b$ кольца $R$ +называется их общий делитель, который делится на любой другой их +общий делитель. Он обозначается $(a,b)$. +\end{definition} + +\begin{remark} +Если наибольший общий делитель двух элементов $a,b \in R$ +существует, то он определён однозначно с точностью до +ассоциированности, т.\,е. умножения на обратимый элемент кольца~$R$. +\end{remark} + +\begin{theorem} \label{thm_lcd} +Пусть $R$~--- евклидово кольцо и $a,b$~--- произвольные элементы. +Тогда: + +\textup{(1)} существует наибольший общий делитель $(a,b)$; + +\textup{(2)} существуют такие элементы $u,v \in R$, что $(a,b) = ua ++ vb$. +\end{theorem} + +\begin{proof}\ \\ +\underline{Способ 1}: утверждение (1) получается применением +(прямого хода) алгоритма Евклида, а~утверждение~(2)~--- применением +обратного хода в алгоритме Евклида. + +\underline{Способ 2}: рассмотрим идеал $I = (a, b)$. Так как $R$ --- кольцо главных идеалов, то существует такой элемент $d \in R$, что $I = (d)$ и существуют $x, y \in R$ такие, что +$$ +d = ax + dy. \qquad (*) +$$ +Покажем, что $d = (a, b)$. Для начала, так как $a$ и $b$ лежат в идеале $I = (d)$, то они оба делятся на $d$, то есть $d$ является одним из их делителей. А из равенства $(*)$ ясно, что любой другой общий делитель $a$ и $b$ будет также делиться на $d$. Итого, $d$ --- наибольший общий делитель. +\end{proof} + +\begin{definition} +Ненулевой необратимый элемент $p$ кольца $R$ называется {\it +простым}, если он не может быть представлен в виде $p = a b$, где +$a, b \in R$~--- необратимые элементы. +\end{definition} + +\begin{remark} +Простые элементы в кольце многочленов $K[x]$ над полем $K$ принято +называть {\it неприводимыми многочленами}. +\end{remark} + +\begin{lemma} \label{ll} +Если простой элемент $p$ евклидова кольца $R$ делит произведение +$a_1a_2\ldots a_n$, то он делит один из сомножителей. +\end{lemma} + +\begin{proof} +Индукция по~$n$. Пусть $n=2$ и предположим, что $p$ не делит~$a_1$. +Тогда $(p, a_1) = 1$ и по утверждению~(2) теоремы~\ref{thm_lcd} +найдутся такие элементы $u, v \in R$, что $1 = up + v a_1$. Умножая +обе части этого равенства на~$a_2$, получаем +$$ +a_2 = upa_2 + v a_1a_2. +$$ +Легко видеть, что $p$ делит правую часть последнего равенства, +поэтому $p$ делит и левую часть, т.\,е.~$a_2$. + +При $n > 2$ применяем предыдущее рассуждение к $(a_1 \ldots +a_{n-1})a_n$ и пользуемся предположением индукции. +\end{proof} + +\begin{definition} +Кольцо $R$ называется {\it факториальным}, если всякий его ненулевой +необратимый элемент \guillemotleft разложим на простые +множители\guillemotright{}, т.\,е. представим в виде произведения +(конечного числа) простых элементов, причём это представление +единственно с точностью до перестановки множителей и +ассоциированности. +\end{definition} + +Более формально единственность разложения на простые множители +следует понимать так: если для элемента $a \in R$ есть два +представления +$$ +a = p_1 p_2 \ldots p_n = q_1q_2 \ldots q_m, +$$ +где все элементы $p_i, q_j$ простые, то $n = m$ и существует такая +подстановка $\sigma \in S_n$, что для каждого $i = 1,\ldots, n$ +элементы $p_i$ и $q_{\sigma(i)}$ ассоциированы. + +\begin{theorem} \label{thm_er_ufd} +Всякое евклидово кольцо $R$ является факториальным. +\end{theorem} + +\begin{proof}[Доказательство \textup{состоит из двух шагов.}]~ + +\textit{Шаг}~1. Сначала докажем, что всякий ненулевой необратимый +элемент из $R$ разложим на простые множители. Предположим, что это +не так, и среди всех элементов, не разложимых на простые множители, +выберем элемент $a$ с наименьшей нормой. Тогда $a$ не может быть +простым (иначе он разложим в произведение, состоящее из одного +простого множителя), поэтому существует представление вида $a = bc$, +где $b,c \in R$~--- ненулевые необратимые элементы. Но тогда в силу +леммы~\ref{lemma_first} имеем $N(b) < N(a)$ и $N(c) < N(a)$, поэтому +элементы $b$ и $c$ разложимы на простые множители. Но тогда и $a$ +разложим~--- противоречие. + +\textit{Шаг}~2. Докажем теперь индукцией по~$n$, что если для +некоторого элемента $a \in R$ имеются два разложения +$$ +a = p_1p_2\ldots p_n=q_1q_2\ldots q_m, +$$ +где все элемнты $p_i$ и $q_j$ простые, то $m=n$ и после подходящей +перенумерации элементов $q_j$ окажется, что при всех $i = 1,\ldots, +n$ элемент $p_i$ ассоциирован с~$q_i$. + +Если $n=1$, то $a = p_1$; тогда из определения простого элемента +следует, что $m = 1$ и тем самым $q_1 = p_1$. Пусть теперь $n > 1$. +Тогда элемент $p_1$ делит произведение $q_1 q_2 \ldots q_m$. По +лемме~\ref{ll} этот элемент делит некоторый~$q_i$, а значит, +ассоциирован с ним. Выполнив перенумерацию, можно считать, что $i = +1$ и $q_1 = cp_1$ для некоторого обратимого элемента $c \in R$. Так +как в $R$ нет делителей нуля, то мы можем сократить на~$p_1$, после +чего получится равенство +$$ +p_2 p_3 \ldots p_n = (cq_2)q_3 \ldots q_m +$$ +(заметьте, что элемент $cq_2$ прост!). Дальше используем +предположение индукции. +\end{proof} + +Можно показать (см. листок с задачами к лекции~6), что при $n +\geqslant 2$ кольцо многочленов $K[x_1, \ldots, x_n]$ над +произвольным полем~$K$ не является кольцом главных идеалов, а +значит, по теореме~\ref{thm_er_rpi} это кольцо не является +евклидовым. Тем не менее, наша цель в оставшейся части этой +лекции~--- доказать, что кольцо $K[x_1, \ldots, x_n]$ факториально. + +Начнём издалека. С~каждым (коммутативным) кольцом $R$ (без делителей +нуля) связано его \textit{поле отношений}~$K$. Элементами этого поля +являются дроби вида $\frac{a}{b}$, где $a,b \in R$ и $b\ne 0$, со +стандартными правилами отождествления ($\frac{a}{b} = \frac{c}{d} +\Leftrightarrow ad = bc$), сложения ($\frac{a}{b} + \frac{c}{d} = +\frac{ad+bc}{bd}$) и умножения ($\frac{a}{b}\frac{c}{d} = +\frac{ac}{bd}$). Кольцо $R$ реализуется как подкольцо в~$K$, +состоящее из всех дробей вида $\frac{a}{1}$. + +\textbf{Модельный пример:} $\QQ$ есть поле отношений кольца~$\ZZ$. + +Всякий гомоморфизм колец $\varphi \colon R \to R'$ индуцирует +гомоморфизм $\widetilde \varphi \colon R[x] \to R'[x]$ +соответствующих колец многочленов, задаваемый по правилу +$$ +a_n x^n + a_{n-1} x^{n-1} + \ldots a_1 x + a_0 \mapsto \varphi(a_n) +x^n + \varphi(a_{n-1}) x^{n-1} + \ldots \varphi(a_1) x + +\varphi(a_0). +$$ +Вспомнив, как определяется умножение в кольце многочленов, легко +показать, что $\widetilde \varphi$ действительно является +гомоморфизмом. + +В~частности, если $R$~--- кольцо и $K$~--- его поле частных, то +вложение $R \hookrightarrow K$ индуцирует вложение $R[x] +\hookrightarrow K[x]$, так что всякий многочлен с коэффициентами из +$R$ можно рассматривать как многочлен с коэффициентами из~$K$. + +Пусть $R$~--- кольцо. + +\begin{definition} +Многочлен $f(x)\in R[x]$ называется {\it примитивным}, если в $R$ +нет необратимого элемента, который делит все коэффициенты многочлена +$f(x)$. +\end{definition} + +{\bf Лемма Гаусса.}\ Если $R$~--- факториальное кольцо c полем +отношений $K$ и многочлен $f(x) \in R[x]$ разлагается в произведение +двух многочленов в кольце $K[x]$, то он разлагается в произведение +двух пропорциональных им многочленов в кольце~$R[x]$. + +В доказательстве леммы Гаусса нам потребуются следующие факты. + +\begin{exercise} \label{ex_1} +Пусть $R$~--- факториальное кольцо и $p \in R$~--- простой элемент. +Тогда в факторкольце $R/(p)$ нет делителей нуля. +\end{exercise} + +\begin{exercise} \label{ex_2} +Пусть $R$~--- (коммутативное) кольцо (без делителей нуля). Тогда в +кольце многочленов $R[x]$ также нет делителей нуля. +\end{exercise} + +\begin{proof}[Доказательство леммы Гаусса] +Пусть $f(x) = g(x)h(x)$, где $g(x), h(x)\in K[x]$. Так как кольцо +$R$ факториально, то для любого набора элементов из $R$ определены +наибольший общий делитель и наименьшее общее кратное. С~учётом этого +приведём все коэффициенты многочлена $g(x)$ к общему знаменателю, +после чего вынесем за скобку этот общий знаменатель и наибольший +общий делитель всех числителей. В результате в скобках останется +примитивный многочлен $g_1(x) \in R[x]$, а за скобками~--- некоторый +элемент из поля~$K$. Аналогичным образом найдём примитивный +многочлен $h_1(x) \in R[x]$, который пропорционален +многочлену~$h(x)$. Теперь мы можем записать $f(x)=\frac{u}{v}g_1(x) +h_1(x)$, где $u,v \in R$, $v \ne 0$ и без ограничения общности можно +считать $(u,v)=1$. Для завершения доказательства достаточно +показать, что элемент $v$ обратим (и тогда разложение $f(x) = +(uv^{-1}g_1(x))h_1(x)$ будет искомым). + +Предположим, что $v$ необратим. Тогда найдётся простой элемент $p +\in R$, который делит~$v$. Рассмотрим гомоморфизм факторизации +$\varphi \colon R \to R/(p)$, $a \mapsto a + (p)$, и соответствующий +ему гомоморфизм колец многочленов $\widetilde \varphi \colon R[x] +\to (R/(p))[x]$. В кольце $R[x]$ у нас имеется равенство $vf(x) = +ug_1(x)h_1(x)$. Взяв образ обеих частей этого равенства при +гомоморфизме $\widetilde \varphi$, мы получим следующее равенство в +кольце $(R / (p))[x]$: +\begin{equation} \label{eqn} +\widetilde \varphi(v) \widetilde \varphi(f(x)) = \widetilde +\varphi(u) \widetilde \varphi(g_1(x)) \widetilde \varphi(h_1(x)). +\end{equation} +Поскольку $p$ делит~$v$, имеем $\widetilde \varphi(v) = 0$, поэтому +левая часть равенства~(\ref{eqn}) равна нулю. С другой стороны, из +условия $(u,v) = 1$ следует, что $\widetilde \varphi(u) \ne 0$, а из +примитивности многочленов $g_1(x)$ и $h_1(x)$ вытекает, что +$\widetilde \varphi(g_1(x)) \ne 0$ и $\widetilde \varphi(h_1(x)) \ne +0$. Таким образом, все три множителя в правой части +равенства~(\ref{eqn}) отличны от нуля. Из упражнений~\ref{ex_1} +и~\ref{ex_2} вытекает, что в кольце $(R / (p))[x]$ нет делителей +нуля, поэтому правая часть равенства~(\ref{eqn}) отлична от нуля, и +мы пришли к противоречию. +\end{proof} + +\begin{corollary} \label{cc} +Если многочлен $f(x)\in R[x]$ может быть разложен в произведение +двух многочленов меньшей степени в кольце $K[x]$, то он может быть +разложен и в произведение двух многочленов меньшей степени в кольце +$R[x]$. +\end{corollary} + +\begin{theorem} +Если кольцо $R$ факториально, то кольцо многочленов $R[x]$ также +факториально. +\end{theorem} + +\begin{proof} +Следствие~\ref{cc} показывает, что простые элементы кольца +$R[x]$~--- это в точности элементы одного из следующих двух типов: + +1) простые элементы кольца $R$ (рассматриваемые как многочлены +степени~$0$ в $R[x]$); + +2) примитивные многочлены из $R[x]$, неприводимые над полем +отношений~$K$. + +Ясно, что каждый многочлен из $R[x]$ разлагается в произведение +таких многочленов. Предположим, что какой-то элемент из $R[x]$ двумя +способами представим в виде такого произведения: +$$ +a_1 \ldots a_n b_1(x) \ldots b_m(x) = a'_1 \ldots a'_k b'_1(x) +\ldots b'_l(x), +$$ +где $a_i, a'_j$~--- простые элементы типа~1 и $b_i(x), b'_j(x)$~--- +простые элементы типа~2. + +Рассмотрим эти разложения в кольце $K[x]$. Как мы уже знаем из +теоремы~\ref{thm_er_ufd}, кольцо $K[x]$ факториально. Отсюда +следует, что $m = l$ и после подходящей перенумерации элементов +$b'_j(x)$ получается, что при всех $j = 1, \ldots, m$ элементы +$b_j(x)$ и $b'_j(x)$ ассоциированы в $K[x]$, а в силу примитивности +они ассоциированы и в $R[x]$. После сокращения всех таких элементов +у нас останутся два разложения на простые множители (какого-то) +элемента из~$R$. Но кольцо $R$ факториально, поэтому эти два +разложения совпадают с точностью до перестановки множителей и +ассоциированности. +\end{proof} + +\begin{theorem} +Пусть $K$~--- произвольное поле. Тогда кольцо многочленов +$K[x_1,\ldots,x_n]$ факториально. +\end{theorem} + +\begin{proof} +Воспользуемся индукцией по~$n$. При $n=1$ наше кольцо евклидово и по +теореме~\ref{thm_er_ufd} факториально. При $n > 1$ имеем $K[x_1, +\ldots, x_n] = K[x_1, \ldots, x_{n-1}][x_n]$, кольцо $K[x_1, \ldots, +x_{n-1}]$ факториально по предположению индукции и требуемый +результат следует из предыдущей теоремы. +\end{proof} + +\begin{remark} +Несмотря на естественность условия единственности разложения на +простые множители, большинство колец не являются факториальными. +Например, таковым не является кольцо $\ZZ[\sqrt{-5}]$, состоящее из +всех комплексных чисел вида $a + b \sqrt{-5}$, где $a,b \in \ZZ$: в +этом кольце число $6$ разлагается на простые множители двумя +различными способами: $6 = 2 \cdot 3 = (1 + \sqrt{-5})(1 - +\sqrt{-5})$. +\end{remark} + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~3, +\S\,5, 10 и глава~9, \S\,5) +\bibitem{Ko1} +А.\,И.~Кострикин. Введение в алгебру. Основы алгебры. М.: Наука. +Физматлит, 1994 (глава~5, \S\,2,3,4) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~4, \S\,2) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава 14, \S\,63--64) +\end{thebibliography} + + +\end{document} diff --git a/algebra/tex/algebra_08_[27.05.2016].tex b/algebra/tex/algebra_08_[27.05.2016].tex new file mode 100644 index 0000000..b003531 --- /dev/null +++ b/algebra/tex/algebra_08_[27.05.2016].tex @@ -0,0 +1,625 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} +\usepackage{enumitem} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} +\DeclareMathOperator{\Tor}{\mathrm{Tor}} +%\newcommand{\Tor}{\mathop{\mathrm{Tor}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +%\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exercise}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лектор Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\bigskip + +\section*{Лекция~8} + +\medskip + +{\it Элементарные симметрические многочлены. Основная теорема о +симметрических многочленах. Лексикографический порядок. Теорема +Виета. Дискриминант многочлена.} + +\medskip + +Вернемся ненадолго к теме прошлой лекции. Рассмотрим кольцо $R = K[x_1, \ldots, x_n]$, где $K$ --- поле. +На семинарах разбиралось, что оно не является кольцом главных идеалов и, соответственно, евклидовым кольцом. Однако несмотря на это: + +\textbf{Теорема.} Кольцо $R$ факториально. + +Впрочем, доказывать эту теорему мы не будем. + +Вернемся теперь к теме текущей лекции. Пусть $K$~--- произвольное поле. + +\begin{definition} +Многочлен $f(x_1,\ldots,x_n)\in K[x_1,\ldots,x_n]$ называется {\it +симметрическим}, если +$f(x_{\tau(1)},\ldots,x_{\tau(n)})=f(x_1,\ldots,x_n)$ для всякой +перестановки $\tau \in S_n$. +\end{definition} + +\textbf{Примеры:} + +1) Многочлен $x_1x_2 + x_2x_3$ не является симметрическим, а вот многочлен $x_1x_2 + x_2x_3 + x_1x_3$ --- является. + +2) {\it Степенные суммы} $s_k(x_1, \ldots, x_n) = x_1^k + x_2^k + +\ldots + x_n^k$ являются симметрическими многочленами. + +3) {\it Элементарные симметрические многочлены} +$$ +\sigma_1(x_1, \ldots, x_n) = x_1 + x_2 + \ldots + x_n; +$$ +$$ +\sigma_2(x_1, \ldots, x_n) = \sum \limits_{1 \leqslant i < j +\leqslant n} x_i x_j; +$$ +$$ +.................................................. +$$ +$$ +\sigma_k(x_1, \ldots, x_n) = \sum \limits_{1 \leqslant i_1 < i_2 < +\ldots < i_k \leqslant n} x_{i_1} x_{i_2} \ldots x_{i_k}; +$$ +$$ +.................................................. +$$ +$$ +\sigma_n(x_1, \ldots, x_n) = x_1 x_2 \ldots x_n +$$ +являются симметрическими. + +5) Определитель Вандермонда +$$ +V(x_1, \ldots, x_n) = +\begin{vmatrix} +1 & x_1 & x_1^2 & \ldots & x_1^{n-1} \\ +1 & x_2 & x_2^2 & \ldots & x_2^{n-1} \\ +\ldots & \ldots & \ldots & \ldots & \ldots \\ +1 & x_n & x_n^2 & \ldots & x_n^{n-1} +\end{vmatrix} = +\prod \limits_{1 \leqslant i < j \leqslant n} (x_j - x_i) +$$ +симметрическим многочленом не является (при перестановке индексов +умножается на её знак), а вот его квадрат уже является. + +Основная цель этой лекции~--- понять, как устроены все +симметрические многочлены. + +Легко видеть, что все симметрические многочлены образуют подкольцо +(и даже подалгебру) в $K[x_1, \ldots, x_n]$. В~частности, если +$F(y_1, \ldots, y_k)$~--- произвольный многочлен и $f_1(x_1, \ldots, +x_n)$, $\ldots$, $f_k(x_1, \ldots, x_n)$~--- симметрические +многочлены, то многочлен +$$ +F(f_1(x_1, \ldots, x_n), \ldots, f_k(x_1, \ldots, x_n)) \in K[x_1, +\ldots, x_n] +$$ +также является симметрическим. Мы покажем, что всякий симметрический +многочлен однозначно выражается через элементарные симметрические +многочлены. + +\medskip + +{\bf Основная теорема о симметрических многочленах.}\ Для всякого +симметрического многочлена $f(x_1, \ldots, x_n)$ существует и +единственен такой многочлен $F(y_1, \ldots, y_n)$, что +$$ +f(x_1, \ldots, x_n) = F(\sigma_1(x_1, \ldots, x_n), \ldots, +\sigma_n(x_1, \ldots, x_n)). +$$ + +\textbf{Пример.} $s_2(x_1, \ldots, x_n) = x_1^2 + \ldots + x_n^2 = +(x_1 + \ldots + x_n)^2 - 2\sum \limits_{1 \leqslant i < j \leqslant +n} x_i x_j = \sigma_1^2 - 2\sigma_2$, откуда $F(y_1, \ldots, y_n) = +y_1^2 - 2y_2$. + + +Доказательство этой теоремы потребует некоторой подготовки. Начнём с +того, что определим старший член многочлена от многих переменных. + +Пусть $M_n$~--- множество всех одночленов от переменных $x_1, +\ldots, x_n$. Определим на $M_n$ {\it лексикографический порядок} +следующим образом: +$$ +ax_1^{i_1}x_2^{i_2}\ldots x_n^{i_n} \prec bx_1^{j_1}x_2^{j_2}\ldots +x_n^{j_n} \quad \Leftrightarrow \quad \exists k: \: i_1=j_1,\ldots, +i_{k-1}=j_{k-1}, i_k 0$ +является поле $\ZZ_p(x)$. + +\begin{proposition} +Характеристика произвольного поля $K$ либо равна нулю, либо является +простым числом. +\end{proposition} + +\begin{proof} +Положим $p = \xar K$ и предположим, что $p > 0$. Так как $0 \ne 1$ +в~$K$, то $p \geqslant 2$. Если число $p$ не является простым, то $p += mk$ для некоторых $m,k \in \NN$, $1 < m,k < p$. Тогда в $K$ верно +равенство +$$ +0 = \underbrace{1 + \ldots + 1}_{mk} = (\underbrace{1 + \ldots + +1}_m)(\underbrace{1 + \ldots + 1}_k). +$$ +В~силу минимальности числа~$p$ в последнем выражении обе скобки +отличны от нуля, но такое невозможно, так как в поле нет делителей +нуля. +\end{proof} + +\begin{exercise} +Пересечение любого семейства подполей фиксированного поля~$K$ +является подполем в~$K$. В частности, для всякого подмножества $S +\subseteq K$ существует наименьшее по включению подполе в~$K$, +содержащее~$S$. Это подполе совпадает с пересечением всех подполей +в~$K$, содержащих~$S$. +\end{exercise} + +Из приведённого выше упражнения следует, что в каждом поле +существует наименьшее по включению подполе, оно называется {\it +простым подполем}. + +\begin{proposition} +Пусть $K$~--- поле и $K_0$~--- его простое подполе. Тогда: + +\textup{(1)} если $\xar K = p > 0$, то $K_0 \cong \ZZ_p$; + +\textup{(2)} если $\xar K = 0$, то $K_0 \cong \QQ$. +\end{proposition} + +\begin{proof} +Пусть $\langle 1 \rangle \subseteq K$~--- циклическая подгруппа по +сложению, порождённая единицей. Заметим, что $\langle 1 \rangle$~--- +подкольцо в~$K$. Поскольку всякое подполе поля $K$ содержит единицу, +оно содержит и множество~$\langle 1 \rangle$. Следовательно, +$\langle 1 \rangle \subseteq K_0$. + +Если $\xar K = p > 0$, то мы имеем изоморфизм колец $\langle 1 +\rangle \simeq \ZZ_p$. Но, как мы уже знаем из лекции~6, +кольцо~$\ZZ_p$ является полем, поэтому $K_0 = \langle 1 \rangle +\simeq \ZZ_p$. + +Если же $\xar K = 0$, то мы имеем изоморфизм колец $\langle 1 +\rangle \cong \ZZ$. Тогда $K_0$ содержит все дроби вида $a/b$, где +$a,b \in \langle 1 \rangle$ и $b \ne 0$. Ясно, что все такие дроби +образуют поле, изоморфное полю~$\QQ$. +\end{proof} + +\begin{definition} +Если $K$~--- подполе поля $F$, то говорят, что $F$~--- {\it +расширение} поля~$K$. +\end{definition} + +Например, всякое поле есть расширение своего простого подполя. + +\begin{definition} +{\it Степенью} расширения полей $K \subseteq F$ называется +размерность поля $F$ как векторного пространства над полем~$K$. +Обозначение $[F : K]$. +\end{definition} + +Например, $[\CC : \RR] = 2$ и $[\RR : \QQ] = \infty$. + +\begin{definition} +Расширение полей $K\subseteq F$ называется {\it конечным}, если $[F +: K] < \infty$. +\end{definition} + +\begin{proposition} +Пусть $K\subseteq F$ и $F\subseteq L$~--- конечные расширения полей. +Тогда расширение $F\subseteq L$ также конечно и $[L:K]=[L:F][F:K]$. +\end{proposition} + +\begin{proof} +Пусть $e_1,\ldots,e_n$~--- базис $F$ над $K$ и $f_1,\ldots,f_m$~--- +базис $L$ над $F$. Достаточно доказать, что множество +\begin{equation} \label{eqn_basis} +\lbrace e_i f_j \mid i = 1,\ldots,n;\, j = 1,\ldots, m \rbrace +\end{equation} +является базисом $L$ над~$K$. Для этого сначала покажем, что +произвольный элемент $a\in L$ представим в виде линейной комбинации +элементов (\ref{eqn_basis}) с коэффициентами из~$K$. Поскольку $f_1, +\ldots, f_m$~--- базис $L$ над~$F$, имеем $a = \sum \limits_{j=1}^m +\alpha_j f_j$ для некоторых $\alpha_j \in F$. Далее, поскольку $e_1, +\ldots, e_n$~--- базис $F$ над~$K$, для каждого $j = 1, \ldots, m$ +имеем $\alpha_j = \sum \limits_{i = 1}^n \beta_{ij} e_i$ для +некоторых $\beta_{ij}\in K$. Отсюда получаем, что $a = \sum +\limits_{i=1}^n \sum \limits_{j=1}^n \beta_{ij} (e_if_j)$. + +Теперь проверим линейную независимость элементов~(\ref{eqn_basis}). +Пусть $\sum \limits_{i=1}^n \sum \limits_{j=1}^n \gamma_{ij} +(e_jf_i) = 0$, где $\gamma_{ij} \in K$. Переписав это равенство в +виде $\sum \limits_{j=1}^m (\sum \limits_{i=1}^n \gamma_{ij}e_i)f_j += 0$ и воспользовавшись тем, что элементы $f_1, \ldots, f_m$ линейно +независимы над~$F$, мы получим $\sum \limits_{i=1}^n \gamma_{ij}e_i += 0$ для каждого $j = 1, \ldots, m$. Теперь из линейной +независимости элементов $e_1, \ldots, e_n$ над~$K$ вытекает, что +$\gamma_{ij} = 0$ при всех $i,j$. Таким образом, +элементы~(\ref{eqn_basis}) линейно независимы. +\end{proof} + +Пусть $K\subseteq F$~--- расширение полей. + +\begin{definition} +Элемент $\alpha \in F$ называется {\it алгебраическим} над подполем +$K$, если существует ненулевой многочлен $f(x)\in K[x]$, для +которого $f(\alpha) = 0$. В~противном случае $\alpha$ называется +{\it трансцендентным} элементом над~$K$. +\end{definition} + +\begin{definition} +{\it Минимальным многочленом} алгебраического элемента $\alpha \in +F$ над подполем $K$ называется ненулевой многочлен $h_\alpha(x)$ +наименьшей степени, для которого $h_\alpha(\alpha) = 0$. +\end{definition} + +\begin{lemma} \label{lemma_min_pol} +Пусть $\alpha \in F$~--- алгебраический элемент над~$K$ и +$h_\alpha(x)$~--- его минимальный многочлен. Тогда: + +\textup{(а)} $h_\alpha(x)$ определён однозначно с точностью до +пропорциональности; + +\textup{(б)} $h_\alpha(x)$ является неприводимым многочленом над +полем~$K$; + +\textup{(в)} для произвольного многочлена $f(x)\in K[x]$ равенство +$f(\alpha)=0$ имеет место тогда и только тогда, когда $h_\alpha(x)$ +делит~$f(x)$. +\end{lemma} + +\begin{proof} +(а) Пусть $h'_\alpha(x)$~--- ещё один минимальный многочлен элемента +$\alpha$ над~$K$. Тогда $\deg h_\alpha(x) = \deg h'_\alpha(x)$. +Умножив многочлены $h_\alpha(x)$ и $h'_\alpha(x)$ на подходящие +константы, добьёмся того, чтобы их старшие коэффициенты стали равны +единице. После этого положим $g(x) = h_\alpha(x) - h'_\alpha(x)$. +Тогда $g(\alpha) = 0$ и $\deg g(x) < \deg h_\alpha(x)$. Учитывая +определение минимального многочлена, мы получаем $g(x) = 0$. + +(б) Пусть $h_\alpha(x) = h_1(x) h_2(x)$ для некоторых $h_1(x), +h_2(x) \in K[x]$, причём $0 < \deg h_i(x) < \deg h_\alpha(x)$ при $i += 1,2$. Так как $h_\alpha(\alpha) = 0$, то либо $h_1(\alpha)=0$, +либо $h_2(\alpha)=0$, что противоречит минимальности~$h_\alpha(x)$. + +(в) Очевидно, что если $h_\alpha(x)$ делит $f(x)$, то $f(\alpha) = +0$. Докажем обратное утверждение. Разделим $f(x)$ на $h_\alpha(x)$ с +остатком: $f(x) = q(x)h_\alpha(x) + r(x)$, где $q(x), r(x) \in K[x]$ +и $\deg r(x) < \deg h_\alpha(x)$. Тогда условие $f(\alpha)=0$ влечёт +$r(\alpha) = 0$. Из минимальности многочлена $h_\alpha(x)$ получаем +$r(x)=0$. +\end{proof} + +Для каждого элемента $\alpha \in F$ обозначим через $K(\alpha)$ +наименьшее подполе в~$F$, содержащее $K$ и~$\alpha$. + +\begin{proposition} +Пусть $\alpha \in F$~--- алгебраический элемент над~$K$ и $n$~--- +степень его минимального многочлена над~$K$. Тогда +$$ +K(\alpha) = \{\beta_0 + \beta_1 \alpha + \ldots + \beta_{n-1} +\alpha^{n-1} \mid \beta_0, \ldots, \beta_{n-1} \in K\}. +$$ +Кроме того, элементы $1, \alpha, \alpha^2, \ldots, \alpha^{n-1}$ +линейно независимы над~$K$. В~частности, $[K(\alpha) : K] = n$. +\end{proposition} + +\begin{proof} +Легко видеть, что +$$ +K(\alpha) = \lbrace \frac{f(\alpha)}{g(\alpha)} \mid f(x), g(x) \in +K[x], f(\alpha) \ne 0 \rbrace. +$$ +Действительно, такие элементы лежат в любом подполе поля~$F$, +содержащем~$K$ и~$\alpha$, и сами образуют поле. Теперь возьмём +произвольный элемент $\frac{f(\alpha)}{g(\alpha)} \in K(\alpha)$ и +покажем, что он представим в виде, указанном в условии. Пусть +$h_\alpha(x) \in K[x]$~--- минимальный многочлен элемента~$\alpha$ +над~$K$. Поскольку $g(\alpha) \ne 0$, в силу +леммы~\ref{lemma_min_pol}(в) многочлен $h_\alpha(x)$ не +делит~$g(x)$. Но $h_\alpha(x)$ неприводим по +лемме~\ref{lemma_min_pol}(б), поэтому $(g(x), h_\alpha(x)) = 1$. +Значит, существуют такие многочлены $u(x), v(x) \in K[x]$, что $u(x) +g(x) + v(x) h_\alpha(x) = 1$. Подставляя в последнее равенство $x = +\alpha$, мы получаем $u(\alpha) g(\alpha) = 1$. Отсюда +$\frac{f(\alpha)}{g(\alpha)} = f(\alpha) u(\alpha)$, и мы избавились +от знаменателя. Теперь уменьшим степень числителя. Пусть $r(x)$~--- +остаток от деления $f(x)u(x)$ на~$h_\alpha(x)$. Тогда $f(\alpha) +u(\alpha) = r(\alpha)$ и, значит, $\frac{f(\alpha)}{g(\alpha)} = +r(\alpha)$, что показывает представимость элемента +$\frac{f\alpha)}{g(\alpha)}$ в требуемом виде. + +Остаётся показать, что элементы $1, \alpha, \ldots, \alpha^{n-1}$ +поля $F$ линейно независимы над~$K$. Если $$\gamma_0 + \gamma_1 +\alpha + \ldots + \gamma_{n-1} \alpha^{n-1} = 0$$ для некоторых +$\gamma_0, \gamma_1, \ldots, \gamma_{n-1} \in K$, то для многочлена +$w(x) = \gamma_0 + \gamma_1x + \ldots + \gamma_{n-1}x^{n-1} \in +K[x]$ получаем $w(\alpha) = 0$. Тогда из +леммы~\ref{lemma_min_pol}(в) и условия $\deg w(x) < \deg +h_\alpha(x)$ вытекает, что $w(x) = 0$, то есть $\gamma_0 = \gamma_1 += \ldots = \gamma_{n-1} = 0$. +\end{proof} + +\begin{theorem} +Пусть $K$~--- произвольное поле и $f(x)\in K[x]$~--- многочлен +положительной степени. Тогда существует конечное расширение +$K\subseteq F$, в котором многочлен $f(x)$ имеет корень. +\end{theorem} + +\begin{proof} +Достаточно построить конечное расширение, в~котором имеет корень +один из неприводимых делителей $p(x)$ многочлена~$f(x)$. + +Покажем сначала, что факторкольцо $K[x]/(p(x))$ является полем. В +самом деле, если многочлен $g(x) \in\nobreak K[x]$ не делится +на~$p(x)$, то $(g(x), p(x)) = 1$, и тогда существуют многочлены +$u(x), v(x) \in K[x]$, для которых $u(x) g(x) + v(x) p(x) = 1$. Взяв +образ последнего равенства в факторкольце $K[x] / (p(x))$, мы +получим +$$(u(x) + (p(x))) (g(x) + (p(x))) = 1 + (p(x)),$$ т.\,е. элемент +$u(x)+(p(x))$ является обратным к $g(x)+(p(x))$. Значит, $K[x] / +(p(x))$~--- поле, и мы возьмём его в качестве~$F$. + +Заметим теперь, что расширение $K \subseteq F$ является конечным. +Действительно, для всякого многочлена $g(x) \in K[x]$ в поле $F = +K[x]/(p(x))$ имеем $g(x) + (p(x)) = r(x) + (p(x))$, где $r(x)$~--- +остаток от деления $g(x)$ на $p(x)$. Отсюда следует, что $F$ +порождается как векторное пространство над~$K$ элементами +$$ +1 + (p(x)), x + (p(x)), \ldots, x^{n-1} + (p(x)), +$$ +где $n = \deg p(x)$. (Так же легко показать, что эти элементы +образуют базис в $F$ над~$K$.) + +Остаётся показать, что в поле $F$ многочлен $p(x)$ имеет корень. Это +похоже на обман, но корнем будет... $x + (p(x))$. Действительно, +пусть $p(x) = a_n x^n + a_{n-1} x^{n-1} + a_1x + a_0$, где $a_0, +a_1, \ldots, a_n \in K$. Тогда +\begin{multline*} +p(x + (p(x))) = a_n(x + (p(x)))^n + a_{n-1} (x + (p(x)))^{n-1} + +\ldots + a_1 (x + (p(x)) + a_0 =\\ += (a_nx^n + a_{n-1}x^{n-1} + \ldots a_1 x + a_0) + (p(x)) = p(x) + +(p(x)) = (p(x)), +\end{multline*} +а $(p(x))$ есть не что иное, как нуль в~$F$. +\end{proof} + +Говорят, что поле $K[x] / (p(x))$ получено из поля $K$ {\it +присоединением корня} неприводимого многочлена~$p(x)$. Нетрудно +проверить, что если $\alpha$~--- некоторый корень многочлена $p(x)$ +в $K[x]/(p(x))$, то поле $K[x]/(p(x))$ совпадает с подполем +$K(\alpha)$. + +\begin{definition} +Пусть $K$~--- некоторое поле и $f(x)\in K[x]$~--- многочлен +положительной степени. {\it Полем разложения} многочлена $f(x)$ +называется такое расширение $F$ поля~$K$, что + +(1) многочлен $f(x)$ разлагается над $F$ на линейные множители; + +(2) корни многочлена $f(x)$ не лежат ни в каком собственном подполе +поля~$F$, содержащем~$K$. +\end{definition} + +\begin{example} +Рассмотрим многочлен $f(x) = x^4+x^3+x^2+x+1$ над $\QQ$. Так как +$(x-1)f(x) = x^5-1$, корнями многочлена $f(x)$ являются все корни +степени $5$ из единицы, отличные от единицы. Если присоединить к +$\QQ$ один из корней $\epsilon$ многочлена~$f$, то его остальные +корни можно получить, возводя число $\epsilon$ в натуральные +степени. Таким образом, присоединение одного корня сразу приводит к +полю разложения многочлена. +\end{example} + + +\begin{example} +Многочлен $f(x)=x^3-2$ неприводим над полем $\QQ$. Присоединение к +полю $\QQ$ корня этого многочлена приводит к полю $\QQ[x]/(x^3-2) +\cong \QQ(\sqrt[3]{2})$. Данное поле не является полем разложения +многочлена~$f(x)$, поскольку в нём $f(x)$ имеет только один корень и +не имеет двух других корней. Поскольку корнями данного многочлена +являются числа +$$ +\sqrt[3]{2}, \quad \sqrt[3]{2}(-\frac{1}{2} + \cfrac{\sqrt{-3}}{2}), +\quad \sqrt[3]{2}(-\frac{1}{2} - \frac{\sqrt{-3}}{2}), +$$ +полем разложения многочлена $f(x)$ является поле +$$ +F = \{\alpha_0 + \alpha_1 \sqrt[3]{2} + \alpha_2 \sqrt[3]{4} + +\alpha_3 \sqrt{-3} + \alpha_4 \sqrt[3]{2} \sqrt{-3} + \alpha_5 +\sqrt[3]{4} \sqrt{-3} \mid \alpha_i \in \QQ\}, +$$ +которое имеет над $\QQ$ степень~$6$. +\end{example} + +Пусть $F$ и $F'$~--- два расширения поля~$K$. Говорят, что +изоморфизм $F \xrightarrow{\sim} F'$ является \textit{тождественным +на~$K$}, если при этом изоморфизме каждый элемент поля $K$ переходит +в себя. + +\begin{theorem} +Поле разложения любого многочлена $f(x) \in K[x]$ существует и +единственно с точностью до изоморфизма, тождественного на~$K$. +\end{theorem} + +Доказательство этой теоремы можно найти, например, в книге +Э.\,Б.~Винберга \guillemotleft Курс алгебры\guillemotright{}. Мы не +включаем это доказательство в программу нашего курса. + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~1, +\S\S\,3--6 и глава~9, \S\,5) +\bibitem{Ko1} +А.\,И.~Кострикин. Введение в алгебру. Основы алгебры. М.: Наука. +Физматлит, 1994 (глава~4, \S\,3) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~5, \S\,1) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава~14, \S\S\,66-67) +\end{thebibliography} + + + +\end{document} diff --git a/algebra/tex/algebra_10_[11.06.2015].tex b/algebra/tex/algebra_10_[11.06.2015].tex new file mode 100644 index 0000000..b1a7a01 --- /dev/null +++ b/algebra/tex/algebra_10_[11.06.2015].tex @@ -0,0 +1,487 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} +\usepackage{enumitem} + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} +\DeclareMathOperator{\Tor}{\mathrm{Tor}} +\newcommand{\xar}{\mathop{\mathrm{char}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +%\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exercise}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% +\begin{document} +% +\sloppy +%\thispagestyle{empty} +% +\centerline{\large \bf Лекции курса \guillemotleft +Алгебра\guillemotright{}, лекторы И.\,В.~Аржанцев и Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2014/2015 учебный год} + + +\bigskip + +\section*{Лекция~10} + +\medskip + +{\it Конечные поля. Простое подполе и порядок конечного поля. +Автоморфизм Фробениуса. Теорема существования и единственности для +конечных полей. Поле из четырех элементов. Цикличность +мультипликативной группы. Неприводимые многочлены над конечным +полем. Подполя конечного поля.} + +\medskip + +В этой лекции будем использовать следующее обозначение: $K^\times = +K \setminus \lbrace 0 \rbrace$~--- мультипликативная группа +поля~$K$. + +Пусть $K$~--- конечное поле. Тогда его характеристика отлична от +нуля и потому равна некоторому простому числу~$p$. Значит, $K$ +содержит поле $\ZZ_p$ в качестве простого подполя. + +\begin{theorem} \label{thm1} +Число элементов конечного поля равно $p^n$ для некоторого простого +$p$ и натурального $n$. +\end{theorem} + +\begin{proof} +Пусть $K$~--- конечное поле характеристики~$p$, и пусть размерность +$K$ над простым подполем $\ZZ_p$ равна~$n$. Выберем в $K$ базис +$e_1, \ldots, e_n$ над $\ZZ_p$. Тогда каждый элемент из $K$ +однозначно представляется в виде $\alpha_1 e_1 + \ldots + \alpha_n +e_n$, где $\alpha_1, \ldots, \alpha_n$ пробегают~$\ZZ_p$. +Следовательно, в $K$ ровно $p^n$ элементов. +\end{proof} + +Пусть $K$~--- произвольное поле характеристики $p > 0$. Рассмотрим +отображение +$$ +\varphi \colon K \to K, \quad a \mapsto a^p. +$$ +Покажем, что $\varphi$~--- гомоморфизм. Для любых $a,b \in K$ по +формуле бинома Ньютона имеем +$$ +(a + b)^p = a^p + C_p^1 a^{p-1}b + C_p^2 a^{p-2}b^2 + \ldots + +C_p^{p-1} a b^{p-1} + b^p. +$$ +Так как $p$~--- простое число, то все биномиальные коэффициенты +$C_p^i$ при $1 \leqslant i \leqslant p-1$ делятся на~$p$. Это +значит, что в нашем поле характеристики $p$ все эти коэффициенты +обнуляются, в результате чего получаем $(a + b)^p = a^p + b^p$. +Ясно, что $(ab)^p = a^p b^p$, так что $\varphi$~--- гомоморфизм. +Ядро любого гомоморфизма колец является идеалом, поэтому $\Ker +\varphi$~--- идеал в~$K$. Но в поле нет собственных идеалов, поэтому +$\Ker \varphi = \lbrace 0 \rbrace$, откуда $\varphi$ инъективен. + +Если поле $K$ конечно, то инъективное отображение из $K$ в $K$ +автоматически биективно. В этой ситуации $\varphi$ называется {\it +автоморфизмом Фробениуса} поля $K$. + +\begin{remark} +Пусть $K$~--- произвольное поле и $\psi$~--- произвольный +автоморфизм (т.\,е. изоморфизм на себя) поля~$K$. Легко видеть, что +множество неподвижных точек $K^{\psi} = \{ a \in K \mid \psi(a) = +a\}$ является подполем в~$K$. +\end{remark} + +Прежде чем перейти к следующей теореме, обсудим понятие формальной +производной многочлена. Пусть $K[x]$~--- кольцо многочленов над +произвольным полем~$K$. Формальной производной называется +отображение $K[x] \to K[x]$, которое каждому многочлену $f(x) = +a_nx^n + a_{n-1}x^{n-1} + \ldots + a_1 x + a_0$ сопоставляет +многочлен $f'(x) = na_n x^{n-1} + (n-1)a_{n-1}x^{n-2} + \ldots + +a_1$. Из определения следует, что это отображение линейно. Легко +проверить, что для любых $f,g \in K[x]$ справедливо привычное нам +равенство $(fg)' = f'g + fg'$ (в~силу дистрибутивности умножения +проверка этого равенства сводится к случаю, когда $f,g$~--- +одночлены). В~частности, $(f(x)^m)' = mf(x)^{m-1}$ для любых $f(x) +\in K[x]$ и $m \in \NN$. + +\begin{theorem} \label{thm2} +Для всякого простого числа $p$ и натурального числа $n$ существует +единственное \textup(с точностью до изоморфизма\textup) поле из +$p^n$ элементов. +\end{theorem} + +\begin{proof} +Положим $q = p^n$ для краткости. + +{\it Единственность.}\ Пусть поле $K$ содержит $q$ элементов. Тогда +мультипликативная группа $K^{\times}$ имеет порядок $q-1$. По +следствию~3 из теоремы Лагранжа мы имеем $a^{q-1}=1$ для всех $a \in +K \setminus \{0\}$, откуда $a^q - a = 0$ для всех $a\in K$. Это +значит, что все элементы поля $K$ являются корнями многочлена $x^q - +x \in \ZZ_p[x]$. Отсюда следует, что $K$ является полем разложения +многочлена $x^q - x$ над $\ZZ_p$. Из теоремы о полях разложения, +формулировавшейся на прошлой лекции, следует, что поле $K$ +единственно с точностью до изоморфизма. + +\smallskip + +{\it Существование.} Пусть $K$~--- поле разложения многочлена $f(x) += x^q - x \in \ZZ_p[x]$. Тогда имеем $f'(x)= qx^{q-1} - 1 =\nobreak +-1$ ($qx^{q-1}$ обнуляется, так как $q$ делится на~$p$, а $p$~--- +характеристика поля~$\ZZ_p$). Покажем, что многочлен $f(x)$ не имеет +кратных корней в~$K$. Действительно, если $\alpha$~--- корень +кратности $m \geqslant 2$, то $f(x) = (x - \alpha)^m g(x)$ для +некоторого многочлена $g(x) \in \ZZ_p[x]$. Но тогда $f'(x) = +m(x-\alpha)^{m-1} g(x) + (x - \alpha)^m g'(x)$, откуда видно, что +$f'(x)$ делится на $(x - \alpha)$. Но последнее невозможно, ибо +$f'(x) = -1$~--- многочлен нулевой степени. Итак, многочлен $f(x)$ +имеет ровно $q$ различных корней в поле~$K$. Заметим, что эти +корни~--- в точности неподвижные точки автоморфизма $\varphi^n = +\underbrace{\varphi \circ \ldots \circ \varphi}_n$, где +$\varphi$~--- автоморфизм Фробениуса. В~самом деле, для элемента $a +\in K$ равенство $a^q - a = 0$ выполнено тогда и только тогда, когда +$a^{p^n} = a$, т.\,е. $\varphi^n(a) = a$. Значит, корни многочлена +$x^q-x$ образуют подполе в~$K$, которое по определению поля +разложения совпадает с~$K$. Следовательно, в поле $K$ ровно $q$ +элементов. +\end{proof} + +Конечныe поля еще называют {\it полями Галуа}. Поле из $q$ элементов +обозначают $\FF_q$. Например, $\FF_p \cong \ZZ_p$. + +\begin{example} +Построим явно поле из четырёх элементов. Многочлен $x^2+x+1$ +неприводим над $\ZZ_2$. Значит, факторкольцо $\ZZ_2[x]/(x^2+x+1)$ +является полем и его элементы~--- это классы $\overline{0}, +\overline{1}, \overline{x}, \overline{x+1}$ (запись $\overline a$ +означает класс элемента $a$ в факторкольце $\ZZ_2[x]/(x^2+x+1)$). +Например, произведение $\overline{x} \cdot \overline{x+1}$~--- это +класс элемента $x^2+x$, который равен $\overline{1}$. +\end{example} + +\begin{proposition} +Мультипликативная группа конечного поля $\FF_q$ является +циклической. +\end{proposition} + +\begin{proof} +Заметим, что $\FF_q^\times$~--- конечная абелева группа, и обозначим +через $m$ её экспоненту (см. конец лекции~4). Предположим, что +группа $\FF_q^{\times}$ не является циклической. Тогда $m < q-1$ по +следствию~2 лекции~4. По определению экспоненты это значит, что $a^m += 1$ для всех $a \in \FF_q^{\times}$. Но тогда многочлен $x^m-1$ +имеет в поле $\FF_q$ больше корней, чем его степень,~--- +противоречие. +\end{proof} + +\begin{theorem} +Конечное поле $\FF_q$, где $q=p^n$, можно реализовать в виде +$\ZZ_p[x]/(h(x))$, где $h(x)$~--- неприводимый многочлен степени $n$ +над $\ZZ_p$. В~частности, для всякого $n \in \NN$ в кольце +$\ZZ_p[x]$ есть неприводимый многочлен степени~$n$. +\end{theorem} + +\begin{proof} +Пусть $\alpha$~--- порождающий элемент группы $\FF_q^{\times}$. +Тогда минимальное подполе $\ZZ_p(\alpha)$ поля~$\FF_q$, содержащее +$\alpha$, совпадает с~$\FF_q$. Значит, поле $\FF_q$ изоморфно полю +$\ZZ_p[x]/(h(x))$, где $h(x)$~--- минимальный многочлен элемента +$\alpha$ над $\ZZ_p$. Из результатов прошлой лекции следует, что +многочлен $h(x)$ неприводим. Поскольку степень расширения $[\FF_q : +\ZZ_p]$ равна~$n$, этот многочлен имеет степень~$n$. +\end{proof} + +\begin{theorem} +Всякое подполе поля $\FF_q$, где $q=p^n$, изоморфно $\FF_{p^m}$, где +$m$~--- делитель числа $n$. Обратно, для каждого делителя $m$ числа +$n$ в поле $\FF_q$ существует ровно одно подполе из $p^m$ элементов. +\end{theorem} + +\begin{proof} +Пусть $F$~--- подполе поля $\FF_q$. По определению простого подполя +имеем $F \supset \ZZ_p$, откуда $\xar F = p$. Тогда +теорема~\ref{thm1} нам сообщает, что $|F| = p^m$ для некоторого $m +\in \NN$. По теореме~\ref{thm2} имеем $F \cong\nobreak \FF_{p^m}$. +Обозначим через $s$ степень (конечного) расширения $F \subset +\FF_q$. Рассуждая так же, как в доказательстве теоремы~\ref{thm1}, +мы получим $p^n = (p^m)^s$, откуда $p^n = p^{ms}$ и $m$ делит~$n$. + +Пусть теперь $m$~--- делитель числа~$n$, т.\,е. $n = ms$ для +некоторого $s \in \NN$. Рассмотрим многочлены $f(x) = x^{p^n} - x$ и +$g(x) = x^{p^m} - x$ над $\ZZ_p$. Заметим, что для элемента $a \in +\FF_q$ равенства $a^{p^m} = a$ следует +$$ +a^{p^n} = a^{p^{ms}} = a^{(p^m)^s} = +(\ldots((a^{p^m})^{p^m})^{p^m}\ldots)^{p^m} \ \text{($s$ раз возвели +в степень $p^m$)} = a. +$$ +Поэтому каждый корень многочлена $g(x)$ является и корнем многочлена +$f(x)$. Отсюда поле разложения многочлена $f(x)$ лежит в поле +разложения многочлена $g(x)$. Значит, $\FF_{p^m}$ содержится в +$\FF_{p^n}$. + +Наконец, все элементы подполя из $p^m$ элементов неподвижны при +автоморфизме $\psi = \underbrace{\varphi \circ \ldots \circ +\varphi}_m \colon x \mapsto x^{p^m}$ ($\varphi$~--- автоморфизм +Фробениуса). Поскольку число корней многочлена $x^{p^m}-x$ в поле +$\FF_q$ не превосходит~$p^m$, множество элементов данного подполя +совпадает с множеством неподвижных точек автоморфизма~$\psi$. +Значит, такое подполе единственно. +\end{proof} + +\bigskip + +\begin{thebibliography}{99} +\bibitem{Vi} +Э.\,Б.~Винберг. Курс алгебры. М.: Факториал Пресс, 2002 (глава~9, +\S\,5) +\bibitem{Ko3} +А.\,И.~Кострикин. Введение в алгебру. Основные структуры алгебры. +М.: Наука. Физматлит, 2000 (глава~5, \S\,2) +\bibitem{SZ} +Сборник задач по алгебре под редакцией А.\,И.~Кострикина. Новое +издание. М.: МЦНМО, 2009 (глава~14, \S\,68) +\bibitem{LN} +Р.~Лидл и Г.~Нидеррайтер. Конечные поля (2 тома). М.: Мир, 1988 +(главы~2--3) +\end{thebibliography} + + + +\end{document} diff --git a/algebra/tex/algebra_full.tex b/algebra/tex/algebra_full.tex new file mode 100644 index 0000000..8a9421c --- /dev/null +++ b/algebra/tex/algebra_full.tex @@ -0,0 +1,3865 @@ +\documentclass[a4paper,10pt]{amsart} + +\usepackage[T2A]{fontenc} +\usepackage[utf8x]{inputenc} +\usepackage{amssymb} +\usepackage[russian]{babel} +\usepackage{geometry} +\usepackage{hyperref} +\usepackage{enumitem} + + +\geometry{a4paper,top=2cm,bottom=2cm,left=2cm,right=2cm} + +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +\newcommand{\Ker}{\mathop{\mathrm{Ker}}} +\renewcommand{\Im}{\mathop{\mathrm{Im}}} +\DeclareMathOperator{\Tor}{\mathrm{Tor}} +\newcommand{\xar}{\mathop{\mathrm{char}}} + +%\def\Ker{{\rm Ker}}% +%\def\Im{{\rm Im}}% +\def\Mat{{\rm Mat}}% +\def\cont{{\rm cont}}% +%\def\Tor{{\rm Tor}}% +\def\Char{{\rm Char}}% +\def\signum{{\rm sig}}% +\def\Sym{{\rm Sym}}% +\def\St{{\rm St}}% +\def\Aut{{\rm Aut}}% +\def\Chi{{\mathbb X}}% +\def\Tau{{\rm T}}% +\def\Rho{{\rm R}}% +\def\rk{{\rm rk}}% +\def\ggT{{\rm ggT}}% +\def\kgV{{\rm kgV}}% +\def\Div{{\rm Div}}% +\def\div{{\rm div}}% +\def\quot{/\!\!/}% +\def\mal{\! \cdot \!}% +\def\Of{{\mathcal{O}}} +% +\def\subgrpneq{\le}% +\def\subgrp{\le}% +\def\ideal#1{\le_{#1}}% +\def\submod#1{\le_{#1}}% +% +\def\Bild{{\rm Bild}}% +\def\Kern{{\rm Kern}}% +\def\bangle#1{{\langle #1 \rangle}}% +\def\rq#1{\widehat{#1}}% +\def\t#1{\widetilde{#1}}% +\def\b#1{\overline{#1}}% +% +\def\abs#1{{\vert #1 \vert}}% +\def\norm#1#2{{\Vert #1 \Vert}_{#2}}% +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}}% +% +\def\C{{\rm C}}% +\def\O{{\rm O}}% +\def\HH{{\mathbb H}}% +\def\LL{{\mathbb L}}% +\def\FF{{\mathbb F}}% +\def\CC{{\mathbb C}}% +\def\KK{{\mathbb K}}% +\def\TT{{\mathbb T}}% +\def\ZZ{{\mathbb Z}}% +\def\RR{{\mathbb R}}% +\def\SS{{\mathbb S}}% +\def\NN{{\mathbb N}}% +\def\QQ{{\mathbb Q}}% +\def\PP{{\mathbb P}}% +\def\AA{{\mathbb A}}% +% +\def\eins{{\mathbf 1}}% +% +\def\AG{{\rm AG}}% +\def\Aut{{\rm Aut}}% +\def\Hol{{\rm Hol}}% +\def\GL{{\rm GL}}% +\def\SL{{\rm SL}}% +\def\SO{{\rm SO}}% +\def\Sp{{\rm Sp}}% +\def\gl{\mathfrak{gl}}% +\def\rg{{\rm rg}}% +\def\sl{\mathfrak{sl}}% +\def\HDiv{{\rm HDiv}}% +\def\CDiv{{\rm CDiv}}% +\def\Res{{\rm Res}}% +\def\Pst{{\rm Pst}}% +\def\Nst{{\rm Nst}}% +\def\rad{{\rm rad}}% +\def\GL{{\rm GL}}% +\def\Tr{{\rm Tr}}% +\def\Pic{{\rm Pic}}% +\def\Hom{{\rm Hom}}% +\def\hom{{\rm hom}}% +\def\Mor{{\rm Mor}}% +\def\codim{{\rm codim}}% +\def\Supp{{\rm Supp}}% +\def\Spec{{\rm Spec}}% +\def\Proj{{\rm Proj}}% +\def\Maps{{\rm Maps}}% +\def\cone{{\rm cone}}% +\def\ord{{\rm ord}}% +\def\pr{{\rm pr}}% +\def\id{{\rm id}}% +\def\mult{{\rm mult}}% +\def\inv{{\rm inv}}% +\def\neut{{\rm neut}}% +% +\def\AAA{\mathcal{A}} +\def\BBB{\mathcal{B}} +\def\CCC{\mathcal{C}} +\def\EEE{\mathcal{E}} +\def\FFF{\mathcal{F}} + +\def\CF{{\rm CF}} +\def\GCD{{\rm GCD}} +\def\Mat{{\rm Mat}} +\def\End{{\rm End}} +\def\cont{{\rm cont}} +\def\Kegel{{\rm Kegel}} +\def\Char{{\rm Char}} +\def\Der{{\rm Der}} +\def\signum{{\rm sg}} +\def\grad{{\rm grad}} +\def\Spur{{\rm Spur}} +\def\Sym{{\rm Sym}} +\def\Alt{{\rm Alt}} +\def\Abb{{\rm Abb}} +\def\Chi{{\mathbb X}} +\def\Tau{{\rm T}} +\def\Rho{{\rm R}} +\def\ad{{\rm ad}} +\def\Frob{{\rm Frob}} +\def\Rang{{\rm Rang}} +\def\SpRang{{\rm SpRang}} +\def\ZRang{{\rm ZRang}} +\def\ggT{{\rm ggT}} +\def\kgV{{\rm kgV}} +\def\Div{{\rm Div}} +\def\div{{\rm div}} +\def\quot{/\!\!/} +\def\mal{\! \cdot \!} +\def\add{{\rm add}} +\def\mult{{\rm mult}} +\def\smult{{\rm smult}} + +\def\subgrpneq{\le} +\def\subgrp{\le} +\def\ideal#1{\unlhd_{#1}} +\def\submod#1{\le_{#1}} + +\def\Bild{{\rm Bild}} +\def\Kern{{\rm Kern}} +\def\Kon{{\rm Kon}} +\def\bangle#1{{\langle #1 \rangle}} +\def\rq#1{\widehat{#1}} +\def\t#1{\widetilde{#1}} +\def\b#1{\overline{#1}} + +\def\abs#1{{\vert #1 \vert}} +\def\norm#1#2{{\Vert #1 \Vert}_{#2}} +\def\PS#1#2{{\sum_{\nu=0}^{\infty} #1_{\nu} #2^{\nu}}} + + +\def\eins{{\mathbf 1}} + +\def\ElM{{\rm ElM}} +\def\ZOp{{\rm ZOp}} +\def\SpOp{{\rm SpOp}} +\def\Gal{{\rm Gal}} +\def\Def{{\rm Def}} +\def\Fix{{\rm Fix}} +\def\ord{{\rm ord}} +\def\Aut{{\rm Aut}} +\def\Hol{{\rm Hol}} +\def\GL{{\rm GL}} +\def\SL{{\rm SL}} +\def\SO{{\rm SO}} +\def\Sp{{\rm Sp}} +\def\Spann{{\rm Spann}} +\def\Lin{{\rm Lin}} +\def\gl{\mathfrak{gl}} +\def\rg{{\rm rg}} +\def\sl{\mathfrak{sl}} +\def\so{\mathfrak{so}} +\def\sp{\mathfrak{sp}} +\def\gg{\mathfrak{g}} +\def\HDiv{{\rm HDiv}} +\def\CDiv{{\rm CDiv}} +\def\Res{{\rm Res}} +\def\Pst{{\rm Pst}} +\def\Nst{{\rm Nst}} +\def\WDiv{{\rm WDiv}} +\def\GL{{\rm GL}} +\def\Tr{{\rm Tr}} +\def\Pic{{\rm Pic}} +\def\Hom{{\rm Hom}} +\def\hom{{\rm hom}} +\def\Mor{{\rm Mor}} +\def\codim{{\rm codim}} +\def\Supp{{\rm Supp}} +\def\Spec{{\rm Spec}} +\def\Proj{{\rm Proj}} +\def\Maps{{\rm Maps}} +\def\cone{{\rm cone}} +\def\ord{{\rm ord}} +\def\pr{{\rm pr}} +\def\id{{\rm id}} +\def\mult{{\rm mult}} +\def\inv{{\rm inv}} +\def\neut{{\rm neut}} +\def\trdeg{{\rm trdeg}} +\def\sing{{\rm sing}} +\def\reg{{\rm reg}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newtheorem{theorem}{Теорема} +\newtheorem{proposition}{Предложение} +\newtheorem{lemma}{Лемма} +\newtheorem{corollary}{Следствие} +\theoremstyle{definition} +\newtheorem{definition}{Определение} +\newtheorem{problem}{Задача} +% +\theoremstyle{remark} +\newtheorem{exercise}{Упражнение} +\newtheorem{exc}{Упражнение} +\newtheorem{remark}{Замечание} +\newtheorem{example}{Пример} + +\renewcommand{\theenumi}{\textup{(\alph{enumi})}} +\renewcommand{\labelenumi}{\theenumi} +\newcounter{property} +\renewcommand{\theproperty}{\textup{(\arabic{property})}} +\newcommand{\property}{\refstepcounter{property}\item} +\newcounter{prooperty} +\renewcommand{\theprooperty}{\textup{(\arabic{prooperty})}} +\newcommand{\prooperty}{\refstepcounter{prooperty}\item} + +\makeatletter +\def\keywords#1{{\def\@thefnmark{\relax}\@footnotetext{#1}}} +\let\subjclass\keywords +\makeatother +% + + +\begin{document} + % + \sloppy + s\thispagestyle{empty} + % + \centerline{\large \bf Лекции курса \guillemotleft + Алгебра\guillemotright{}, лекторы И.\,В.~Аржанцев и Р.\,С.~Авдеев} + +\smallskip + +\centerline{\large ФКН НИУ ВШЭ, 1-й курс ОП ПМИ, 4-й модуль, +2015/2016 учебный год} + + +\tableofcontents + +\newpage + +\section*{Лекция 1} + + +\medskip + +{\it Полугруппы и группы: основные определения и примеры. Группы +подстановок и группы матриц. Подгруппы. Порядок элемента и +циклические подгруппы. Смежные классы и индекс подгруппы. Теорема +Лагранжа.} + +\medskip + +\begin{definition} +{\it Множество с бинарной операцией}~--- это множество $M$ с +заданным отображением +$$ +M\times M \to M, \quad (a,b) \mapsto a\circ b. +$$ +\end{definition} + +Множество с бинарной операцией обычно обозначают $(M,\circ)$. + +\begin{definition} +Множество с бинарной операцией $(M,\circ)$ называется {\it +полугруппой}, если данная бинарная операция {\it ассоциативна}, +т.\,е. +$$ +a\circ (b \circ c) = (a\circ b)\circ c \quad \text{для всех} \ a,b,c\in M. +$$ +\end{definition} + +Не все естественно возникающие операции ассоциативны. Например, если +$M=\NN$ и $a\circ b:=a^b$, то +$$ +2^{\left(1^2\right)}=2\ne (2^1)^2=4. +$$ + +Другой пример неассоциативной бинарной операции: $M = \ZZ$ и $a +\circ b := a - b$ (проверьте!). + +Полугруппу обычно обозначают $(S,\circ)$. + +\begin{definition} +Полугруппа $(S,\circ)$ называется {\it моноидом}, если в ней есть +{\it нейтральный элемент}, т.\,е. такой элемент $e\in S$, что +$e\circ a=a\circ e=a$ для любого $a\in S$. +\end{definition} + +Во Франции полугруппа $(\NN,+)$ является моноидом, а в России нет. + +\begin{remark} +Если в полугруппе есть нейтральный элемент, то он один. В самом +деле, $e_1\circ e_2=e_1=e_2$. +\end{remark} + +\begin{definition} +Моноид $(S,\circ)$ называется {\it группой}, если для каждого +элемента $a\in S$ найдется {\it обратный элемент}, т.\,е. такой +$b\in S$, что $a\circ b = b\circ a= e$. +\end{definition} + +\begin{exc} +Докажите, что если обратный элемент существует, то он один. +\end{exc} + +Обратный элемент обозначается $a^{-1}$. Группу принято обозначать +$(G,\circ)$ или просто $G$, когда понятно, о какой операции идёт +речь. Обычно символ $\circ$ для обозначения операции опускают и +пишут просто $ab$. + +\begin{definition} +Группа $G$ называется {\it коммутативной} или {\it абелевой}, если +групповая операция {\it коммутативна}, т.\,е. $ab=ba$ для любых +$a,b\in G$. +\end{definition} + +Если в случае произвольной группы $G$ принято использовать +мультипликативные обозначения для групповой операции~--- $gh$, $e$, +$g^{-1}$, то в теории абелевых групп чаще используют аддитивные +обозначения, т.\,е. $a+b$, $0$, $-a$. + +\begin{definition} +{\it Порядок} группы $G$~--- это число элементов в~$G$. Группа +называется {\it конечной}, если её порядок конечен, и {\it +бесконечной} иначе. +\end{definition} + +Порядок группы $G$ обозначается $|G|$. + +\smallskip + +Приведём несколько серий примеров групп. + +\smallskip + +1) Числовые аддитивные группы: \ $(\ZZ,+)$, $(\QQ,+)$, $(\RR,+)$, +$(\CC,+)$, $(\ZZ_n,+)$. + +\smallskip + +2) Числовые мультипликативные группы: \ +$(\QQ\setminus\{0\},\times)$, $(\RR\setminus\{0\},\times)$, +$(\CC\setminus\{0\},\times)$, +$(\ZZ_p\setminus\{\overline{0}\},\times)$, $p$~--- простое. + +3) Группы матриц: \ $\GL_n(\RR)=\{A\in\Mat(n\times n, \RR) \mid +\det(A)\ne 0\}$; \ $\SL_n(\RR)=\{A\in\Mat(n\times n, \RR) \mid +\det(A)=1\}$. + +4) Группы подстановок: \ симметрическая группа $S_n$~--- все +подстановки длины $n$, $|S_n|=n!$; + +знакопеременная группа $A_n$~--- чётные подстановки длины $n$, +$|A_n|=n!/2$. + +\begin{exc} +Докажите, что группа $S_n$ коммутативна $\Leftrightarrow$ $n +\leqslant 2$, а $A_n$ коммутативна $\Leftrightarrow$ $n \leqslant +3$. +\end{exc} + +\begin{definition} +Подмножество $H$ группы $G$ называется {\it подгруппой}, если выполнены следующие три условия: (1) $e \in H$; \quad (2) $ab\in H$ для любых $a,b +\in H$; \quad (3) $a^{-1}\in H$ для любого +$a\in H$. +\end{definition} + +\begin{exc} +Проверьте, что $H$ является подгруппой тогда и только тогда, когда + $H$ непусто и $ab^{-1}\in H$ для любых $a,b\in H$. +\end{exc} + +В каждой группе $G$ есть {\it несобственные} подгруппы $H=\{e\}$ и +$H=G$. Все прочие подгруппы называются {\it собственными}. Например, +чётные числа $2\ZZ$ образуют собственную подгруппу в $(\ZZ,+)$. + +\begin{proposition} \label{sbgrz} +Всякая подгруппа в $(\ZZ,+)$ имеет вид $k\ZZ$ для некоторого целого +неотрицательного $k$. +\end{proposition} + +\begin{proof} +Пусть $H$~--- подгруппа в $\ZZ$. Если $H=\{0\}$, положим $k=0$. +Иначе пусть $k$~--- наименьшее натуральное число, лежащее в~$H$ +(почему такое есть?). Тогда $k\ZZ \subseteq H$. С другой стороны, +если $a\in H$ и $a=qk+r$~--- результат деления $a$ на $k$ с +остатком, то $0 \leqslant r \leqslant k-1$ и $r = a - qk \in H$. +Отсюда $r=0$ и $H=k\ZZ$. +\end{proof} + +\begin{definition} +Пусть $G$~--- группа и $g\in G$. {\it Циклической подгруппой}, +порождённой элементом~$g$, называется подмножество $\{g^n \mid +n\in\ZZ\}$ в $G$. +\end{definition} + +Циклическая подгруппа, порождённая элементом $g$, обозначается +$\langle g\rangle$. Элемент $g$ называется {\it порождающим} или +{\it образующим} для подгруппы $\langle g\rangle$. Например, +подгруппа $2\ZZ$ в $(\ZZ,+)$ является циклической, и в качестве +порождающего элемента в ней можно взять $g=2$ или $g=-2$. Другими +словами, $2\ZZ=\langle 2\rangle=\langle -2\rangle$. + +\begin{definition} +Пусть $G$~--- группа и $g\in G$. {\it Порядком} элемента $g$ +называется такое наименьшее натуральное число~$m$, что $g^m=e$. Если +такого натурального числа $m$ не существует, говорят, что порядок +элемента $g$ равен бесконечности. +\end{definition} + +Порядок элемента обозначается $\ord(g)$. Заметим, что $\ord(g)=1$ тогда и только тогда, когда $g=e$. + +Следующее предложение объясняет, почему для порядка группы и порядка элемента используется одно и то же слово. + +\begin{proposition} \label{p1} +Пусть $G$~--- группа и $g\in G$. Тогда $\ord(g)=|\langle g\rangle|$. +\end{proposition} + +\begin{proof} +Заметим, что если $g^k=g^s$, то $g^{k-s}=e$. Поэтому если элемент +$g$ имеет бесконечный порядок, то все элементы $g^n$, $n\in\ZZ$, +попарно различны, и подгруппа $\langle g\rangle$ содержит бесконечно +много элементов. Если же порядок элемента $g$ равен $m$, то из +минимальности числа $m$ следует, что элементы $e=g^0, g=g^1, +g^2,\ldots,g^{m-1}$ попарно различны. Далее, для всякого $n\in\ZZ$ +мы имеем $n=mq+r$, где $0 \leqslant r \leqslant m-1$, и +$$ +g^n=g^{mq+r}=(g^m)^qg^r=e^qg^r=g^r. +$$ +Следовательно, $\langle g\rangle=\{e,g,\ldots, g^{m-1}\}$ и +$|\langle g\rangle|=m$. +\end{proof} + +\begin{definition} +Группа $G$ называется {\it циклической}, если найдётся такой элемент +$g\in G$, что $G=\langle g\rangle$. +\end{definition} + +Ясно, что любая циклическая группа коммутативна и не более чем +счётна. Примерами циклических групп являются группы $(\ZZ,+)$ и +$(\ZZ_n,+)$, $n \ge 1$. + +Перейдем ещё к одному сюжету, связанному с парой группа--подгруппа. + +\begin{definition} +Пусть $G$~--- группа, $H\subseteq G$~--- подгруппа и $g\in G$. {\it +Левым смежным классом} элемента $g$ группы $G$ по подгруппе $H$ +называется подмножество +$$ +gH=\{gh \mid h\in H\}. +$$ +\end{definition} + +\begin{lemma} \label{l1} +Пусть $G$~--- группа, $H\subseteq G$~--- её подгруппа и $g_1,g_2\in +G$. Тогда либо $g_1H=g_2H$, либо $g_1H\cap g_2H=\varnothing$. +\end{lemma} + +\begin{proof} +Предположим, что $g_1H\cap g_2H\ne\varnothing$, т.\,е. +$g_1h_1=g_2h_2$ для некоторых $h_1,h_2\in H$. Нужно доказать, что +$g_1H=g_2H$. Заметим, что $g_1H=g_2h_2h_1^{-1}H\subseteq g_2H$. +Обратное включение доказывается аналогично. +\end{proof} + +\begin{lemma} \label{l2} +Пусть $G$~--- группа и $H\subseteq G$~--- конечная подгруппа. Тогда +$|gH|=|H|$ для любого $g\in G$. +\end{lemma} + +\begin{proof} +Поскольку $gH=\{gh \mid h\in H\}$, в $|gH|$ элементов не больше, чем +в~$H$. Если $gh_1=gh_2$, то домножаем слева на $g^{-1}$ и получаем +$h_1=h_2$. Значит, все элементы вида $gh$, где $h\in H$, попарно +различны, откуда $|gH|=|H|$. +\end{proof} + +\begin{definition} +Пусть $G$~--- группа и $H\subseteq G$~--- подгруппа. {\it Индексом} +подгруппы $H$ в группе $G$ называется число левых смежных классов +$G$ по~$H$. +\end{definition} + +Индекс группы $G$ по подгруппе $H$ обозначается $[G:H]$. + +\smallskip + +{\bf Теорема Лагранжа}.\ Пусть $G$~--- конечная группа и $H\subseteq +G$~--- подгруппа. Тогда +$$ +|G| = |H| \cdot [G:H]. +$$ + +\begin{proof} +Каждый элемент группы $G$ лежит в (своём) левом смежном классе по +подгруппе $H$, разные смежные классы не пересекаются +(лемма~\ref{l1}) и каждый из них содержит по $|H|$ элементов +(лемма~\ref{l2}). +\end{proof} + +На следующей лекции мы обсудим следствия из данной теоремы. + + +\newpage + +\section*{Лекция 2} + +\medskip + +{\it Следствия из теоремы Лагранжа. Нормальные подгруппы. Факторгруппы и теорема о гомоморфизме. Прямое произведение групп. Разложение конечной циклической группы.} + +\medskip + +Рассмотрим некоторые следствия из теоремы Лагранжа. + +\begin{corollary} \label{c1} +Пусть $G$~--- конечная группа и $H\subseteq G$~--- подгруппа. Тогда +$|H|$ делит $|G|$. +\end{corollary} + +\begin{corollary} \label{c2} +Пусть $G$~--- конечная группа и $g\in G$. Тогда $\ord(g)$ делит +$|G|$. +\end{corollary} + +\begin{proof} +Это вытекает из следствия~\ref{c1} и предложения~2 прошлой лекции. +\end{proof} + +\begin{corollary} \label{c3} +Пусть $G$~--- конечная группа и $g\in G$. Тогда $g^{|G|}=e$. +\end{corollary} + +\begin{proof} +Согласно следствию~\ref{c2}, мы имеем $|G|=\ord(g) \cdot s$, откуда +$g^{|G|}=(g^{\ord(g)})^s=e^s=e$. +\end{proof} + +\begin{corollary} \label{c5} +Пусть $G$~--- группа. Предположим, что $|G|$~--- простое число. +Тогда $G$~--- циклическая группа, порождаемая любым своим +неединичным элементом. +\end{corollary} + +\begin{proof} +Пусть $g\in G$~--- произвольный неединичный элемент. Тогда +циклическая подгруппа $\langle g\rangle$ содержит более одного +элемента и $|\langle g\rangle|$ делит $|G|$ по следствию~\ref{c1}. +Значит, $|\langle g\rangle|=|G|$, откуда $G=\langle g\rangle$. +\end{proof} + +Наряду с левым смежным классом можно определить {\it правый смежный +класс} элемента $g$ группы $G$ по подгруппе $H$: +$$ +Hg=\{hg \mid h\in H\}. +$$ + +Повторяя доказательство теоремы Лагранжа для правых смежных классов, +мы получим, что для конечной группы $G$ число правых смежных классов +по подгруппе $H$ равно числу левых смежных классов и равно +$|G|/|H|$. В то же время равенство $gH=Hg$ выполнено не всегда. +Разумеется, оно выполнено, если группа $G$ абелева. Подгруппы $H$ +(неабелевых) групп $G$, для которых $gH=Hg$ выполнено для любого +$g\in G$, будут изучаться в следующей лекции. + +\begin{definition} +Подгруппа $H$ группы $G$ называется {\it нормальной}, если $gH=Hg$ +для любого $g\in G$. +\end{definition} + +\begin{proposition} +Для подгруппы $H \subseteq G$ следующие условия эквивалентны: + +\vspace{-2mm} +\begin{enumerate} +\item[(1)] +$H$ нормальна; + +\item[(2)] +$gHg^{-1} \subseteq H$ для любого $g \in G$; + +\item[(3)] +$gHg^{-1}=H$ для любого $g\in G$. +\end{enumerate} +\end{proposition} + +\vspace{-6mm} + +\begin{proof} +(1)$\Rightarrow$(2) Пусть $h \in H$ и $g \in G$. Поскольку $gH = +Hg$, имеем $gh = h'g$ для некоторого $h' \in H$. Тогда $ghg^{-1} = +h'gg^{-1} = h' \in H$.\\ +(2)$\Rightarrow$(3) Так как $gHg^{-1} \subseteq H$, остаётся +проверить обратное включение. Для $h \in H$ имеем $h = gg^{-1} h g +g^{-1} = g(g^{-1}hg)g^{-1} \subseteq gHg^{-1}$, поскольку $g^{-1}hg +\in H$ в силу пункта~(2), где вместо $g$ взято $g^{-1}$. + +(3)$\Rightarrow$(1) Для произвольного $g \in G$ в силу (3) имеем $gH += gHg^{-1} g \subseteq Hg$, так что $gH \subseteq Hg$. Аналогично +проверяется обратное включение. +\end{proof} +\vspace{-1mm} + +Условие (2) в этом предложении кажется излишним, но именно его +удобно проверять при доказательстве нормальности подгруппы~$H$. + +Обозначим через $G/H$ множество (левых) смежных классов группы $G$ +по нормальной подгруппе~$H$. На $G/H$ можно определить бинарную +операцию следующим образом: +$$ +(g_1H)(g_2H):=g_1g_2H. +$$ + +Зачем здесь нужна нормальность подгруппы $H$? Для проверки +корректности: заменим $g_1$ и $g_2$ другими представителями $g_1h_1$ +и $g_2h_2$ тех же смежных классов. Нужно проверить, что +$g_1g_2H=g_1h_1g_2h_2H$. Это следует из того, что +$g_1h_1g_2h_2=g_1g_2(g_2^{-1}h_1g_2)h_2$ и $g_2^{-1}h_1g_2$ лежит в +$H$. + +Ясно, что указанная операция на множестве $G/H$ ассоциативна, +обладает нейтральным элементом $eH$ и для каждого элемента $gH$ есть +обратный элемент $g^{-1}H$. + +\begin{definition} +Множество $G/H$ с указанной операцией называется {\it факторгруппой} +группы $G$ по нормальной подгруппе $H$. +\end{definition} + +\begin{example} +Если $G=(\ZZ,+)$ и $H=n\ZZ$, то $G/H$~--- это в точности группа +вычетов $(\ZZ_n,+)$. +\end{example} + +Как представлять себе факторгруппу? В этом помогает теорема о +гомоморфизме. Но прежде чем её сформулировать, обсудим ещё несколько +понятий. + +\begin{definition} +Пусть $G$ и $F$~--- группы. Отображение $\varphi\colon G\to F$ +называется {\it гомоморфизмом}, если +$\varphi(ab)=\varphi(a)\varphi(b)$ для любых $a,b\in G$. +\end{definition} + +\begin{remark} +Подчеркнём, что в этом определении произведение $ab$ берётся в +группе~$G$, в то время как произведение $\varphi(a) \varphi(b)$~--- +в группе~$F$. +\end{remark} + +\begin{lemma} +Пусть $\varphi \colon G \to F$~--- гомоморфизм групп, и пусть $e_G$ +и $e_F$~--- нейтральные элементы групп $G$ и $F$ соответственно. +Тогда: + +\vspace{-2mm} +\begin{enumerate} +\item[(а)] +$\varphi(e_G) = e_F$; + +\item[(б)] +$\varphi(a^{-1})=\varphi(a)^{-1}$ для любого $a\in G$. +\end{enumerate} +\end{lemma} + +\vspace{-5mm} + +\begin{proof} +(а) Имеем $\varphi(e_G)=\varphi(e_Ge_G)=\varphi(e_G)\varphi(e_G)$. +Теперь умножая крайние части этого равенства на $\varphi(e_G)^{-1}$ +(например, слева), получим $e_F = \varphi(e_G)$. + +(б) Имеем $\varphi(a^{-1}) \varphi(a) = \varphi(a^{-1}a) = +\varphi(e_G) = e_F$, откуда $\varphi(a^{-1}) = \varphi(a)^{-1}$. +\end{proof} + +\begin{definition} +Гомоморфизм групп $\varphi\colon G\to F$ называется {\it +изоморфизмом}, если отображение $\varphi$ биективно. +\end{definition} + +\begin{exc} +Пусть $\varphi\colon G\to F$~--- изоморфизм групп. Проверьте, что +обратное отображение $\varphi^{-1}\colon F \to G$ также является +изоморфизмом. +\end{exc} + +\begin{definition} +Группы $G$ и $F$ называют {\it изоморфными}, если между ними +существует изоморфизм. + +Обозначение: $G\cong F$ (или $G \simeq F$). +\end{definition} + +В алгебре группы рассматривают с точностью до изоморфизма: +изоморфные группы считаются \guillemotleft +одинаковыми\guillemotright{}. + +\begin{definition} +С каждым гомоморфизмом групп $\varphi\colon G\to F$ связаны его {\it +ядро} +$$ +\Ker(\varphi)=\{g\in G \mid \varphi(g)=e_F\} +$$ +и {\it образ} +$$ +\Im(\varphi)=\{a\in F \mid \exists g\in G : \varphi(g)=a\}. +$$ +\end{definition} + +Ясно, что $\Ker(\varphi)\subseteq G$ и $\Im(\varphi)\subseteq F$~--- +подгруппы. + +\begin{lemma} +Гомоморфизм групп $\varphi \colon G \to F$ инъективен тогда и только +тогда, когда $\Ker(\varphi) = \{e_G\}$. +\end{lemma} +\vspace{-3mm} +\begin{proof} +Ясно, что если $\varphi$ инъективен, то $\Ker(\varphi) = \lbrace e_G +\rbrace$. Обратно, пусть $g_1, g_2 \in G$ и $\varphi(g_1) = +\varphi(g_2)$. Тогда $g_1^{-1} g_2 \in \Ker(\varphi)$, поскольку +$\varphi(g_1^{-1} g_2) = \varphi(g_1^{-1}) \varphi(g_2) = +\varphi(g_1)^{-1} \varphi (g_2) = e_F$. Отсюда $g_1^{-1}g_2 = e_G$ и +$g_1 = g_2$. +\end{proof} + +\begin{corollary} +Гомоморфизм групп $\varphi\colon G\to F$ является изоморфизмом тогда +и только тогда, когда $\Ker(\varphi)=\{e_G\}$ и $\Im(\varphi)=F$. +\end{corollary} + +\begin{proposition} +Пусть $\varphi \colon G \to F$~--- гомоморфизм групп. Тогда +подгруппа $\Ker(\varphi)$ нормальна в~$G$. +\end{proposition} +\vspace{-3mm} +\begin{proof} +Достаточно проверить, что $g^{-1}hg \in \Ker(\varphi)$ для любых +$g\in G$ и $h \in \Ker(\varphi)$. Это следует из цепочки равенств +$$ +\varphi(g^{-1}hg) = \varphi(g^{-1}) \varphi(h) \varphi(g) = +\varphi(g^{-1}) e_F \varphi(g) = \varphi(g^{-1}) \varphi(g) = +\varphi(g)^{-1} \varphi (g) = e_F. +$$ +\end{proof} + +{\bf Теорема о гомоморфизме}. Пусть $\varphi\colon G\to F$~--- +гомоморфизм групп. Тогда группа $\Im(\varphi)$ изоморфна +факторгруппе $G/\Ker(\varphi)$. + +\begin{proof} +Рассмотрим отображение $\psi \colon G / \Ker(\varphi) \to F$, +заданное формулой $\psi(g\Ker(\varphi)) = \varphi(g)$. Проверка +корректности: равенство $\varphi(gh_1)=\varphi(gh_2)$ для любых +$h_1,h_2\in\Ker(\varphi)$ следует из цепочки +$$ +\varphi(gh_1)=\varphi(g)\varphi(h_1)=\varphi(g)=\varphi(g)\varphi(h_2)=\varphi(gh_2). +$$ +Отображение $\psi$ сюръективно по построению и инъективно в силу +того, что $\varphi(g) = e_F$ тогда и только тогда, когда $g \in \Ker +(\varphi)$ (т.\,е. $g\Ker(\varphi) = \Ker(\varphi)$). Остаётся +проверить, что $\psi$~--- гомоморфизм: +$$ +\psi((g\Ker(\varphi))(g'\Ker(\varphi))) = \psi(gg'\Ker(\varphi)) = +\varphi(gg') = \varphi(g)\varphi(g') = +\psi(g\Ker(\varphi))\psi(g'\Ker(\varphi)). +$$ +\end{proof} + +Тем самым, чтобы удобно реализовать факторгруппу $G/H$, можно найти +такой гомоморфизм $\varphi\colon G\to F$ в некоторую группу~$F$, что +$H = \Ker(\varphi)$, и тогда $G/H \cong \Im(\varphi)$. + +\begin{example} +Пусть $G=(\RR,+)$ и $H=(\ZZ,+)$. Рассмотрим группу +$F=(\CC\setminus\{0\},\times)$ и гомоморфизм +$$ +\varphi\colon G\to F, \quad a\mapsto e^{2\pi\imath a} = \cos (2\pi +a) + i \sin (2\pi a). +$$ +Тогда $\Ker(\varphi)=H$ и факторгруппа $G/H$ изоморфна окружности +$S^1$, рассматриваемой как подгруппа в~$F$, состоящая из комплексных +чисел с модулем~$1$. +\end{example} + +Определим ещё одну важную конструкцию, позволяющую строить новые +группы из имеющихся. + +\begin{definition} +{\it Прямым произведением} групп $G_1, \ldots, G_m$ называется +множество +$$ +G_1\times\ldots\times G_m=\{(g_1,\ldots,g_m) \mid g_1\in G_1,\ldots, +g_m\in G_m\} +$$ +с операцией +$(g_1,\ldots,g_m)(g_1',\ldots,g_m')=(g_1g_1',\ldots,g_mg_m')$. +\end{definition} + +Ясно, что эта операция ассоциативна, обладает нейтральным элементом +$(e_{G_1},\ldots,e_{G_m})$ и для каждого элемента $(g_1,\ldots,g_m)$ +есть обратный элемент $(g_1^{-1},\ldots,g_m^{-1})$. + +\begin{remark} +Группа $G_1\times\ldots\times G_m$ коммутативна в точности тогда, +когда коммутативна каждая из групп $G_1,\ldots, G_m$. +\end{remark} + +\begin{remark} +Если все группы $G_1, \ldots, G_m$ конечны, то $|G_1 \times \ldots +\times G_m| = |G_1| \cdot \ldots \cdot |G_m|$. +\end{remark} + +\begin{definition} +Группа $G$ \textit{раскладывается в прямое произведение} своих подгрупп $H_1, \ldots, H_m$, если отображение $H_1 \times \ldots \times H_M \rightarrow G$, $(h_1, \ldots, h_m) \mapsto h_1 \cdot \ldots \cdot h_m$ является изоморфизмом. +\end{definition} + + +\newpage + +\section*{Лекция 3} + +\medskip + +{\it Факторизация по +сомножителям. Конечно порождённые и свободные абелевы группы. Подгруппы +свободных абелевых групп.} + +\medskip + +Следующий результат связывает конструкции факторгруппы и прямого +произведения. + +{\bf Теорема о факторизации по сомножителям}. \ Пусть $H_1, \ldots, +H_m$~--- нормальные подгруппы в группах $G_1, \ldots, G_m$ +соответственно. Тогда $H_1 \times \ldots \times H_m$~--- нормальная +подгруппа в $G_1 \times \ldots \times G_m$ и имеет место изоморфизм +групп +$$ +(G_1 \times \ldots \times G_m) / (H_1 \times \ldots \times H_m) +\cong G_1 / H_1 \times \ldots \times G_m / H_m. +$$ + +\begin{proof} +Прямая проверка показывает, что $H_1\times\ldots\times H_m$~--- +нормальная подгруппа в $G_1\times\ldots\times G_m$. Требуемый +изоморфизм устанавливается отображением +$$ +(g_1,\ldots,g_m)(H_1\times\ldots\times H_m)\mapsto +(g_1H_1,\ldots,g_mH_m). +$$ +\end{proof} + +\begin{theorem} +Пусть $n=ml$~--- разложение натурального числа $n$ на два взаимно +простых множителя. Тогда имеет место изоморфизм групп +$$ +\ZZ_n\cong \ZZ_m\times\ZZ_l. +$$ +\end{theorem} + +\begin{proof} +Рассмотрим отображение +$$ +\varphi\colon \ZZ_n\to \ZZ_m\times\ZZ_l, \quad k \ (\text{mod}\ n) +\mapsto (k\ (\text{mod}\ m), k\ (\text{mod}\ l)). +$$ +Поскольку $m$ и $l$ делят~$n$, отображение $\varphi$ определено +корректно. Ясно, что $\varphi$~--- гомоморфизм. Далее, если $k$ +переходит в нейтральный элемент $(0,0)$, то $k$ делится и на $m$, и +на $l$, а~значит, делится на $n$ в силу взаимной простоты $m$ и~$l$. +Отсюда следует, что гомоморфизм $\varphi$ инъективен. Поскольку +множества $\ZZ_n$ и $\ZZ_m\times\ZZ_l$ содержат одинаковое число +элементов, отображение $\varphi$ биективно. +\end{proof} + +\begin{corollary} \label{corpr} +Пусть $n \geqslant 2$~--- натуральное число и $n=p_1^{k_1}\ldots +p_s^{k_s}$~--- его разложение в произведение простых множителей +\textup(где $p_i \ne p_j$ при $i \ne j$\textup). Тогда имеет место +изоморфизм групп +$$ +\ZZ_n\cong\ZZ_{p_1^{k_1}}\times\ldots\times\ZZ_{p_s^{k_s}}. +$$ +\end{corollary} + +Всюду в этой и следующей лекции $(A,+)$~--- абелева группа с +аддитивной формой записи операции. Для произвольного элемента $a\in +A$ и целого числа $s$ положим +$$ +sa = +\begin{cases} +\underbrace{a + \ldots + a}_s, & \text{ если } s > 0; \\ +0, & \text{ если } s = 0; \\ +\underbrace{(-a) + \ldots + (-a)}_{|s|}, & \text{ если } s < 0. +\end{cases} +$$ + +\begin{definition} +Абелева группа $A$ называется {\it конечно порождённой}, если +найдутся такие элементы $a_1,\ldots,a_n\in A$, что всякий элемент +$a\in A$ представим в виде $a=s_1a_1 + \ldots + s_na_n$ для +некоторых целых чисел $s_1, \ldots, s_n$. При этом элементы $a_1, +\ldots, a_n$ называются {\it порождающими} или {\it образующими} +группы~$A$. +\end{definition} + +\begin{remark} +Всякая конечно порождённая группа конечна или счётна. +\end{remark} + +\begin{remark} +Всякая конечная группа является конечно порождённой. +\end{remark} + +\begin{definition} +Конечно порождённая абелева группа $A$ называется {\it свободной}, +если в ней существует {\it базис}, т.\,е. такой набор элементов +$a_1,\ldots, a_n$, что каждый элемент $a\in A$ единственным образом +представим в виде $a=s_1a_1 + \ldots + s_na_n$, где $s_1, \ldots, +s_n \in \ZZ$. При этом число $n$ называется {\it рангом} свободной +абелевой группы $A$ и обозначается $\rk\,A$. +\end{definition} + +\begin{example} +Абелева группа $\ZZ^n:=\{(c_1,\ldots,c_n) \mid c_i\in\ZZ\}$ является +свободной с базисом +$$ +\begin{aligned} +e_1 &= (1,0,\ldots,0), \\ +e_2 &= (0,1,\ldots,0),\\ + &\ldots \\ +e_n &= (0,0,\ldots,1). +\end{aligned} +$$ +Этот базис называется {\it стандартным}. В группе $\ZZ^n$ можно +найти и много других базисов. Ниже мы все их опишем. +\end{example} + +\begin{proposition} +Ранг свободной абелевой группы определён корректно, т.\,е. любые два +её базиса содержат одинаковое число элементов. +\end{proposition} + +\begin{proof} +Пусть $a_1, \ldots, a_n$ и $b_1, \ldots, b_m$~--- два базиса +группы~$A$. Предположим, что $n < m$. Элементы $b_1, \ldots, b_m$ +однозначно разлагаются по базису $a_1, \ldots, a_n$, поэтому мы +можем записать +$$ +\begin{aligned} +b_1 &= s_{11}a_1 + s_{12}a_2 + \ldots + s_{1n}a_n, \\ +b_2 &= s_{21}a_1 + s_{22}a_2 + \ldots + s_{2n}a_n,\\ + &\ldots \\ +b_m &= s_{m1}a_1 + s_{m2}a_2 + \ldots + s_{mn}a_n, +\end{aligned} +$$ +где все коэффициенты $s_{ij}$~--- целые числа. Рассмотрим +прямоугольную матрицу $S = (s_{ij})$ размера $m \times n$. Так как +$n < m$, то ранг этой матрицы не превосходит~$n$, а~значит, строки +этой матрицы линейно зависимы над~$\QQ$. Домножая коэффициенты этой +зависимости на наименьшее общее кратное их знаменателей, мы найдём +такие целые $s_1, \ldots, s_m$, из которых не все равны нулю, что +$s_1 b_1 + \ldots + s_m b_m=0$. Поскольку $0 = 0b_1 + \ldots + +0b_m$, это противоречит однозначной выразимости элемента $0$ через +базис $b_1, \ldots, b_m$. +\end{proof} + +\begin{proposition} +Всякая свободная абелева группа ранга $n$ изоморфна группе $\ZZ^n$. +\end{proposition} + +\begin{proof} +Пусть $A$~--- свободная абелева группа, и пусть $a_1,\ldots,a_n$~--- +её базис. Рассмотрим отображение +$$\varphi \colon \ZZ^n \to A, \quad (s_1, \ldots, s_n) +\mapsto s_1a_1 + \ldots + s_na_n. +$$ +Легко видеть, что $\varphi$~--- гомоморфизм. Так как всякий элемент +$a \in A$ представим в виде $s_1a_1 + \ldots + s_na_n$, где $s_1, +\ldots, s_n \in \ZZ$, то $\varphi$ сюръективен. Из единственности +такого представления следует инъективность~$\varphi$. Значит, +$\varphi$~--- изоморфизм. +\end{proof} + +Пусть $e_1', \ldots, e_n'$~--- некоторый набор элементов из $\ZZ^n$. +Выразив эти элементы через стандартный базис $e_1, \ldots, e_n$, мы +можем записать +$$ +(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C, +$$ +где $C$~--- целочисленная квадратная матрица порядка~$n$. + +\begin{proposition} +Элементы $e_1', \ldots, e_n'$ составляют базис группы $\ZZ^n$ тогда +и только тогда, когда $\det C = \pm 1$. +\end{proposition} + +\begin{proof} +Предположим сначала, что $e'_1, \ldots, e'_n$~--- базис. Тогда +элементы $e_1, \ldots, e_n$ через него выражаются, поэтому $(e_1, +\ldots, e_n) = (e'_1, \ldots, e'_n) D$ для некоторой целочисленной +квадратной матрицы $D$ порядка~$n$. Но тогда $(e_1, \ldots, e_n) = +(e_1, \ldots, e_n)CD$, откуда $CD = E_n$, где $E_n$~--- единичная +матрица порядка~$n$. Значит, $(\det C)(\det D) = 1$. Учитывая, что +$\det C$ и $\det D$~--- целые числа, мы получаем $\det C = \pm 1$. + +Обратно, пусть $\det C = \pm 1$. Тогда матрица $C^{-1}$ является +целочисленной, а соотношение $(e_1, \ldots, e_n) = (e'_1, \ldots, +e'_n)C^{-1}$ показывает, что элементы $e_1, \ldots, e_n$ выражаются +через $e'_1, \ldots, e'_n$. Но $e_1, \ldots, e_n$~--- базис, поэтому +элементы $e'_1, \ldots, e'_n$ порождают группу~$\ZZ^n$. Осталось +доказать, что всякий элемент из $\ZZ^n$ однозначно через них +выражается. Предположим, что $s'_1e'_1 + \ldots + s'_ne'_n = +s''_1e'_1 + \ldots + s''_n e'_n$ для некоторых целых чисел $s'_1, +\ldots, s'_n, s''_1, \ldots, s''_n$. Мы можем это переписать в +следующем виде: +$$ +(e'_1, \ldots, e'_n) +\begin{pmatrix} s'_1 \\ \vdots \\ s'_n \end{pmatrix} = +(e'_1, \ldots, e'_n) +\begin{pmatrix} s''_1 \\ \vdots \\ s''_n \end{pmatrix}. +$$ +Учитывая, что $(e'_1, \ldots, e'_n) = (e_1, \ldots, e_n)C$ и что +$e_1, \ldots, e_n$~--- это базис, получаем +$$ +C \begin{pmatrix} s'_1 \\ \vdots \\ s'_n \end{pmatrix} = C +\begin{pmatrix} s''_1 \\ \vdots \\ s''_n \end{pmatrix}. +$$ +Домножая это равенство слева на~$C^{-1}$, окончательно получаем +$$ +\begin{pmatrix} s'_1 \\ \vdots \\ s'_n \end{pmatrix} = +\begin{pmatrix} s''_1 \\ \vdots \\ s''_n \end{pmatrix}. +$$ +\end{proof} + +\begin{theorem} +Всякая подгруппа $N$ свободной абелевой группы $L$ ранга $n$ +является свободной абелевой группой ранга $\leqslant n$. +\end{theorem} + +\begin{proof} +Воспользуемся индукцией по $n$. При $n=0$ доказывать нечего. Пусть +$n>0$ и $e_1,\ldots,e_n$~--- базис группы $L$. Рассмотрим в $L$ +подгруппу +$$ +L_1 = \langle e_1,\ldots,e_{n-1}\rangle : = \ZZ e_1 + \ldots + \ZZ +e_{n-1}. +$$ +Это свободная абелева группа ранга $n-1$. По предположению индукции +подгруппа $N_1:=N\cap L_1 \subseteq L_1$ является свободной абелевой +группой ранга $m \leqslant n-1$. Зафиксируем в $N_1$ базис $f_1, +\ldots, f_m$. + +Рассмотрим отображение +$$ +\varphi \colon N \to \ZZ, \quad s_1e_1 + \ldots + s_ne_n \mapsto +s_n. +$$ +Легко видеть, что $\varphi$~--- гомоморфизм и что $\Ker \varphi = +N_1$. Далее, $\Im \varphi$~--- подгруппа в~$\ZZ$, по предложению~1 +из лекции~1 она имеет вид $k \ZZ$ для некоторого целого $k \geqslant +0$. Если $k=0$, то $N \subseteq L_1$, откуда $N = N_1$ и всё +доказано. Если $k>0$, то пусть $f_{m+1}$~--- какой-нибудь элемент из +$N$, для которого $\varphi(f_{m+1}) = k$. Докажем, что $f_1, \ldots, +f_m, f_{m+1}$~--- базис в~$N$. Пусть $f \in N$~--- произвольный +элемент, и пусть $\varphi(f) = sk$, где $s \in \ZZ$. Тогда +$\varphi(f - sf_{m+1}) = 0$, откуда $f - sf_{m+1} \in N_1$ и, +следовательно, $f - sf_{m+1} = s_1 f_1 + \ldots + s_m f_m$ для +некоторых $s_1, \ldots, s_m \in \ZZ$. Значит, $f = s_1 f_1 + \ldots ++ s_m f_m + s f_{m+1}$ и элементы $f_1, \ldots, f_m, f_{m+1}$ +порождают группу~$N$. Осталось доказать, что они образуют базис +в~$N$. Предположим, что +$$ +s_1 f_1 + \ldots + s_m f_m + s_{m+1} f_{m+1} = s'_1 f_1 + \ldots + +s'_m f_m + s'_{m+1} f_{m+1} +$$ +для некоторых целых чисел $s_1, \ldots, s_m, s_{m+1}, s'_1, \ldots, +s'_m, s'_{m+1}$. Рассмотрев образ обеих частей этого равенства при +гомоморфизме~$\varphi$, получаем $s_{m+1} k = s'_{m+1} k$, откуда +$s_{m+1} = s'_{m+1}$ и +$$ +s_1 f_1 + \ldots + s_m f_m = s'_1 f_1 + \ldots + s'_m f_m. +$$ +Но $f_1, \ldots, f_m$~--- базис в~$N_1$, поэтому $s_1 = s'_1$, +\ldots, $s_m = s'_m$. +\end{proof} + + + +\newpage + +\section*{Лекция 4} + +\medskip + +{\it Теорема о согласованных базисах. Алгоритм +приведения целочисленной матрицы к диагональному виду. Строение конечно порождённых абелевых групп. Конечные абелевы группы. } % Экспонента конечной абелевой группы.} + +В~теории абелевых групп операция прямого произведения конечного +числа групп обычно называется \textit{прямой суммой} и обозначается +символом~$\oplus$, так что пишут $A_1 \oplus A_2 \oplus \ldots +\oplus A_n$ вместо $A_1 \times A_2 \times \ldots \times A_n$. + +Дадим более точное описание подгрупп свободных абелевых групп. + +\smallskip + +{\bf Теорема о согласованных базисах.}\ Для всякой подгруппы $N$ +свободной абелевой группы $L$ ранга $n$ найдётся такой базис $e_1, +\ldots, e_n$ группы $L$ и такие натуральные числа $u_1, \ldots, +u_m$, $m \leqslant n$, что $u_1 e_1, \ldots, u_m e_m$~--- базис +группы $N$ и $u_i | u_{i+1}$ при $i = 1, \ldots, m-1$. + +\smallskip + +\begin{remark} +Числа $u_1, \ldots, u_p$, фигурирующие в теореме о согласованных +базисах, называются {\it инвариантными множителями} подгруппы $N +\subseteq L$. Можно показать, что они определены по подгруппе +однозначно. +\end{remark} + +\begin{corollary} +В~условиях теоремы о согласованных базисах имеет место изоморфизм +$$ +L / N \cong \ZZ_{u_1} \times \ldots \times \ZZ_{u_m} \times +\underbrace{\ZZ \times \ldots \times \ZZ}_{n - m}. +$$ +\end{corollary} + +\begin{proof} +Рассмотрим изоморфизм $L \cong \ZZ^n = \underbrace{\ZZ \times \ldots +\times \ZZ}_n$, сопоставляющий произвольному элементу $s_1 e_1 + +\ldots + s_n e_n \in L$ набор $(s_1, \ldots, s_n) \in \ZZ^n$. При +этом изоморфизме подгруппа $N \subseteq L$ отождествляется с +подгруппой +$$ +u_1 \ZZ \times \ldots \times u_m \ZZ \times \underbrace{\lbrace 0 +\rbrace \times \ldots \times \lbrace 0 \rbrace}_{n-m} \subseteq +\ZZ^n. +$$ +Теперь требуемый результат получается применением теоремы о +факторизации по сомножителям. +\end{proof} + +Теперь вернемся к доказательству теоремы о согласованных базисов. +Однако это требует некоторой подготовки. + +\begin{definition} +{\it Целочисленными элементарными преобразованиями строк} матрицы +называются преобразования следующих трёх типов: + +1) прибавление к одной строке другой, умноженной на целое число; + +2) перестановка двух строк; + +3) умножение одной строки на $-1$. + +Аналогично определяются {\it целочисленные элементарные +преобразования столбцов} матрицы. +\end{definition} + +Прямоугольную матрицу $C=(c_{ij})$ размера $n\times m$ назовём {\it +диагональной} и обозначим $\text{diag}(u_1,\ldots,u_p)$, если +$c_{ij}=0$ при $i\ne j$ и $c_{ii}=u_i$ при $i=1,\ldots,p$, где +$p=\text{min}(n,m)$. + +\begin{proposition} \label{palg} +Всякую прямоугольную целочисленную матрицу $C=(c_{ij})$ с помощью +элементарных преобразований строк и столбцов можно привести к виду +$\text{diag}(u_1,\ldots,u_p)$, где $u_1,\ldots,u_p \geqslant 0$ и +$u_i|u_{i+1}$ при $i=1,\ldots,p-1$. +\end{proposition} + +\begin{proof} +Если $C=0$, то доказывать нечего. Если $C\ne 0$, но $c_{11}=0$, то +переставим строки и столбцы и получим $c_{11}\ne 0$. Умножив, если +нужно, первую строку на $-1$, добьёмся условия $c_{11}>0$. Теперь +будем стремиться уменьшить~$c_{11}$. + +Если какой-то элемент $c_{i1}$ не делится на $c_{11}$, то разделим с +остатком: $c_{i1}=qc_{11}+r$. Вычитая из $i$-й строки $1$-ю строку, +умноженную на~$q$, и затем переставляя $1$-ю и $i$-ю строки, +уменьшаем~$c_{11}$. Повторяя эту процедуру, в~итоге добиваемся, что +все элементы $1$-й строки и $1$-го столбца делятся на $c_{11}$. + +Если какой-то $c_{ij}$ не делится на $c_{11}$, то поступаем +следующим образом. Вычтя из $i$-й строки $1$-ю строку с подходящим +коэффициентом, добьёмся $c_{i1}=0$. После этого прибавим к $1$-й +строке $i$-ю строку. При этом $c_{11}$ не изменится, а $c_{1j}$ +перестанет делиться на $c_{11}$, и мы вновь сможем уменьшить +$c_{11}$. + +В~итоге добьёмся того, что все элементы делятся на~$c_{11}$. После +этого обнулим все элементы $1$-й строки и $1$-го столбца, начиная со +вторых, и продолжим процесс с меньшей матрицей. +\end{proof} + +Теперь мы готовы доказать теорему о согласованных базисах. + +\begin{proof}[Доказательство теоремы о согласованных базисах] +Мы знаем, что $N$ является свободной абелевой группой ранга $m +\leqslant n$. Пусть $e_1, \ldots, e_n$~--- базис в $L$ и $f_1, +\ldots, f_m$~--- базис в~$N$. Тогда $(f_1, \ldots, f_m) = (e_1, +\ldots, e_n)C$, где $C$~--- целочисленная матрица размера $n \times +m$ и ранга~$m$. Покажем, что целочисленные элементарные +преобразования строк (столбцов) матрицы $C$~--- это в точности +элементарные преобразования над базисом в~$L$ (в~$N$). Для этого +рассмотрим сначала случай строк. Заметим, что каждое из +целочисленных элементарных преобразований строк реализуется при +помощи умножения матрицы $C$ слева на квадратную матрицу~$P$ +порядка~$n$, определяемую следующим образом: + +(1) в случае прибавления к $i$-й строке $j$-й, умноженной на целое +число~$z$, в матрице~$P$ на диагонали стоят единицы, на $(ij)$-м +месте~--- число~$z$, а на остальных местах~--- нули; + +(2) в случае перестановки $i$-й и $j$-й строк имеем $p_{ij} = p_{ji} += 1$, $p_{kk} = 1$ при $k \ne i,j$, а на остальных местах стоят +нули; + +(3) в случае умножения $i$-й строки на $-1$ имеем $p_{ii} = -1$, +$p_{jj} = 1$ при $j \ne i$, а на остальных местах стоят нули. + +Теперь заметим, что равенство $(f_1, \ldots, f_m) = (e_1, \ldots, +e_n)C$ эквивалентно равенству $(f_1, \ldots, f_m) = (e_1, \ldots, +e_n)P^{-1} PC$. Таким образом, базис $(f_1, \ldots, f_m)$ выражается +через новый базис $(e'_1, \ldots, e'_n) := (e_1, \ldots, e_n)P^{-1}$ +при помощи матрицы~$PC$. + +В случае столбцов всё аналогично: каждое из целочисленых +элементарных преобразований столбцов реализуется при помощи +умножения матрицы $C$ справа на некоторую квадратную матрицу $Q$ +порядка~$m$ (определяемую почти так же, как~$P$). В~этом случае +имеем $(f_1, \ldots, f_m)Q = (e_1, \ldots, e_n)CQ$, так что новый +базис $(f'_1, \ldots, f'_m) := (f_1, \ldots, f_m)Q$ выражается через +$(e_1, \ldots, e_n)$ при помощи матрицы $CQ$. + +Воспользовавшись предложением~\ref{palg}, мы можем привести матрицу +$C$ при помощи целочисленных элементарных преобразований строк и +столбцов к диагональному виду~$C'' = \text{diag}(u_1, \ldots, u_m)$, +где $u_i | u_{i+1}$ для всех $i = 1, \ldots, m-1$. С~учётом +сказанного выше это означает, что для некоторого базиса $e''_1, +\ldots, e''_n$ в~$L$ и некоторого базиса $f''_1, \ldots, f''_m$ +в~$N$ справедливо соотношение $(f''_1, \ldots, f''_m) = (e''_1, +\ldots, e''_n) C''$. Иными словами, $f''_i = u_i e''_i$ для всех $i += 1, \ldots, m$, а~это и требовалось. +\end{proof} + +\begin{definition} +Конечная абелева группа $A$ называется {\it примарной}, если её +порядок равен $p^k$ для некоторого простого числа~$p$. +\end{definition} + +\begin{remark} +В общем случае (когда группы не предполагаются коммутативными) +конечная группа $G$ с~условием $|G| = p^k$ ($p$~--- простое) +называется {\it $p$-группой}. +\end{remark} + +Следствие~1 лекции~3 показывает, что каждая конечная циклическая +группа разлагается в прямую сумму примарных циклических подгрупп. + +\begin{theorem} \label{traz} +Всякая конечно порождённая абелева группа $A$ разлагается в прямую +сумму примарных и бесконечных циклических подгрупп, т.\,е. +\begin{equation} \label{eqn} +A \cong \ZZ_{p_1^{k_1}} \oplus \ldots \oplus \ZZ_{p_s^{k_s}} \oplus +\ZZ \oplus \ldots \oplus \ZZ, +\end{equation} +где $p_1, \ldots, p_s$~--- простые числа \textup(не обязательно +попарно различные\textup) и $k_1, \ldots, k_s \in \NN$. Кроме того, +число бесконечных циклических слагаемых, а~также число и порядки +примарных циклических слагаемых определено однозначно. +\end{theorem} + +Сразу выделим некоторые следствия из этой теоремы. + +\begin{corollary} +Абелева группа $A$ является конечно порождённой тогда и только тогда, когда $A$ разлагается в прямую сумму циклических подгрупп. +\end{corollary} + +\begin{proof} +В одну сторону следует из теоремы. В другую сторону: пусть $A = A_1 \oplus \ldots \oplus A_m$, где $A_i$~--- циклическая подгруппа, то есть $A_i = \langle a_i \rangle$, $a_i \in A$. Тогда $\{a_1, \ldots, a_m \}$ --- набор порождающих элементов для группы $A$. +\end{proof} + +\begin{corollary} +Всякая конечная абелева группа разлагается в прямую сумму примарных +циклических подгрупп, причём число и порядки примарных циклических +слагаемых определено однозначно. +\end{corollary} + +Теперь преступим к доказательству самой теоремы. + +\begin{proof} +Пусть $a_1,\ldots,a_n$~--- конечная система порождающих группы $A$. +Рассмотрим гомоморфизм +$$ +\varphi \colon \ZZ^n \to A, \quad (s_1, \ldots, s_n) \mapsto s_1 a_1 ++ \ldots + s_n a_n. +$$ +Ясно, что $\varphi$ сюръективен. Тогда по теореме о гомоморфизме +получаем $A \cong \ZZ^n / N$, где $N = \Ker \varphi$. По теореме о +согласованных базисах существует такой базис $e_1, \ldots, e_n$ +группы $\ZZ^n$ и такие натуральные числа $u_1, \ldots, u_m$, $m +\leqslant n$, что $u_1 e_1, \ldots, u_m e_m$~--- базис группы~$N$. +Тогда имеем +$$ +\begin{array}{ccccccccccccc} +L &=& \langle e_1 \rangle &\oplus & \ldots & \oplus & \langle e_m +\rangle & \oplus & \langle e_{m+1} \rangle & \oplus & \ldots & +\oplus & \langle e_n \rangle, \\ +N &=& \langle u_1e_1 \rangle & \oplus & \ldots & \oplus & \langle +u_m e_m \rangle &\oplus & \lbrace 0 \rbrace & \oplus & \ldots & +\oplus & \lbrace 0 \rbrace. +\end{array} +$$ +Применяя теорему о факторизации по сомножителям, мы получаем +$$ +\ZZ^n / N \cong \ZZ / u_1 \ZZ \oplus \ldots \oplus \ZZ / u_m \ZZ +\oplus \underbrace{\ZZ / \lbrace 0 \rbrace \oplus \ldots \oplus \ZZ +/ \lbrace 0 \rbrace}_{n-m} \cong \ZZ_{u_1} \oplus \ldots \oplus +\ZZ_{u_m} \oplus \underbrace{\ZZ \oplus \ldots \oplus \ZZ}_{n-m}. +$$ +Чтобы добиться разложения~(\ref{eqn}), остаётся представить каждое +из циклических слагаемых $\ZZ_{u_i}$ в виде прямой суммы примарных +циклических подгрупп, воспользовавшись следствием~1 из лекции~3. + +Перейдём к доказательству единственности разложения~(\ref{eqn}). +Пусть $\langle c \rangle_q$ обозначает циклическую группу порядка +$q$ с порождающей~$c$. Пусть имеется разложение +\begin{equation} \label{eqn2} +A = \langle c_1\rangle_{p_1^{k_1}} \oplus \ldots \oplus \langle c_s +\rangle_{p_s^{k_s}} \oplus \langle c_{s+1} \rangle_{\infty} \oplus +\ldots \oplus \langle c_{s+t} \rangle_{\infty} +\end{equation} +(заметьте, что мы просто переписали в другом виде правую часть +соотношения~(\ref{eqn})). Рассмотрим в~$A$ так называемую {\it +подгруппу кручения} +$$ +\Tor A := \{ a \in A \mid ma=0 \ \text{для некоторого} \ m \in \NN +\}. +$$ +Иными словами, $\Tor A$~--- это подгруппа в~$A$, состоящая из всех +элементов конечного порядка. Выделим эту подгруппу в +разложении~(\ref{eqn2}). Рассмотрим произвольный элемент $a \in A$. +Он представим в виде +$$ +a = r_1c_1 + \ldots + r_m c_m + r_{m+1} c_{m+1} + \ldots + r_n c_n +$$ +для некоторых целых чисел $r_1, \ldots, r_n$. Легко видеть, что $a$ +имеет конечный порядок тогда и только тогда, когда $r_{m+1} = \ldots += r_m = 0$. Отсюда получаем, что +\begin{equation} \label{eqn3} +\Tor A = \langle c_1 \rangle_{p_1^{k_1}} \oplus \ldots \oplus +\langle c_s \rangle_{p_s^{k_s}}. +\end{equation} +Применяя опять теорему о факторизации по сомножителям, мы получаем +$A / \Tor A \cong \ZZ^t$, где $t$ --- количество бесконечных +циклических подгрупп в разложении~(\ref{eqn}). Отсюда следует, +что число $t$ однозначно выражается в терминах самой группы~$A$ +(как ранг свободной абелевой группы $A / \Tor A$). Значит, $t$ +не зависит от разложения~(\ref{eqn2}). + +Однозначность числа и порядков примарных циклических +групп будет доказана на следующей лекции. + +\end{proof} + +%Далее, для каждого простого числа $p$ определим в $A$ {\it подгруппу +%$p$-кручения} +%\begin{equation} \label{eqn4} +%\Tor_p A := \{ a\in A \mid p^ka=0 \ \text{для некоторого} \ k \in +%\NN \}. +%\end{equation} +%Ясно, что $\Tor_p A \subset \Tor A$. Выделим подгруппу $\Tor_p A$ в +%разложении~(\ref{eqn3}). Легко видеть, что $\langle c_i +%\rangle_{p_i^{k_i}} \subseteq \Tor_p A$ для всех $i$ с условием $p_i +%= p$. Если же $p_i \ne p$, то по следствию~2 из теоремы Лагранжа +%(см. лекцию~1) порядок любого ненулевого элемента $x \in \langle c_i +%\rangle_{p_i^{k_i}}$ является степенью числа~$p_i$, а~значит, $p^k x +%\ne 0$ для всех $k \in \NN$. Отсюда следует, что $\Tor_p A$ является +%суммой тех конечных слагаемых в разложении~(\ref{eqn3}), порядки +%которых суть степени~$p$. Поэтому доказательство теперь сводится к +%случаю, когда $A$~--- примарная группа. +% +%Пусть $|A|=p^k$ и +%$$ +%A = \langle c_1\rangle_{p^{k_1}}\oplus\ldots\oplus\langle +%c_r\rangle_{p^{k_r}}, \quad k_1+\ldots+k_r=k. +%$$ +%Докажем индукцией по~$k$, что набор чисел $k_1, \ldots, k_r$ не +%зависит от разложения. +% +%Если $k = 1$, то $|A| = p$, но тогда $A \cong \ZZ_p$ по следствию~5 +%из теоремы Лагранжа (см. лекцию~1). Пусть теперь $k > 1$. Рассмотрим +%подгруппу $pA: = \{ pa \mid a \in A \}$. В~терминах +%равенства~(\ref{eqn4}) имеем +%$$ +%pA = \langle pc_1 \rangle_{p^{k_1-1}} \oplus \ldots \oplus \langle +%pc_r\rangle_{p^{k_r-1}}. +%$$ +%В частности, при $k_i = 1$ соответствующее слагаемое равно $\lbrace +%0 \rbrace$ (и тем самым исчезает). Так как $|pA| = p^{k - r} < p^k$, +%то по предположению индукции группа $pA$ разлагается в прямую сумму +%примарных циклических подгрупп однозначно с точностью до порядка +%слагаемых. Следовательно, ненулевые числа в наборе $k_1 - 1, \ldots, +%k_r-1$ определены однозначно (с точностью до перестановки). Отсюда +%мы находим значения $k_i$, отличные от~$1$. Количество тех~$k_i$, +%которые равны~$1$, однозначно восстанавливается из условия $k_1 + +%\ldots + k_r = k$. +%\end{proof} + +%Заметим, что теорема о согласованных базисах даёт нам другое +%разложение конечной абелевой группы~$A$: +%\begin{equation} \label{eqn5} +%A=\ZZ_{u_1}\oplus\ldots\oplus\ZZ_{u_m}, \quad \text{где} \ +%u_i|u_{i+1} \ \text{при} \ i = 1, \ldots, m-1. +%\end{equation} +%Числа $u_1, \ldots, u_m$ называют {\it инвариантными множителями} +%конечной абелевой группы~$A$. +% +%\begin{definition} +%{\it Экспонентой} конечной абелевой группы $A$ называется число +%$\exp A$, равное наименьшему общему кратному порядков элементов +%из~$A$. +%\end{definition} +% +%\begin{remark} +%Легко видеть, что $\exp A = \min \lbrace n \in \NN \mid ma = 0 \ +%\text{для всех} \ a \in A \rbrace$. +%\end{remark} +% +%\begin{proposition} +%Экспонента конечной абелевой группы~$A$ равна её последнему +%инвариантному множителю~$u_m$. +%\end{proposition} +% +%\begin{proof} +%Обратимся к разложению~(\ref{eqn5}). Так как $u_i | u_m$ для всех $i +%= 1, \ldots, m$, то $u_ma=0$ для всех $a \in A$. Это означает, что +%$\exp A \leqslant u_m$ (и тем самым $\exp A \, | u_m$). С~другой +%стороны, в $A$ имеется циклическая подгруппа порядка $u_m$. Значит, +%$\exp A \geqslant u_m$. +%\end{proof} +% +%\begin{corollary} +%Конечная абелева группа $A$ является циклической тогда и только +%тогда, когда $\exp A =\nobreak |A|$. +%\end{corollary} +% +%\begin{proof} +%Группа $A$ является циклической тогда и только тогда, когда в +%разложении~(\ref{eqn5}) присутствует только одно слагаемое, т.\,е. +%$A = \ZZ_{u_m}$ и $|A| = u_m$. +%\end{proof} + +\newpage + +\section*{Лекция 5} + +\medskip + +{\it Строение конечно порождённых абелевых груп (продолжение). Экспонента +конечной абелевой группы. Действие группы на множестве. Орбиты и стабилизаторы.} +%Транзитивные и свободные действия. Три действия группы на себе. +%Теорема Кэли. Классы сопряжённости.} + +Продолжим доказательство теоремы с прошлой лекции. + +\begin{theorem} \label{traz} +Всякая конечно порождённая абелева группа $A$ разлагается в прямую +сумму примарных и бесконечных циклических подгрупп, т.\,е. +\begin{equation} \label{eqn} +A \cong \ZZ_{p_1^{k_1}} \oplus \ldots \oplus \ZZ_{p_s^{k_s}} \oplus +\ZZ \oplus \ldots \oplus \ZZ, +\end{equation} +где $p_1, \ldots, p_s$~--- простые числа \textup(не обязательно +попарно различные\textup) и $k_1, \ldots, k_s \in \NN$. Кроме того, +число бесконечных циклических слагаемых, а~также число и порядки +примарных циклических слагаемых определено однозначно. +\end{theorem} + +\begin{proof} +На прошлой лекции мы доказали существование разложения и то, что количество +бесконечных циклических групп $\ZZ$ определено однозначно. Для этого мы вводили +понятие \textit{подгруппы кручения}: +\begin{equation} \label{eqn3} +\Tor A = \langle c_1 \rangle_{p_1^{k_1}} \oplus \ldots \oplus +\langle c_s \rangle_{p_s^{k_s}}. +\end{equation} +Далее, для каждого простого числа $p$ определим в $A$ {\it подгруппу +$p$-кручения} +\begin{equation} \label{eqn4} +\Tor_p A := \{ a\in A \mid p^ka=0 \ \text{для некоторого} \ k \in +\NN \}. +\end{equation} +Ясно, что $\Tor_p A \subset \Tor A$. Выделим подгруппу $\Tor_p A$ в +разложении~(\ref{eqn3}). Легко видеть, что $\langle c_i +\rangle_{p_i^{k_i}} \subseteq \Tor_p A$ для всех $i$ с условием $p_i += p$. Если же $p_i \ne p$, то по следствию~2 из теоремы Лагранжа +(см. лекцию~2) порядок любого ненулевого элемента $x \in \langle c_i +\rangle_{p_i^{k_i}}$ является степенью числа~$p_i$, а~значит, $p^k x +\ne 0$ для всех $k \in \NN$. Отсюда следует, что $\Tor_p A$ является +суммой тех конечных слагаемых в разложении~(\ref{eqn3}), порядки +которых суть степени~$p$. Поэтому доказательство теперь сводится к +случаю, когда $A$~--- примарная группа. + +Пусть $|A|=p^k$ и +$$ +A = \langle c_1\rangle_{p^{k_1}}\oplus\ldots\oplus\langle +c_r\rangle_{p^{k_r}}, \quad k_1+\ldots+k_r=k. +$$ +Докажем индукцией по~$k$, что набор чисел $k_1, \ldots, k_r$ не +зависит от разложения. + +Если $k = 1$, то $|A| = p$, но тогда $A \cong \ZZ_p$ по следствию~5 +из теоремы Лагранжа (см. лекцию~2). Пусть теперь $k > 1$. Рассмотрим +подгруппу $pA: = \{ pa \mid a \in A \}$. В~терминах +равенства~(\ref{eqn4}) имеем +$$ +pA = \langle pc_1 \rangle_{p^{k_1-1}} \oplus \ldots \oplus \langle +pc_r\rangle_{p^{k_r-1}}. +$$ +В частности, при $k_i = 1$ соответствующее слагаемое равно $\lbrace +0 \rbrace$ (и тем самым исчезает). Так как $|pA| = p^{k - r} < p^k$, +то по предположению индукции группа $pA$ разлагается в прямую сумму +примарных циклических подгрупп однозначно с точностью до порядка +слагаемых. Следовательно, ненулевые числа в наборе $k_1 - 1, \ldots, +k_r-1$ определены однозначно (с точностью до перестановки). Отсюда +мы находим значения $k_i$, отличные от~$1$. Количество тех~$k_i$, +которые равны~$1$, однозначно восстанавливается из условия $k_1 + +\ldots + k_r = k$. +\end{proof} + +Заметим, что теорема о согласованных базисах даёт нам другое +разложение конечной абелевой группы~$A$: +\begin{equation} \label{eqn5} +A=\ZZ_{u_1}\oplus\ldots\oplus\ZZ_{u_m}, \quad \text{где} \ +u_i|u_{i+1} \ \text{при} \ i = 1, \ldots, m-1. +\end{equation} +Числа $u_1, \ldots, u_m$ называют {\it инвариантными множителями} +конечной абелевой группы~$A$. + +\begin{definition} +{\it Экспонентой} конечной абелевой группы $A$ называется число +$\exp A$, равное наименьшему общему кратному порядков элементов +из~$A$. Легко заметить, что это равносильно следующему условию: +$$ +\exp A = \min \lbrace n \in \NN \mid na = 0 \ +\text{для всех} \ a \in A \rbrace +$$ +\end{definition} + +\begin{proposition} +Экспонента конечной абелевой группы~$A$ равна её последнему +инвариантному множителю~$u_m$. +\end{proposition} + +\begin{proof} +Обратимся к разложению~(\ref{eqn5}). Так как $u_i | u_m$ для всех $i += 1, \ldots, m$, то $u_ma=0$ для всех $a \in A$. Это означает, что +$\exp A \leqslant u_m$ (и тем самым $\exp A \, | u_m$). С~другой +стороны, в $A$ имеется циклическая подгруппа порядка $u_m$. Значит, +$\exp A \geqslant u_m$. +\end{proof} + +\begin{corollary} +Конечная абелева группа $A$ является циклической тогда и только +тогда, когда $\exp A =\nobreak |A|$. +\end{corollary} + +\begin{proof} +Группа $A$ является циклической тогда и только тогда, когда в +разложении~(\ref{eqn5}) присутствует только одно слагаемое, т.\,е. +$A = \ZZ_{u_m}$ и $|A| = u_m$. +\end{proof} + + +Пусть $G$~--- произвольная группа и $X$~--- некоторое множество. + +\begin{definition} +\textit{Действием} группы $G$ на множестве $X$ называется +отображение $G\times X\to X$, $(g,x)\mapsto gx$, удовлетворяющее +следующим условиям: + +1) $ex=x$ для любого $x\in X$ ($e$~--- нейтральный элемент +группы~$G$); + +2) $g(hx)=(gh)x$ для всех $g,h\in G$ и $x\in X$. + +Обозначение: $G:X$. +\end{definition} + +Если задано действие группы $G$ на множестве~$X$, то каждый элемент +$g \in G$ определяет биекцию $a_g \colon X \to\nobreak X$ по правилу +$a_g(x) = gx$ (обратным отображением для $a_g$ будет $a_{g^{-1}}$). +Обозначим через $S(X)$ группу всех биекций (перестановок) множества +$X$ с операцией композиции. Тогда отображение $a \colon G \to S(X)$, +$g \mapsto a_g$, является гомоморфизмом групп. Действительно, для +произвольных элементов $g,h \in G$ и $x \in X$ имеем +$$ +a_{gh}(x) = (gh)x = g(hx) = g a_h(x) = a_g (a_h(x)) = (a_g a_h)(x). +$$ +Можно показать, что задание действия группы $G$ на множестве $X$ +равносильно заданию соответствующего гомоморфизма $a \colon G \to +S(X)$. + +\begin{example} +Симметрическая группа $S_n$ естественно действует на множестве $X = +\lbrace 1, 2, \ldots, n \rbrace$ по формуле $\sigma x =\nobreak +\sigma (x)$ ($\sigma \in S_n$, $x \in X$). Условие~1) здесь +выполнено по определению тождественной подстановки, условие~2) +выполнено по определению композиции подстановок. +\end{example} + +Пусть задано действие группы $G$ на множестве~$X$. + +\begin{definition} +{\it Орбитой} точки $x\in X$ называется подмножество +$$ +Gx = \lbrace x' \in X \mid x' = gx \ \text{для некоторого} \ g \in G +\rbrace = \{ gx \mid g\in G\}. +$$ +\end{definition} + +\begin{remark} +Для точек $x, x' \in X$ отношение \guillemotleft$x'$ лежит в орбите +$Gx$\guillemotright{} является отношением эквивалентности: + +(1) (рефлексивность) $x \in Gx$ для всех $x \in X$: это верно, так +как $x = ex \in Gx$ для всех $x \in X$; + +(2) (симметричность) если $x' \in Gx$, то $x \in Gx'$: это верно, +так как из условия $x' = gx$ следует $x = ex = (g^{-1}g)x = +g^{-1}(gx) = g^{-1}x' \in Gx'$; + +(3) (транзитивность) если $x' \in Gx$ и $x'' \in Gx'$, то $x'' \in +Gx$: это верно, так как из условий $x' = gx$ и $x'' = hx'$ следует +$x'' = hx' = h(gx) = (hg)x \in Gx$. + +Отсюда вытекает, что множество $X$ разбивается в объединение попарно +непересекающихся орбит действия группы~$G$. +\end{remark} + +\begin{definition} +{\it Стабилизатором \textup(стационарной подгруппой\textup)} точки +$x \in X$ называется подгруппа $\St(x) := \{ g \in G \mid gx = x +\}$. +\end{definition} + +\begin{exercise} +Проверьте, что множество $\St(x)$ действительно является подгруппой +в~$G$. +\end{exercise} + +%\begin{example} +%Рассмотрим действие группы $\SL_n(\RR)$, $n \geqslant 2$ на +%множестве~$\RR^n$, заданное формулой $(A, v) \mapsto A \cdot v$, где +%в правой части вектор $v$ рассматривается как столбец своих +%координат. Оказывается, что для этого действия имеется всего две +%орбиты $\lbrace 0 \rbrace$ и $\RR^n \setminus \lbrace 0 \rbrace$. +%Чтобы показать, что $\RR^n \setminus\nobreak \lbrace 0 \rbrace$ +%действительно является одной орбитой, достаточно проверить, что +%всякий ненулевой вектор можно получить, подействовав на элемент +%$e_1$ (первый базисный вектор) подходящей матрицей из +%группы~$\SL_n(\RR)$. Пусть $v \in \RR^n$~--- произвольный вектор с +%координатами $(x_1, \ldots, x_n)$. Покажем, что существует +%матрица~$A \in \SL_n(\RR)$, для которой $Ae_1 = v$ или, +%эквивалентно, +%\begin{equation} \label{eqn1} +%A\begin{pmatrix} 1 \\ 0 \\ \vdots \\ 0 \end{pmatrix} = +%\begin{pmatrix} x_1\\ x_2 \\ \vdots \\ x_n \end{pmatrix}. +%\end{equation} +%Из уравнения~(\ref{eqn1}) следует, что в первом столбце матрицы~$A$ +%должны стоять в точности числа $x_1, \ldots, x_n$. Как мы знаем из +%линейной алгебры, вектор $v$ можно дополнить до базиса $v, v_2, +%\ldots, v_n$ пространства~$\RR^n$. Пусть $A'$~--- квадратная матрица +%порядка~$n$, в которой по столбцам записаны координаты векторов $v, +%v_2, \ldots, v_n$. Эта матрица невырожденна и удовлетворяет условию +%$A'e_1 = v$ (а~также $A'e_i = v_i$ для всех $i = 2, \ldots, n$). +%Однако её определитель может быть отличен от~$1$. Поделив все +%элементы последнего столбца матрицы $A'$ на $\det A'$, мы получим +%искомую матрицу~$A$ с определителем~$1$. Итак, мы показали, что +%$\RR^n \setminus \lbrace 0 \rbrace$~--- одна орбита для нашего +%действия. Легко видеть, что стабилизатор точки $e_1$ при этом будет +%состоять из всех матриц в $\SL_n(\RR)$, у которых первый столбец +%равен $\begin{pmatrix} 1 \\ 0 \\ \vdots \\ 0 \end{pmatrix}$. (У +%любой другой точки стабилизатор будет другим!) +%\end{example} + +\begin{lemma} +Пусть конечная группа $G$ действует на множестве~$X$. Тогда для +всякого элемента $x\in X$ справедливо равенство +$$ +|Gx| = |G| / |\St(x)|. +$$ +В~частности, число элементов в \textup(любой\textup) орбите делит +порядок группы~$G$. +\end{lemma} + +\begin{proof} +Рассмотрим множество\footnote{Это множество может не быть +факторгруппой, так как подгруппа $\St(x)$ не обязана быть нормальной +в~$G$.} $G / \St(x)$ левых смежных классов группы $G$ по подгруппе +$\St(x)$ и определим отображение $\psi \colon G / \St(x) \to Gx$ по +формуле $g\St(x) \mapsto gx$. Это определение корректно, поскольку +для любого другого представителя $g'$ левого смежного класса +$g\St(x)$ имеем $g' = g h$, где $h \in \St(x)$, и тогда $g'x = (gh)x += g(hx) = gx$. Сюръективность отображения $\psi$ следует из +определения орбиты $Gx$. Проверим инъективность. Предположим, что +$g_1 \St(x) = g_2 \St(x)$ для некоторых $g_1, g_2 \in G$. Тогда +$g_1x = g_2x$. Подействовав на левую и правую части элементом +$g_2^{-1}$, получим $(g_2^{-1}g_1)x = x$, откуда $g_2^{-1}g_1 \in +\St(x)$. Последнее и означает, что $g_1 \St(x) = g_2 \St(x)$. Итак, +мы показали, что отобржание $\psi$ является биекцией. Значит, $|Gx| += |G / \St(x)| = [G : \St(x)]$ и требуемое равенство вытекает из +теоремы Лагранжа (см. лекцию~1). +\end{proof} + +\begin{example} +Рассмотрим действие группы $S^1 = \lbrace z \in \CC \mid |z| = 1 +\rbrace$ на множестве~$\CC$, заданное +формулой $(z,w) \mapsto zw$, где $z \in S^1$, $w \in \CC$, +а~$zw$~--- обычное произведение комплексных чисел. Для этого +действия орбитами будут множества вида $|z| = c$, где $c \in +\RR_{\geqslant 0}$,~--- это всевозможные окружности с центром в +нуле, а также отдельная орбита, состоящая из нуля. Имеем +$$ +\St(z) = +\begin{cases} +\lbrace 1 \rbrace, & \text{если} \ z \ne 0;\\ +S^1, & \text{если} \ z = 0. +\end{cases} +$$ +\end{example} + +% +%Пусть снова группа $G$ действует на множестве~$X$. +% +%\begin{definition} +%Действие $G$ на $X$ называется {\it транзитивным}, если для любых +%$x, x' \in X$ найдётся такой элемент $g \in G$, что $x' = gx$. +%(Иными словами, все точки множества $X$ образуют одну орбиту.) +%\end{definition} +% +%\begin{definition} +%Действие $G$ на $X$ называется {\it свободным}, если для любой точки +%$x \in X$ условие $gx=x$ влечёт $g=e$. (Иными словами, $\St(x) = +%\lbrace e \rbrace$ для всех $x \in X$.) +%\end{definition} +% +%\begin{definition} +%Действие $G$ на $X$ называется {\it эффективным}, если условие +%$gx=x$ для всех $x\in X$ влечёт $g=e$. (Иными словами, $\bigcap +%\limits_{x \in X} \St(x) = \lbrace e \rbrace$.) +%\end{definition} +% +%\begin{remark} +%Из определений следует, что всякое свободное действие эффективно. +%Обратное утверждение неверно, как показывает пример~1 при $n +%\geqslant 3$, см. ниже. +%\end{remark} +% +%В~примерах 1--3 все действия эффективны. В~примере~1 действие +%транзитивно, свободно при $n \leqslant 2$ и не свободно при $n +%\geqslant 3$. В~примере~2 действие не транзитивно и не свободно; но +%если его ограничить на подмножество $\CC \setminus \lbrace 0 +%\rbrace$ (то есть выбросить из $\CC$ точку~$0$), то оно станет +%свободным. В примере~3 действие не транзитивно и не свободно; но +%если его ограничить на подмножество $\RR^n \setminus \lbrace 0 +%\rbrace$, то оно станет транзитивным. +% +%\begin{remark} +%Действие $G$ на $X$ эффективно тогда и только тогда, когда +%определяемый им гомоморфизм $a \colon G \to S(X)$ инъективен. +%\end{remark} +% +%\begin{definition} +%{\it Ядром неэффективности} действия группы $G$ на множестве~$X$ +%называется подгруппа $K = \{ g\in G \mid gx = x \ \text{для всех} \ +%x\in X\}$. +%\end{definition} +% +%Легко проверить, что $K = \Ker a$, где $a \colon G \to S(X)$~--- +%определяемый действием гомоморфизм. Отсюда следует, что $K$~--- +%нормальная подгруппа в~$G$. Рассмотрим факторгруппу $G/K$ и +%определим её действие на множестве $X$ по формуле $(gK)x = gx$. +%Поскольку $kx = x$ для всех $k \in K$ и $x \in X$, действие +%определено корректно. +% +%\begin{lemma} +%Определённое выше действие группы $G/K$ на множестве $X$ является +%эффективным. +%\end{lemma} +% +%\begin{proof} +%Пусть элемент $g \in G$ таков, что $(gK)x = x$ для всех $x \in X$. +%Тогда $gx = x$ для всех $x \in X$, откуда $g \in K$ и $gK = K$. +%\end{proof} +% +%Пусть $G$~--- произвольная группа. Рассмотрим три действия $G$ на +%самой себе, т.\,е. положим $X=G$: +% +%1) действие {\it умножениями слева}: $(g,h)\mapsto gh$; +% +%2) действие {\it умножениями справа}: $(g,h)\mapsto hg^{-1}$; +% +%3) действие {\it сопряжениями}: $(g,h)\mapsto ghg^{-1}$. +% +%Непосредственно проверяется, что первые два действия свободны и +%транзитивны. Орбиты третьего действия называются {\it классами +%сопряжённости} группы~$G$. Например, $\{e\}$~--- класс сопряжённости +%в любой группе. В~частности, для нетривиальных групп действие +%сопряжениями не является транзитивным. +% +%\begin{definition} +%Два действия группы $G$ на множествах $X$ и $Y$ называются {\it +%изоморфными}, если существует такая биекция $\varphi\colon X\to Y$, +%что +%\begin{equation} \label{eqn2} +%\varphi(gx)=g\varphi(x) \ \text{для любых} \ g\in G, x\in X. +%\end{equation} +%\end{definition} +% +%\begin{proposition} +%Всякое свободное транзитивное действие группы $G$ на множестве $X$ +%изоморфно действию группы $G$ на себе левыми сдвигами. +%\end{proposition} +% +%\begin{proof} +%Зафиксируем произвольный элемент $x\in X$. Покажем, что отображение +%$\varphi \colon G\to X$, заданное формулой $\varphi(h) = hx$, +%является искомой биекцией. Сюръективность (соответственно +%инъективность) отображения $\varphi$ следует из транзитивности +%(соответственно свободности) действия $G$ на~$X$. +%Условие~(\ref{eqn2}) следует из цепочки равенств $\varphi(gh) = +%(gh)x = g(hx) = g(\varphi(h))$. +%\end{proof} +% +%\begin{corollary} +%Действия группы $G$ на себе правыми и левыми сдвигами изоморфны. +%\end{corollary} +% +%\smallskip +% +%{\bf Теорема Кэли.} Всякая конечная группа $G$ порядка $n$ изоморфна +%подгруппе симметрической группы~$S_n$. +% +%\begin{proof} +%Рассмотрим действие группы $G$ на себе левыми сдвигами. Как мы +%знаем, это действие свободно, поэтому соответствующий гомоморфизм $a +%\colon G \to S(G) \simeq\nobreak S_n$ инъективен, т.\,е. $\Ker a = +%\lbrace e \rbrace$. Учитывая, что $G / \lbrace e \rbrace \cong G$, +%по теореме о гомоморфизме получаем $G \cong \Im a$. +%\end{proof} + + +\newpage + +\section*{Лекция 6} + +\medskip + +{\it Три действия группы на себе. Теорема Кэли. Классы сопряжённости. +Кольца. Делители нуля, обратимые элементы, нильпотенты. Поля и алгебры. +Идеалы. } +% и факторкольца. Теорема о +%гомоморфизме. Центр алгебры матриц над полем. Простота алгебры +%матриц над полем.} + +\medskip + +Пусть $G$~--- произвольная группа. Рассмотрим три действия $G$ на +самой себе, т.\,е. положим $X=G$: + +1) действие {\it умножениями слева (левыми сдвигами)}: $(g,h)\mapsto gh$; + +2) действие {\it умножениями справа (правыми сдвигами)}: $(g,h)\mapsto hg^{-1}$; + +3) действие {\it сопряжениями}: $(g,h)\mapsto ghg^{-1}$. + +\begin{remark} +Для действий левыми и правыми сдвигами есть ровно одна орбита (сама $G$) и +стабилизатор любой точки тривиален, то есть $\St(x) = \{0\}$. +\end{remark} + +\begin{definition} +Орбитой действия сопряжениями называются \textit{классами сопряженности} +\end{definition} + +\begin{example} +В любой группе $G$ есть класс сопряженности $\{e\}$. \\Также, если $G$ коммутативна, то $\{x\}$ является классом сопряженности для всех $x$ из $G$. +\end{example} + +\smallskip + +{\bf Теорема Кэли.} Всякая конечная группа $G$ порядка $n$ изоморфна +подгруппе симметрической группы~$S_n$. + +\begin{proof} +Рассмотрим действие группы $G$ на себе левыми сдвигами. Как мы +знаем, это действие свободно, поэтому соответствующий гомоморфизм $a +\colon G \to S(G) \simeq\nobreak S_n$ инъективен, т.\,е. $\Ker a = +\lbrace e \rbrace$. Учитывая, что $G / \lbrace e \rbrace \cong G$, +по теореме о гомоморфизме получаем $G \cong \Im a$. +\end{proof} + +\medskip + +Теперь приступим к изучению колец. +\begin{definition} +{\it Кольцом} называется множество $R$ с двумя бинарными операциями +\guillemotleft $+$\guillemotright{}~(сложение) и \guillemotleft +$\times$\guillemotright{}~(умножение), обладающими следующими +свойствами: + +1) $(R,+)$ является абелевой группой (называемой {\it аддитивной +группой} кольца $R$); + +2) выполнены {\it левая и правая дистрибутивности}, т.е. +$$ +a(b+c)=ab+ac \quad \text{и} \quad (b+c)a=ba+ca \quad \text{для всех} +\ a,b,c\in R. +$$ + +В этом курсе мы рассматриваем только ассоциативные кольца с +единицей, поэтому дополнительно считаем, что выполнены ещё два +свойства: + +3) $a(bc)=(ab)c$ для всех $a,b,c\in R$ (\textit{ассоциативность +умножения}); + +4) существует такой элемент $1\in R$ (называемый \textit{единицей}), +что +\begin{equation} \label{eq1} +a1 = 1a = a \ \text{для всякого} \ a \in R. +\end{equation} +\end{definition} + +\begin{remark} +В произвольном кольце $R$ выполнены равенства +\begin{equation} \label{eq2} +a0 = 0a = 0 \ \text{для всякого} \ a \in R. +\end{equation} +В самом деле, имеем $a0 = a(0 + 0) = a0 + a0$, откуда $0 = a0$. +Аналогично устанавливается равенство $0a = 0$. +\end{remark} + +\begin{remark} +Если кольцо $R$ содержит более одного элемента, то $0\ne 1$. Это +следует из соотношений~(\ref{eq1}) и~(\ref{eq2}). +\end{remark} + +\textbf{Примеры колец:} +\begin{enumerate}[label=\textup{(\arabic*)},ref=\textup{\arabic*}] +\item \label{ex_num} +числовые кольца $\ZZ$, $\QQ$, $\RR$, $\CC$; + +\item +кольцо $\ZZ_n$ вычетов по модулю~$n$; + +\item \label{ex_mat} +кольцо $\Mat(n\times n, \RR)$ матриц с коэффициентами из~$\RR$; + +\item \label{ex_pol} +кольцо $\RR[x]$ многочленов от переменной $x$ с коэффициентами +из~$\RR$; + +\item +кольцо $\RR[[x]]$ \textit{формальных степенных рядов} от переменной +$x$ с коэффициентами из~$\RR$: +$$ +\RR[[x]] := \lbrace \sum \limits_{i = 0}^\infty a_i x^i \mid a_i \in +\RR \rbrace; +$$ + +\item \label{ex_func} +кольцо $\FFF(M, \RR)$ всех функций из множества $M$ во +множество~$\RR$ с операциями поточечного сложения и умножения: +$$ +(f_1 + f_2)(m) := f_1(m) + f_2(m); \quad (f_1f_2)(m) := f_1(m) +f_2(m) \quad \text{для всех} \quad f_1,f_2 \in \FFF(M, \RR), m \in +M. +$$ +\end{enumerate} + +\begin{remark} +В примерах (\ref{ex_mat})--(\ref{ex_func}) вместо $\RR$ можно брать +любое кольцо, в частности $\ZZ$, $\QQ$, $\CC$, $\ZZ_n$. +\end{remark} + +\begin{remark} +Обобщая пример~(\ref{ex_pol}), можно рассматривать кольцо $\RR[x_1, +\ldots, x_n]$ многочленов от нескольких переменных $x_1, \ldots, +x_n$ с коэффициентами из~$\RR$. +\end{remark} + +\begin{definition} +Кольцо $R$ называется {\it коммутативным}, если $ab=ba$ для всех +$a,b\in R$. +\end{definition} + +Все перечисленные в примерах (\ref{ex_num})--(\ref{ex_func}) кольца, +кроме $\Mat(n\times n, \RR)$ при $n \geqslant 2$, коммутативны. + +Пусть $R$~--- кольцо. + +\begin{definition} +Элемент $a\in R$ называется {\it обратимым}, если найдётся такой +$b\in R$, что $ab=ba=1$. Такой элемент $b$ обозначается классическим образом как $a^{-1}$. +\end{definition} + +\begin{remark} +Все обратимые элементы кольца $R$ образуют группу относительно +операции умножения. +\end{remark} + +\begin{definition} +Элемент $a\in R$ называется \textit{левым} (соответственно +\textit{правым}) \textit{делителем нуля}, если $a \ne 0$ и найдётся +такой $b \in R$, $b\ne 0$, что $ab=0$ (соответственно $ba = 0$). +\end{definition} + +\begin{remark} +В~случае коммутативных колец понятия левого и правого делителей нуля +совпадают, поэтому говорят просто о делителях нуля. +\end{remark} + +\begin{remark} +Все делители нуля в $R$ необратимы: если $ab = 0$, $a \ne 0$, $b \ne +0$ и существует $a^{-1}$, то получаем $a^{-1}ab = a^{-1}0$, откуда +$b = 0$~--- противоречие. +\end{remark} + +\begin{definition} +Элемент $a\in R$ называется {\it нильпотентом}, если $a \ne 0$ и +найдётся такое $m \in \NN$, что $a^m=0$. +\end{definition} + +\begin{remark} +Всякий нильпотент в $R$ является делителем нуля: если $a \ne 0$, +$a^m = 0$ и число $m$ наименьшее с таким свойством, то $m \geqslant +2$ и $a^{m-1} \ne 0$, откуда $aa^{m-1} = a^{m-1}a = 0$. +\end{remark} + +%\begin{definition} +%Элемент $a\in R$ называется {\it идемпотентом}, если $a^2=a$. +%\end{definition} + +\begin{definition} +{\it Полем} называется коммутативное ассоциативное кольцо $K$ с +единицей, в котором всякий ненулевой элемент обратим. +\end{definition} + +\begin{remark} +Тривиальное кольцо $\lbrace 0 \rbrace$ полем не считается, поэтому +$0 \ne 1$ в любом поле. +\end{remark} + +\textbf{Примеры полей:} $\QQ$, $\RR$, $\CC$, $\ZZ_2$. + +\begin{proposition} +Кольцо вычетов $\ZZ_n$ является полем тогда и только тогда, когда +$n$~--- простое число. +\end{proposition} + +\begin{proof} +Если число $n$ составное, то $n = m k$, где $1 < m, k < n$. Тогда +$\overline{m} \overline{k} = \overline{n} = \overline{0}$. +Следовательно, $\overline k$ и $\overline m$~--- делители нуля в +$\ZZ_n$, ввиду чего не все ненулевые элементы там обратимы. + +Если $n = p$~--- простое число, то возьмём произвольный ненулевой +вычет $\overline{a} \in \ZZ_p$ и покажем, что он обратим. Рассмотрим +вычеты +\begin{equation} \label{eq3} +\overline{1} \overline{a}, \overline{2} \overline{a}, \ldots, +\overline{(p-1)} \overline{a}. +\end{equation} +Если $\overline{r} \overline{a} = \overline{s} \overline{a}$ при $1 +\leqslant r,s \leqslant p-1$, то число $(r - s)a$ делится на~$p$. В +силу взаимной простоты чисел $a$ и $p$ получаем, что число $r - s$ +делится на~$p$. Тогда из условия $|r-s| \leqslant p - 2$ следует, +что $r = s$. Это рассуждение показывает, что все вычеты~(\ref{eq3}) +попарно различны. Поскольку все они отличны от нуля, среди них +должна найтись единица: существует такое $b \in \lbrace 1, \ldots, +p-1 \rbrace$, что $\overline{b} \overline{a}=\overline{1}$. Это и +означает, что вычет $\overline{a}$ обратим. +\end{proof} + +\begin{definition} +{\it Алгеброй} над полем $K$ (или кратко \textit{$K$-алгеброй}) +называется множество $A$ с операциями сложения, умножения и +умножения на элементы поля $K$, обладающими следующими свойствами: + +1) относительно сложения и умножения $A$ есть кольцо; + +2) относительно сложения и умножения на элементы из $K$ множество +$A$ есть векторное пространство; + +3 $(\lambda a)b=a(\lambda b)=\lambda(ab)$ для любых $\lambda\in K$ и +$a,b\in A$. + +{\it Размерностью} алгебры $A$ называется её размерность как +векторного пространства над~$K$. (Обозначение: $\dim_K A$.) +\end{definition} + +\textbf{Примеры.} + +1) Алгебра матриц $\Mat(n\times n, K)$ над +произвольным полем~$K$. Её размерность равна $n^2$. + +2) Алгебра $K[x]$ многочленов от переменной $x$ над произвольным +полем~$K$. Её размерность равна~$\infty$. + +3) $K, F$ --- поля, $K \subset F$, $F$ --- алгебра над $K$. \\ +Если это $\RR \subset \CC$, то $\dim_\RR\CC = 2$.\\ +Если это $\QQ \subset \RR$, то $\dim_\QQ\RR = \infty$. + +\begin{definition} +\textit{Подкольцом} кольца $R$ называется всякое подмножество $R' +\subseteq R$, замкнутое относительно операций сложения и умножения +(т.\,е. $a + b \in R'$ и $ab \in R'$ для всех $a,b \in R'$) и +являющееся кольцом относительно этих операций. \textit{Подполем} +называется всякое подкольцо, являющееся полем. +\end{definition} + +Например, $\ZZ$ является подкольцом в~$\QQ$, а~скалярные матрицы +образуют подполе в кольце $\Mat(n \times n, \RR)$. + +\begin{remark} +Если $K$~--- подполе поля~$F$, то $F$ является алгеброй над~$K$. +Так, поле $\CC$ является бесконечномерной алгеброй над~$\QQ$, тогда +как над $\RR$ имеет размерность~$2$. +\end{remark} + +\begin{definition} +\textit{Подалгеброй} алгебры $A$ (над полем~$K$) называется всякое +подмножество $A' \subseteq A$, замкнутое относительно всех трёх +имеющихся в $A$ операций (сложения, умножения и умножения на +элементы из~$K$) и являющееся алгеброй (над~$K$) относительно этих +операций. +\end{definition} + +Легко видеть, что подмножество $A' \subseteq A$ является алгеброй +тогда и только тогда, когда оно является одновременно подкольцом и +векторным подпространством в~$A$. + +Гомоморфизмы колец, алгебр определяются естественным образом как +отображения, сохраняющие все операции. + +\begin{exercise} +Сформулируйте точные определения гомоморфизма колец и гомоморфизма +алгебр. +\end{exercise} + +\begin{definition} +\textit{Изоморфизмом} колец, алгебр называется всякий гомоморфизм, +являющийся биекцией. +\end{definition} + +В теории групп нормальные подгруппы обладают тем свойством, что по +ним можно \guillemotleft факторизовать\guillemotright{}. В~этом +смысле аналогами нормальных подгрупп в теории колец служат идеалы. + +\begin{definition} +Подмножество $I$ кольца $R$ называется (\textit{двусторонним}) {\it +идеалом}, если оно является подгруппой по сложению и $ra\in I$, +$ar\in I$ для любых $a\in I$, $r\in R$. +\end{definition} + +\begin{remark} +В~некоммутативных кольцах рассматривают также левые и правые идеалы. +\end{remark} + +В каждом кольце $R$ есть {\it несобственные} идеалы $I=0$ и $I=R$. +Все остальные идеалы называются {\it собственными}. + +\begin{exercise} +Пусть $R$~--- коммутативное кольцо. С~каждым элементом $a \in R$ +связан идеал $(a) := \{ ra \mid r \in R \}$. +\end{exercise} + +\begin{definition} +Идеал $I$ называется {\it главным}, если существует такой элемент +$a\in R$, что $I=(a)$. (В~этой ситуации говорят, что $I$ порождён +элементом~$a$.) +\end{definition} + +\textbf{Пример.} В~кольце $\ZZ$ подмножество $k \ZZ$ ($k \in \ZZ$) +является главным идеалом, порождённым элементом~$k$. Более того, все +идеалы в $\ZZ$ являются главными. + +\begin{remark} +Главный идеал $(a)$ является несобственным тогда и только тогда, +когда $a=0$ или $a$ обратим. +\end{remark} + +Более общо, с каждым подмножеством $S \subseteq R$ связан идеал +$$ +(S) := \{ r_1 a_1 + \ldots + r_k a_k \mid a_i \in S, r_i \in R, +k\in\NN\}. +$$ +(Проверьте, что это действительно идеал!) Это наименьший по +включению идеал в~$R$, содержащий подмножество~$S$. В~этой ситуации +говорят, что идеал $I=(S)$ порождён подмножеством~$S$. + +% +%Вернёмся к случаю произвольного кольца $R$. Поскольку любой идеал +%$I$ является подгруппой абелевой группы $(R,+)$, мы можем +%рассмотреть факторгруппу $R/I$. Введём на ней умножение по формуле +%$$ +%(a+I)(b+I) := ab + I. +%$$ +%Покажем, что это определение корректно. Пусть элементы $a',b' \in R$ +%таковы, что $a' + I = a + I$ и $b' + I = b + I$. Проверим, что $a'b' +%+ I = ab + I$. Заметим, что $a' = a + x$ и $b' = b + y$ для +%некоторых $x, y \in I$. Тогда +%$$ +%a'b' + I = (a + x)(b + y) + I = ab + ay + xb + xy + I = ab + I, +%$$ +%поскольку $ay, xb, xy \in I$ в силу определения идеала. +% +%\begin{exercise} +%Проверьте, что множество $R/I$ является кольцом относительно +%имеющейся там операции сложения и только что введённой операции +%умножения. +%\end{exercise} +% +%\begin{definition} +%Кольцо $R/I$ называется {\it факторкольцом} кольца $R$ по +%идеалу~$I$. +%\end{definition} +% +%\textbf{Пример.} $\ZZ / n \ZZ = \ZZ_n$. +% +%Пусть $\varphi\colon R\to R'$~--- гомоморфизм колец. Тогда +%определены его ядро $\Ker \varphi = \lbrace r \in R \mid \varphi(r) +%= 0 \rbrace$ и образ $\Im \varphi = \lbrace \varphi(r) \mid r \in R +%\rbrace \subseteq R'$. +% +%\begin{lemma} +%Ядро $\Ker \varphi$ является идеалом в~$R$. +%\end{lemma} +% +%\begin{proof} +%Так как $\varphi$~--- гомоморфизм абелевых групп, то $\Ker \varphi$ +%является подгруппой в $R$ по сложению. Покажем теперь, что $ra \in +%\Ker \varphi$ и $ar \in \Ker \varphi$ для произвольных элементов $a +%\in \Ker \varphi$ и $r \in R$. Имеем $\varphi(ra) = \varphi(r) +%\varphi(a) = \varphi(r) 0 = 0$, откуда $ra \in \Ker \varphi$. +%Аналогично получаем $ar \in \Ker \varphi$. +%\end{proof} +% +%\begin{exercise} +%Проверьте, $\Im \varphi$~--- подкольцо в~$R'$. +%\end{exercise} +% +%\smallskip +% +%{\bf Теорема о гомоморфизме для колец.}\ Пусть $\varphi\colon R\to +%R'$~-- гомоморфизм колец. Тогда имеет место изоморфизм +%$$ +%R/\Ker\,\varphi\cong\Im\varphi. +%$$ +% +%\smallskip +% +%\begin{proof} +%Положим для краткости $I = \Ker \varphi$ и рассмотрим отображение +%$$ +%\pi \colon R/I \to \Im \varphi, \quad a+I \mapsto \varphi(a). +%$$ +%Из доказательства теоремы о гомоморфизме для групп следует, что +%отображение $\pi$ корректно определено и является изоморфизмом +%абелевых групп (по сложению). Покажем, что $\pi$~--- изоморфизм +%колец. Для этого остаётся проверить, что $\pi$ сохраняет операцию +%умножения: +%$$ +%\pi((a+I)(b+I)) = \pi(ab+I) = \varphi(ab) = \varphi(a) \varphi(b) = +%\pi(a+I) \pi(b+I). +%$$ +%\end{proof} +% +%\begin{example} +%Пусть $R = \FFF(M, \RR)$. Зафиксируем произвольную точку $m_0 \in M$ +%и рассмотрим гомоморфизм $\varphi \colon R \to \RR$, $f \mapsto +%f(m_0)$. Ясно, что гомоморфизм $\varphi$ сюръективен. Его ядром +%является идеал $I$ всех функций, обращающихся в нуль в точке $m_0$. +%По теореме о гомоморфизме получаем $R / I \cong \RR$. +%\end{example} +% +%\begin{definition} +%Кольцо $R$ называется {\it простым}, если в нём нет собственных +%(двусторонних) идеалов. +%\end{definition} +% +%\textbf{Пример.} Всякое поле является простым кольцом. +% +%\begin{definition} +%\textit{Центром} алгебры $A$ над полем $K$ называется её +%подмножество +%$$ +%Z(A) = \{ a \in A \mid ab = ba \ \text{для всех} \ b \in A \}. +%$$ +%\end{definition} +% +%\begin{theorem} +%Пусть $K$~--- поле, $n$~--- натуральное число и $A = \Mat(n \times +%n, K)$~--- алгебра квадратных матриц порядка~$n$ над полем~$K$. +% +%\textup{(1)} $Z(A) = \lbrace \lambda E \mid \lambda \in K \rbrace$, +%где $E$~--- единичная матрица \textup(в частности, $Z(A)$~--- +%одномерное подпространство в~$A$\textup); +% +%\textup{(2)} алгебра $A$ проста \textup(как кольцо\textup). +%\end{theorem} +% +%\begin{proof} +%Для каждой пары индексов $i,j \in \lbrace 1, \ldots, n \rbrace$ +%обозначим через $E_{ij}$ соответствующую \textit{матричную +%единицу}~--- такую матрицу, в которой на $(i,j)$-месте стоит +%единица, а на всех остальных местах~--- нули. Непосредственная +%проверка показывает, что +%$$ +%E_{ij}E_{kl} = +%\begin{cases} +%E_{il}, & \ \text{если} \ j = k;\\ +%0, & \ \text{если} \ j \ne k. +%\end{cases} +%$$ +%Заметим, что матричные единицы образуют базис в~$A$ и всякая матрица +%$X = (x_{kl})$ представима в виде $X = \sum \limits_{k,l = 1}^n +%x_{kl} E_{kl}$. +% +%(1) Пусть матрица $X = \sum \limits_{k,l = 1}^n x_{kl} E_{kl}$ лежит +%в $Z(A)$. Тогда $X$ коммутирует со всеми матричными единицами. +%Выясним, что означает условие $XE_{ij} = E_{ij}X$. Имеем +%$$ +%XE_{ij} = (\sum \limits_{k,l = 1}^n x_{kl} E_{kl})E_{ij} = \sum +%\limits_{k = 1}^n x_{ki}E_{kj}; \qquad E_{ij}X = E_{ij}(\sum +%\limits_{k,l = 1}^n x_{kl} E_{kl}) = \sum \limits_{l = 1}^n +%x_{jl}E_{il}. +%$$ +%Сравнивая правые части двух равенств, получаем $x_{ii} = x_{jj}$, +%$x_{ki}=0$ при $k \ne i$ и $x_{jl}=0$ при $j \ne l$. Поскольку эти +%равенства имеют место при любых значениях $i,j$, мы получаем, что +%матрица $X$ скалярна, т.\,е. $X = \lambda E$ для некоторого $\lambda +%\in K$. С~другой стороны, ясно, что всякая скалярная матрица лежит в +%$Z(A)$. +% +%(2) Пусть $I$~--- двусторонний идеал алгебры~$A$. Если $I \ne +%\lbrace 0 \rbrace$, то $I$ содержит ненулевую матрицу~$X$. Покажем, +%что тогда $I = A$. Пусть индексы $k,l$ таковы, что $x_{kl} \ne 0$. +%Тогда +%$$ +%E_{ik} X E_{lj} = E_{ik}(\sum_{p,q = 1}^n x_{pq} E_{pq}) E_{lj} = +%E_{ik} \sum \limits_{p = 1}^n x_{pl}E_{pj} = x_{kl} E_{ij} \in I. +%$$ +%Домножая $x_{kl}E_{ij}$ на скалярную матрицу $(x_{kl})^{-1}E$, мы +%получаем, что $E_{ij} \in I$. Из произвольности выбора $i,j$ +%следует, что все матричные единицы лежат в~$I$. Отсюда $I = A$, что +%и требовалось. +%\end{proof} + + +\newpage + +\section*{Лекция~7} + +\medskip + +{\it Факторкольца. Теорема о +гомоморфизме колец. Евклидовы кольца, кольца главных идеалов и факториальные +кольца.} + +\medskip + + + +Вернёмся к случаю произвольного кольца $R$. Поскольку любой идеал +$I$ является подгруппой абелевой группы $(R,+)$, мы можем +рассмотреть факторгруппу $R/I$. Введём на ней умножение по формуле +$$ +(a+I)(b+I) := ab + I. +$$ +Покажем, что это определение корректно. Пусть элементы $a',b' \in R$ +таковы, что $a' + I = a + I$ и $b' + I = b + I$. Проверим, что $a'b' ++ I = ab + I$. Заметим, что $a' = a + x$ и $b' = b + y$ для +некоторых $x, y \in I$. Тогда +$$ +a'b' + I = (a + x)(b + y) + I = ab + ay + xb + xy + I = ab + I, +$$ +поскольку $ay, xb, xy \in I$ в силу определения идеала. + +\begin{exercise} +Проверьте, что множество $R/I$ является кольцом относительно +имеющейся там операции сложения и только что введённой операции +умножения. +\end{exercise} + +\begin{definition} +Кольцо $R/I$ называется {\it факторкольцом} кольца $R$ по +идеалу~$I$. +\end{definition} + +\textbf{Пример.} $\ZZ / n \ZZ = \ZZ_n$. + +Пусть $\varphi\colon R\to R'$~--- гомоморфизм колец. Тогда +определены его ядро $\Ker \varphi = \lbrace r \in R \mid \varphi(r) += 0 \rbrace$ и образ $\Im \varphi = \lbrace \varphi(r) \mid r \in R +\rbrace \subseteq R'$. + +\begin{lemma} +Ядро $\Ker \varphi$ является идеалом в~$R$. +\end{lemma} + +\begin{proof} +Так как $\varphi$~--- гомоморфизм абелевых групп, то $\Ker \varphi$ +является подгруппой в $R$ по сложению. Покажем теперь, что $ra \in +\Ker \varphi$ и $ar \in \Ker \varphi$ для произвольных элементов $a +\in \Ker \varphi$ и $r \in R$. Имеем $\varphi(ra) = \varphi(r) +\varphi(a) = \varphi(r) 0 = 0$, откуда $ra \in \Ker \varphi$. +Аналогично получаем $ar \in \Ker \varphi$. +\end{proof} + +\begin{exercise} +Проверьте, $\Im \varphi$~--- подкольцо в~$R'$. +\end{exercise} + +\smallskip + +{\bf Теорема о гомоморфизме для колец.}\ Пусть $\varphi\colon R\to +R'$~-- гомоморфизм колец. Тогда имеет место изоморфизм +$$ +R/\Ker\,\varphi\cong\Im\varphi. +$$ + +\smallskip + +\begin{proof} +Положим для краткости $I = \Ker \varphi$ и рассмотрим отображение +$$ +\pi \colon R/I \to \Im \varphi, \quad a+I \mapsto \varphi(a). +$$ +Из доказательства теоремы о гомоморфизме для групп следует, что +отображение $\pi$ корректно определено и является изоморфизмом +абелевых групп (по сложению). Покажем, что $\pi$~--- изоморфизм +колец. Для этого остаётся проверить, что $\pi$ сохраняет операцию +умножения: +$$ +\pi((a+I)(b+I)) = \pi(ab+I) = \varphi(ab) = \varphi(a) \varphi(b) = +\pi(a+I) \pi(b+I). +$$ +\end{proof} + +\begin{example}\ +\begin{enumerate} +\item Пусть $R = \FFF(M, \RR)$. Зафиксируем произвольную точку $m_0 \in M$ +и рассмотрим гомоморфизм $\varphi \colon R \to \RR$, $f \mapsto +f(m_0)$. Ясно, что гомоморфизм $\varphi$ сюръективен. Его ядром +является идеал $I$ всех функций, обращающихся в нуль в точке $m_0$. +По теореме о гомоморфизме получаем $R / I \cong \RR$. +\item Рассмотрим отображение $\varphi \colon \RR[x] \to \CC$, $f \mapsto f(i)$. Очевидно, что $\varphi$ --- гомоморфизм, причем сюръективный. Если функция принадлежит ядру $\varphi$, то есть $f(i) = 0$, то $(x - i) \mid f$ в кольце $\CC[x]$. Но и сопряженный к корню также будет являться корнем многочлена, так что дополнительно $(x + i) \mid f$. Итого, получаем, что $f \in (x - i)(x + i) = (x^2 + 1)$ и, соответственно, $\Ker \varphi \subseteq (x^2 + 1)$. В обратную сторону включение тем более очевидно. Далее, по теореме о гомоморфизме получаем $\RR[x] / (x^2 + 1) \cong \CC$. +\end{enumerate} +\end{example} + +%\begin{definition} +%Кольцо $R$ называется {\it простым}, если в нём нет собственных +%(двусторонних) идеалов. +%\end{definition} +% +%\textbf{Пример.} Всякое поле является простым кольцом. +% +%\begin{definition} +%\textit{Центром} алгебры $A$ над полем $K$ называется её +%подмножество +%$$ +%Z(A) = \{ a \in A \mid ab = ba \ \text{для всех} \ b \in A \}. +%$$ +%\end{definition} +% +%\begin{theorem} +%Пусть $K$~--- поле, $n$~--- натуральное число и $A = \Mat(n \times +%n, K)$~--- алгебра квадратных матриц порядка~$n$ над полем~$K$. +% +%\textup{(1)} $Z(A) = \lbrace \lambda E \mid \lambda \in K \rbrace$, +%где $E$~--- единичная матрица \textup(в частности, $Z(A)$~--- +%одномерное подпространство в~$A$\textup); +% +%\textup{(2)} алгебра $A$ проста \textup(как кольцо\textup). +%\end{theorem} +% +%\begin{proof} +%Для каждой пары индексов $i,j \in \lbrace 1, \ldots, n \rbrace$ +%обозначим через $E_{ij}$ соответствующую \textit{матричную +%единицу}~--- такую матрицу, в которой на $(i,j)$-месте стоит +%единица, а на всех остальных местах~--- нули. Непосредственная +%проверка показывает, что +%$$ +%E_{ij}E_{kl} = +%\begin{cases} +%E_{il}, & \ \text{если} \ j = k;\\ +%0, & \ \text{если} \ j \ne k. +%\end{cases} +%$$ +%Заметим, что матричные единицы образуют базис в~$A$ и всякая матрица +%$X = (x_{kl})$ представима в виде $X = \sum \limits_{k,l = 1}^n +%x_{kl} E_{kl}$. +% +%(1) Пусть матрица $X = \sum \limits_{k,l = 1}^n x_{kl} E_{kl}$ лежит +%в $Z(A)$. Тогда $X$ коммутирует со всеми матричными единицами. +%Выясним, что означает условие $XE_{ij} = E_{ij}X$. Имеем +%$$ +%XE_{ij} = (\sum \limits_{k,l = 1}^n x_{kl} E_{kl})E_{ij} = \sum +%\limits_{k = 1}^n x_{ki}E_{kj}; \qquad E_{ij}X = E_{ij}(\sum +%\limits_{k,l = 1}^n x_{kl} E_{kl}) = \sum \limits_{l = 1}^n +%x_{jl}E_{il}. +%$$ +%Сравнивая правые части двух равенств, получаем $x_{ii} = x_{jj}$, +%$x_{ki}=0$ при $k \ne i$ и $x_{jl}=0$ при $j \ne l$. Поскольку эти +%равенства имеют место при любых значениях $i,j$, мы получаем, что +%матрица $X$ скалярна, т.\,е. $X = \lambda E$ для некоторого $\lambda +%\in K$. С~другой стороны, ясно, что всякая скалярная матрица лежит в +%$Z(A)$. +% +%(2) Пусть $I$~--- двусторонний идеал алгебры~$A$. Если $I \ne +%\lbrace 0 \rbrace$, то $I$ содержит ненулевую матрицу~$X$. Покажем, +%что тогда $I = A$. Пусть индексы $k,l$ таковы, что $x_{kl} \ne 0$. +%Тогда +%$$ +%E_{ik} X E_{lj} = E_{ik}(\sum_{p,q = 1}^n x_{pq} E_{pq}) E_{lj} = +%E_{ik} \sum \limits_{p = 1}^n x_{pl}E_{pj} = x_{kl} E_{ij} \in I. +%$$ +%Домножая $x_{kl}E_{ij}$ на скалярную матрицу $(x_{kl})^{-1}E$, мы +%получаем, что $E_{ij} \in I$. Из произвольности выбора $i,j$ +%следует, что все матричные единицы лежат в~$I$. Отсюда $I = A$, что +%и требовалось. +%\end{proof} + + +Далее в этой лекции всюду предполагается, что $R$~--- коммутативное кольцо +без делителей нуля. + +\begin{definition} +Говорят, что элемент $b \in R$ {\it делит} элемент $a\in R$ ($b$~--- +\textit{делитель}~$a$, $a$ \textit{делится} на~$b$; пишут $b \,|\, +a$) если существует элемент $c\in R$, для которого $a=bc$. +\end{definition} + +\begin{definition} +Два элемента $a, b \in R$ называются {\it ассоциированными}, если +$a=bc$ для некоторого обратимого элемента $c$ кольца~$R$. +\end{definition} + +\begin{remark} +Легко видеть, что отношение ассоциированности является отношением +эквивалентности на кольце~$R$. +\end{remark} + +\begin{definition} +Кольцо $R$ без делителей нуля, не являющееся полем, называется {\it +евклидовым}, если существует функция +$$ +N\colon R\setminus\{0\} \to \ZZ_{\geqslant 0} +$$ +(называемая {\it нормой}), удовлетворяющая следующим условиям: + +1) $N(ab) \geqslant N(a)$ для всех $a, b \in R \setminus \{0\}$; + +2) для любых $a, b \in R$, $b \ne 0$, существуют такие $q,r\in R$, +что $a = qb + r$ и либо $r = 0$, либо $N(r) < N(b)$. +\end{definition} + +Неформально говоря, условие 2) означает возможность \guillemotleft +деления с остатком\guillemotright{} в кольце~$R$. + +\textbf{Примеры евклидовых колец:} + +1) $\ZZ$ с нормой $N(a) = |a|$; + +2) $K[x]$ (где $K$~--- произвольное поле) с нормой $N(f) = \deg f$. + +\begin{lemma} \label{lemma_first} +Пусть $R$~--- евклидово кольцо и $a,b \in R \setminus \lbrace 0 +\rbrace$. Равенство $N(ab) = N(a)$ выполнено тогда и только тогда, +когда $b$ обратим. +\end{lemma} + +\begin{proof} +Если $b$ обратим, то $N(a)\leqslant N(ab)\leqslant +N(abb^{-1})=N(a)$, откуда $N(ab)=N(a)$. + +Пусть теперь $N(ab) = N(a)$. Разделим $a$ на $ab$ с остатком: $a = +qab + r$, где либо $r = 0$, либо $N(r) < N(ab)$. Если $r \ne 0$, то +с учётом равенства $r = a(1-qb)$ имеем $N(a) \leqslant N(a(1-qb)) = +N(r) < N(ab) = N(a)$~--- противоречие. Значит, $r = 0$ и $a = qab$, +откуда $a(1 - qb) = 0$. Так как в $R$ нет делителей нуля и $a \ne +0$, то $1 - qb = 0$, откуда $qb = 1$, т.\,е. $b$ обратим. +\end{proof} + + +\begin{definition} +Кольцо $R$ называется \textit{кольцом главных идеалов}, если всякий +идеал в $R$ является главным. +\end{definition} + +\begin{theorem} \label{thm_er_rpi} +Всякое евклидово кольцо $R$ является кольцом главных идеалов. +\end{theorem} + +\begin{proof} +Пусть $I$~--- произвольный идеал в~$R$. Если $I = \lbrace 0 +\rbrace$, то $I = (0)$ и поэтому $I$ является главным. Далее +считаем, что $I \ne \lbrace 0 \rbrace$. Пусть $a \in I \setminus +\lbrace 0 \rbrace$~--- элемент с наименьшей нормой. Тогда главный +идеал $(a)$ содержится в~$I$. Предположим, что какой-то элемент $b +\in I$ не лежит в~$(a)$, т.\,е. не делится на~$a$. Тогда разделим +$b$ на $a$ с остатком: $b = qa + r$, где $r \ne 0$ и $N(r) < N(a)$. +Так как $r = b - aq$, то $r \in I$, что в силу неравенства $N(r) < +N(a)$ противоречит нашему выбору элемента~$a$. +\end{proof} + +\begin{definition} +{\it Наибольшим общим делителем} элементов $a$ и $b$ кольца $R$ +называется их общий делитель, который делится на любой другой их +общий делитель. Он обозначается $(a,b)$. +\end{definition} + +\begin{remark} +Если наибольший общий делитель двух элементов $a,b \in R$ +существует, то он определён однозначно с точностью до +ассоциированности, т.\,е. умножения на обратимый элемент кольца~$R$. +\end{remark} + +\begin{theorem} \label{thm_lcd} +Пусть $R$~--- евклидово кольцо и $a,b$~--- произвольные элементы. +Тогда: + +\textup{(1)} существует наибольший общий делитель $(a,b)$; + +\textup{(2)} существуют такие элементы $u,v \in R$, что $(a,b) = ua ++ vb$. +\end{theorem} + +\begin{proof}\ \\ +\underline{Способ 1}: утверждение (1) получается применением +(прямого хода) алгоритма Евклида, а~утверждение~(2)~--- применением +обратного хода в алгоритме Евклида. + +\underline{Способ 2}: рассмотрим идеал $I = (a, b)$. Так как $R$ --- кольцо главных идеалов, то существует такой элемент $d \in R$, что $I = (d)$ и существуют $x, y \in R$ такие, что +$$ +d = ax + dy. \qquad (*) +$$ +Покажем, что $d = (a, b)$. Для начала, так как $a$ и $b$ лежат в идеале $I = (d)$, то они оба делятся на $d$, то есть $d$ является одним из их делителей. А из равенства $(*)$ ясно, что любой другой общий делитель $a$ и $b$ будет также делиться на $d$. Итого, $d$ --- наибольший общий делитель. +\end{proof} + +\begin{definition} +Ненулевой необратимый элемент $p$ кольца $R$ называется {\it +простым}, если он не может быть представлен в виде $p = a b$, где +$a, b \in R$~--- необратимые элементы. +\end{definition} + +\begin{remark} +Простые элементы в кольце многочленов $K[x]$ над полем $K$ принято +называть {\it неприводимыми многочленами}. +\end{remark} + +\begin{lemma} \label{ll} +Если простой элемент $p$ евклидова кольца $R$ делит произведение +$a_1a_2\ldots a_n$, то он делит один из сомножителей. +\end{lemma} + +\begin{proof} +Индукция по~$n$. Пусть $n=2$ и предположим, что $p$ не делит~$a_1$. +Тогда $(p, a_1) = 1$ и по утверждению~(2) теоремы~\ref{thm_lcd} +найдутся такие элементы $u, v \in R$, что $1 = up + v a_1$. Умножая +обе части этого равенства на~$a_2$, получаем +$$ +a_2 = upa_2 + v a_1a_2. +$$ +Легко видеть, что $p$ делит правую часть последнего равенства, +поэтому $p$ делит и левую часть, т.\,е.~$a_2$. + +При $n > 2$ применяем предыдущее рассуждение к $(a_1 \ldots +a_{n-1})a_n$ и пользуемся предположением индукции. +\end{proof} + +\begin{definition} +Кольцо $R$ называется {\it факториальным}, если всякий его ненулевой +необратимый элемент \guillemotleft разложим на простые +множители\guillemotright{}, т.\,е. представим в виде произведения +(конечного числа) простых элементов, причём это представление +единственно с точностью до перестановки множителей и +ассоциированности. +\end{definition} + +Более формально единственность разложения на простые множители +следует понимать так: если для элемента $a \in R$ есть два +представления +$$ +a = p_1 p_2 \ldots p_n = q_1q_2 \ldots q_m, +$$ +где все элементы $p_i, q_j$ простые, то $n = m$ и существует такая +подстановка $\sigma \in S_n$, что для каждого $i = 1,\ldots, n$ +элементы $p_i$ и $q_{\sigma(i)}$ ассоциированы. + +\begin{theorem} \label{thm_er_ufd} +Всякое евклидово кольцо $R$ является факториальным. +\end{theorem} + +\begin{proof}[Доказательство \textup{состоит из двух шагов.}]~ + +\textit{Шаг}~1. Сначала докажем, что всякий ненулевой необратимый +элемент из $R$ разложим на простые множители. Предположим, что это +не так, и среди всех элементов, не разложимых на простые множители, +выберем элемент $a$ с наименьшей нормой. Тогда $a$ не может быть +простым (иначе он разложим в произведение, состоящее из одного +простого множителя), поэтому существует представление вида $a = bc$, +где $b,c \in R$~--- ненулевые необратимые элементы. Но тогда в силу +леммы~\ref{lemma_first} имеем $N(b) < N(a)$ и $N(c) < N(a)$, поэтому +элементы $b$ и $c$ разложимы на простые множители. Но тогда и $a$ +разложим~--- противоречие. + +\textit{Шаг}~2. Докажем теперь индукцией по~$n$, что если для +некоторого элемента $a \in R$ имеются два разложения +$$ +a = p_1p_2\ldots p_n=q_1q_2\ldots q_m, +$$ +где все элемнты $p_i$ и $q_j$ простые, то $m=n$ и после подходящей +перенумерации элементов $q_j$ окажется, что при всех $i = 1,\ldots, +n$ элемент $p_i$ ассоциирован с~$q_i$. + +Если $n=1$, то $a = p_1$; тогда из определения простого элемента +следует, что $m = 1$ и тем самым $q_1 = p_1$. Пусть теперь $n > 1$. +Тогда элемент $p_1$ делит произведение $q_1 q_2 \ldots q_m$. По +лемме~\ref{ll} этот элемент делит некоторый~$q_i$, а значит, +ассоциирован с ним. Выполнив перенумерацию, можно считать, что $i = +1$ и $q_1 = cp_1$ для некоторого обратимого элемента $c \in R$. Так +как в $R$ нет делителей нуля, то мы можем сократить на~$p_1$, после +чего получится равенство +$$ +p_2 p_3 \ldots p_n = (cq_2)q_3 \ldots q_m +$$ +(заметьте, что элемент $cq_2$ прост!). Дальше используем +предположение индукции. +\end{proof} + +Можно показать (см. листок с задачами к лекции~6), что при $n +\geqslant 2$ кольцо многочленов $K[x_1, \ldots, x_n]$ над +произвольным полем~$K$ не является кольцом главных идеалов, а +значит, по теореме~\ref{thm_er_rpi} это кольцо не является +евклидовым. Тем не менее, наша цель в оставшейся части этой +лекции~--- доказать, что кольцо $K[x_1, \ldots, x_n]$ факториально. + +Начнём издалека. С~каждым (коммутативным) кольцом $R$ (без делителей +нуля) связано его \textit{поле отношений}~$K$. Элементами этого поля +являются дроби вида $\frac{a}{b}$, где $a,b \in R$ и $b\ne 0$, со +стандартными правилами отождествления ($\frac{a}{b} = \frac{c}{d} +\Leftrightarrow ad = bc$), сложения ($\frac{a}{b} + \frac{c}{d} = +\frac{ad+bc}{bd}$) и умножения ($\frac{a}{b}\frac{c}{d} = +\frac{ac}{bd}$). Кольцо $R$ реализуется как подкольцо в~$K$, +состоящее из всех дробей вида $\frac{a}{1}$. + +\textbf{Модельный пример:} $\QQ$ есть поле отношений кольца~$\ZZ$. + +Всякий гомоморфизм колец $\varphi \colon R \to R'$ индуцирует +гомоморфизм $\widetilde \varphi \colon R[x] \to R'[x]$ +соответствующих колец многочленов, задаваемый по правилу +$$ +a_n x^n + a_{n-1} x^{n-1} + \ldots a_1 x + a_0 \mapsto \varphi(a_n) +x^n + \varphi(a_{n-1}) x^{n-1} + \ldots \varphi(a_1) x + +\varphi(a_0). +$$ +Вспомнив, как определяется умножение в кольце многочленов, легко +показать, что $\widetilde \varphi$ действительно является +гомоморфизмом. + +В~частности, если $R$~--- кольцо и $K$~--- его поле частных, то +вложение $R \hookrightarrow K$ индуцирует вложение $R[x] +\hookrightarrow K[x]$, так что всякий многочлен с коэффициентами из +$R$ можно рассматривать как многочлен с коэффициентами из~$K$. + +Пусть $R$~--- кольцо. + +\begin{definition} +Многочлен $f(x)\in R[x]$ называется {\it примитивным}, если в $R$ +нет необратимого элемента, который делит все коэффициенты многочлена +$f(x)$. +\end{definition} + +{\bf Лемма Гаусса.}\ Если $R$~--- факториальное кольцо c полем +отношений $K$ и многочлен $f(x) \in R[x]$ разлагается в произведение +двух многочленов в кольце $K[x]$, то он разлагается в произведение +двух пропорциональных им многочленов в кольце~$R[x]$. + +В доказательстве леммы Гаусса нам потребуются следующие факты. + +\begin{exercise} \label{ex_1} +Пусть $R$~--- факториальное кольцо и $p \in R$~--- простой элемент. +Тогда в факторкольце $R/(p)$ нет делителей нуля. +\end{exercise} + +\begin{exercise} \label{ex_2} +Пусть $R$~--- (коммутативное) кольцо (без делителей нуля). Тогда в +кольце многочленов $R[x]$ также нет делителей нуля. +\end{exercise} + +\begin{proof}[Доказательство леммы Гаусса] +Пусть $f(x) = g(x)h(x)$, где $g(x), h(x)\in K[x]$. Так как кольцо +$R$ факториально, то для любого набора элементов из $R$ определены +наибольший общий делитель и наименьшее общее кратное. С~учётом этого +приведём все коэффициенты многочлена $g(x)$ к общему знаменателю, +после чего вынесем за скобку этот общий знаменатель и наибольший +общий делитель всех числителей. В результате в скобках останется +примитивный многочлен $g_1(x) \in R[x]$, а за скобками~--- некоторый +элемент из поля~$K$. Аналогичным образом найдём примитивный +многочлен $h_1(x) \in R[x]$, который пропорционален +многочлену~$h(x)$. Теперь мы можем записать $f(x)=\frac{u}{v}g_1(x) +h_1(x)$, где $u,v \in R$, $v \ne 0$ и без ограничения общности можно +считать $(u,v)=1$. Для завершения доказательства достаточно +показать, что элемент $v$ обратим (и тогда разложение $f(x) = +(uv^{-1}g_1(x))h_1(x)$ будет искомым). + +Предположим, что $v$ необратим. Тогда найдётся простой элемент $p +\in R$, который делит~$v$. Рассмотрим гомоморфизм факторизации +$\varphi \colon R \to R/(p)$, $a \mapsto a + (p)$, и соответствующий +ему гомоморфизм колец многочленов $\widetilde \varphi \colon R[x] +\to (R/(p))[x]$. В кольце $R[x]$ у нас имеется равенство $vf(x) = +ug_1(x)h_1(x)$. Взяв образ обеих частей этого равенства при +гомоморфизме $\widetilde \varphi$, мы получим следующее равенство в +кольце $(R / (p))[x]$: +\begin{equation} \label{eqn} +\widetilde \varphi(v) \widetilde \varphi(f(x)) = \widetilde +\varphi(u) \widetilde \varphi(g_1(x)) \widetilde \varphi(h_1(x)). +\end{equation} +Поскольку $p$ делит~$v$, имеем $\widetilde \varphi(v) = 0$, поэтому +левая часть равенства~(\ref{eqn}) равна нулю. С другой стороны, из +условия $(u,v) = 1$ следует, что $\widetilde \varphi(u) \ne 0$, а из +примитивности многочленов $g_1(x)$ и $h_1(x)$ вытекает, что +$\widetilde \varphi(g_1(x)) \ne 0$ и $\widetilde \varphi(h_1(x)) \ne +0$. Таким образом, все три множителя в правой части +равенства~(\ref{eqn}) отличны от нуля. Из упражнений~\ref{ex_1} +и~\ref{ex_2} вытекает, что в кольце $(R / (p))[x]$ нет делителей +нуля, поэтому правая часть равенства~(\ref{eqn}) отлична от нуля, и +мы пришли к противоречию. +\end{proof} + +\begin{corollary} \label{cc} +Если многочлен $f(x)\in R[x]$ может быть разложен в произведение +двух многочленов меньшей степени в кольце $K[x]$, то он может быть +разложен и в произведение двух многочленов меньшей степени в кольце +$R[x]$. +\end{corollary} + +\begin{theorem} +Если кольцо $R$ факториально, то кольцо многочленов $R[x]$ также +факториально. +\end{theorem} + +\begin{proof} +Следствие~\ref{cc} показывает, что простые элементы кольца +$R[x]$~--- это в точности элементы одного из следующих двух типов: + +1) простые элементы кольца $R$ (рассматриваемые как многочлены +степени~$0$ в $R[x]$); + +2) примитивные многочлены из $R[x]$, неприводимые над полем +отношений~$K$. + +Ясно, что каждый многочлен из $R[x]$ разлагается в произведение +таких многочленов. Предположим, что какой-то элемент из $R[x]$ двумя +способами представим в виде такого произведения: +$$ +a_1 \ldots a_n b_1(x) \ldots b_m(x) = a'_1 \ldots a'_k b'_1(x) +\ldots b'_l(x), +$$ +где $a_i, a'_j$~--- простые элементы типа~1 и $b_i(x), b'_j(x)$~--- +простые элементы типа~2. + +Рассмотрим эти разложения в кольце $K[x]$. Как мы уже знаем из +теоремы~\ref{thm_er_ufd}, кольцо $K[x]$ факториально. Отсюда +следует, что $m = l$ и после подходящей перенумерации элементов +$b'_j(x)$ получается, что при всех $j = 1, \ldots, m$ элементы +$b_j(x)$ и $b'_j(x)$ ассоциированы в $K[x]$, а в силу примитивности +они ассоциированы и в $R[x]$. После сокращения всех таких элементов +у нас останутся два разложения на простые множители (какого-то) +элемента из~$R$. Но кольцо $R$ факториально, поэтому эти два +разложения совпадают с точностью до перестановки множителей и +ассоциированности. +\end{proof} + +\begin{theorem} +Пусть $K$~--- произвольное поле. Тогда кольцо многочленов +$K[x_1,\ldots,x_n]$ факториально. +\end{theorem} + +\begin{proof} +Воспользуемся индукцией по~$n$. При $n=1$ наше кольцо евклидово и по +теореме~\ref{thm_er_ufd} факториально. При $n > 1$ имеем $K[x_1, +\ldots, x_n] = K[x_1, \ldots, x_{n-1}][x_n]$, кольцо $K[x_1, \ldots, +x_{n-1}]$ факториально по предположению индукции и требуемый +результат следует из предыдущей теоремы. +\end{proof} + +\begin{remark} +Несмотря на естественность условия единственности разложения на +простые множители, большинство колец не являются факториальными. +Например, таковым не является кольцо $\ZZ[\sqrt{-5}]$, состоящее из +всех комплексных чисел вида $a + b \sqrt{-5}$, где $a,b \in \ZZ$: в +этом кольце число $6$ разлагается на простые множители двумя +различными способами: $6 = 2 \cdot 3 = (1 + \sqrt{-5})(1 - +\sqrt{-5})$. +\end{remark} + +\newpage + +\section*{Лекция~8} + +\medskip + +{\it Элементарные симметрические многочлены. Основная теорема о + симметрических многочленах. Лексикографический порядок. Теорема + Виета. Дискриминант многочлена.} + +\medskip + +Вернемся ненадолго к теме прошлой лекции. Рассмотрим кольцо $R = K[x_1, \ldots, x_n]$, где $K$ --- поле. +На семинарах разбиралось, что оно не является кольцом главных идеалов и, соответственно, евклидовым кольцом. Однако несмотря на это: + +\textbf{Теорема.} Кольцо $R$ факториально. + +Впрочем, доказывать эту теорему мы не будем. + +Вернемся теперь к теме текущей лекции. Пусть $K$~--- произвольное поле. + +\begin{definition} + Многочлен $f(x_1,\ldots,x_n)\in K[x_1,\ldots,x_n]$ называется {\it + симметрическим}, если + $f(x_{\tau(1)},\ldots,x_{\tau(n)})=f(x_1,\ldots,x_n)$ для всякой + перестановки $\tau \in S_n$. +\end{definition} + +\textbf{Примеры:} + +1) Многочлен $x_1x_2 + x_2x_3$ не является симметрическим, а вот многочлен $x_1x_2 + x_2x_3 + x_1x_3$ --- является. + +2) {\it Степенные суммы} $s_k(x_1, \ldots, x_n) = x_1^k + x_2^k + +\ldots + x_n^k$ являются симметрическими многочленами. + +3) {\it Элементарные симметрические многочлены} +$$ +\sigma_1(x_1, \ldots, x_n) = x_1 + x_2 + \ldots + x_n; +$$ +$$ +\sigma_2(x_1, \ldots, x_n) = \sum \limits_{1 \leqslant i < j + \leqslant n} x_i x_j; +$$ +$$ +.................................................. +$$ +$$ +\sigma_k(x_1, \ldots, x_n) = \sum \limits_{1 \leqslant i_1 < i_2 < + \ldots < i_k \leqslant n} x_{i_1} x_{i_2} \ldots x_{i_k}; +$$ +$$ +.................................................. +$$ +$$ +\sigma_n(x_1, \ldots, x_n) = x_1 x_2 \ldots x_n +$$ +являются симметрическими. + +5) Определитель Вандермонда +$$ +V(x_1, \ldots, x_n) = +\begin{vmatrix} +1 & x_1 & x_1^2 & \ldots & x_1^{n-1} \\ +1 & x_2 & x_2^2 & \ldots & x_2^{n-1} \\ +\ldots & \ldots & \ldots & \ldots & \ldots \\ +1 & x_n & x_n^2 & \ldots & x_n^{n-1} +\end{vmatrix} = +\prod \limits_{1 \leqslant i < j \leqslant n} (x_j - x_i) +$$ +симметрическим многочленом не является (при перестановке индексов +умножается на её знак), а вот его квадрат уже является. + +Основная цель этой лекции~--- понять, как устроены все +симметрические многочлены. + +Легко видеть, что все симметрические многочлены образуют подкольцо +(и даже подалгебру) в $K[x_1, \ldots, x_n]$. В~частности, если +$F(y_1, \ldots, y_k)$~--- произвольный многочлен и $f_1(x_1, \ldots, +x_n)$, $\ldots$, $f_k(x_1, \ldots, x_n)$~--- симметрические +многочлены, то многочлен +$$ +F(f_1(x_1, \ldots, x_n), \ldots, f_k(x_1, \ldots, x_n)) \in K[x_1, +\ldots, x_n] +$$ +также является симметрическим. Мы покажем, что всякий симметрический +многочлен однозначно выражается через элементарные симметрические +многочлены. + +\medskip + +{\bf Основная теорема о симметрических многочленах.}\ Для всякого +симметрического многочлена $f(x_1, \ldots, x_n)$ существует и +единственен такой многочлен $F(y_1, \ldots, y_n)$, что +$$ +f(x_1, \ldots, x_n) = F(\sigma_1(x_1, \ldots, x_n), \ldots, +\sigma_n(x_1, \ldots, x_n)). +$$ + +\textbf{Пример.} $s_2(x_1, \ldots, x_n) = x_1^2 + \ldots + x_n^2 = +(x_1 + \ldots + x_n)^2 - 2\sum \limits_{1 \leqslant i < j \leqslant + n} x_i x_j = \sigma_1^2 - 2\sigma_2$, откуда $F(y_1, \ldots, y_n) = +y_1^2 - 2y_2$. + + +Доказательство этой теоремы потребует некоторой подготовки. Начнём с +того, что определим старший член многочлена от многих переменных. + +Пусть $M_n$~--- множество всех одночленов от переменных $x_1, +\ldots, x_n$. Определим на $M_n$ {\it лексикографический порядок} +следующим образом: +$$ +ax_1^{i_1}x_2^{i_2}\ldots x_n^{i_n} \prec bx_1^{j_1}x_2^{j_2}\ldots +x_n^{j_n} \quad \Leftrightarrow \quad \exists k: \: i_1=j_1,\ldots, +i_{k-1}=j_{k-1}, i_k 0$ +является поле $\ZZ_p(x)$. + +\begin{proposition} + Характеристика произвольного поля $K$ либо равна нулю, либо является + простым числом. +\end{proposition} + +\begin{proof} + Положим $p = \xar K$ и предположим, что $p > 0$. Так как $0 \ne 1$ + в~$K$, то $p \geqslant 2$. Если число $p$ не является простым, то $p + = mk$ для некоторых $m,k \in \NN$, $1 < m,k < p$. Тогда в $K$ верно + равенство + $$ + 0 = \underbrace{1 + \ldots + 1}_{mk} = (\underbrace{1 + \ldots + + 1}_m)(\underbrace{1 + \ldots + 1}_k). + $$ + В~силу минимальности числа~$p$ в последнем выражении обе скобки + отличны от нуля, но такое невозможно, так как в поле нет делителей + нуля. +\end{proof} + +\begin{exercise} + Пересечение любого семейства подполей фиксированного поля~$K$ + является подполем в~$K$. В частности, для всякого подмножества $S + \subseteq K$ существует наименьшее по включению подполе в~$K$, + содержащее~$S$. Это подполе совпадает с пересечением всех подполей + в~$K$, содержащих~$S$. +\end{exercise} + +Из приведённого выше упражнения следует, что в каждом поле +существует наименьшее по включению подполе, оно называется {\it + простым подполем}. + +\begin{proposition} + Пусть $K$~--- поле и $K_0$~--- его простое подполе. Тогда: + + \textup{(1)} если $\xar K = p > 0$, то $K_0 \cong \ZZ_p$; + + \textup{(2)} если $\xar K = 0$, то $K_0 \cong \QQ$. +\end{proposition} + +\begin{proof} + Пусть $\langle 1 \rangle \subseteq K$~--- циклическая подгруппа по + сложению, порождённая единицей. Заметим, что $\langle 1 \rangle$~--- + подкольцо в~$K$. Поскольку всякое подполе поля $K$ содержит единицу, + оно содержит и множество~$\langle 1 \rangle$. Следовательно, + $\langle 1 \rangle \subseteq K_0$. + + Если $\xar K = p > 0$, то мы имеем изоморфизм колец $\langle 1 + \rangle \simeq \ZZ_p$. Но, как мы уже знаем из лекции~6, + кольцо~$\ZZ_p$ является полем, поэтому $K_0 = \langle 1 \rangle + \simeq \ZZ_p$. + + Если же $\xar K = 0$, то мы имеем изоморфизм колец $\langle 1 + \rangle \cong \ZZ$. Тогда $K_0$ содержит все дроби вида $a/b$, где + $a,b \in \langle 1 \rangle$ и $b \ne 0$. Ясно, что все такие дроби + образуют поле, изоморфное полю~$\QQ$. +\end{proof} + +\begin{definition} + Если $K$~--- подполе поля $F$, то говорят, что $F$~--- {\it + расширение} поля~$K$. +\end{definition} + +Например, всякое поле есть расширение своего простого подполя. + +\begin{definition} + {\it Степенью} расширения полей $K \subseteq F$ называется + размерность поля $F$ как векторного пространства над полем~$K$. + Обозначение $[F : K]$. +\end{definition} + +Например, $[\CC : \RR] = 2$ и $[\RR : \QQ] = \infty$. + +\begin{definition} + Расширение полей $K\subseteq F$ называется {\it конечным}, если $[F + : K] < \infty$. +\end{definition} + +\begin{proposition} + Пусть $K\subseteq F$ и $F\subseteq L$~--- конечные расширения полей. + Тогда расширение $F\subseteq L$ также конечно и $[L:K]=[L:F][F:K]$. +\end{proposition} + +\begin{proof} + Пусть $e_1,\ldots,e_n$~--- базис $F$ над $K$ и $f_1,\ldots,f_m$~--- + базис $L$ над $F$. Достаточно доказать, что множество + \begin{equation} \label{eqn_basis} + \lbrace e_i f_j \mid i = 1,\ldots,n;\, j = 1,\ldots, m \rbrace + \end{equation} + является базисом $L$ над~$K$. Для этого сначала покажем, что + произвольный элемент $a\in L$ представим в виде линейной комбинации + элементов (\ref{eqn_basis}) с коэффициентами из~$K$. Поскольку $f_1, + \ldots, f_m$~--- базис $L$ над~$F$, имеем $a = \sum \limits_{j=1}^m + \alpha_j f_j$ для некоторых $\alpha_j \in F$. Далее, поскольку $e_1, + \ldots, e_n$~--- базис $F$ над~$K$, для каждого $j = 1, \ldots, m$ + имеем $\alpha_j = \sum \limits_{i = 1}^n \beta_{ij} e_i$ для + некоторых $\beta_{ij}\in K$. Отсюда получаем, что $a = \sum + \limits_{i=1}^n \sum \limits_{j=1}^n \beta_{ij} (e_if_j)$. + + Теперь проверим линейную независимость элементов~(\ref{eqn_basis}). + Пусть $\sum \limits_{i=1}^n \sum \limits_{j=1}^n \gamma_{ij} + (e_jf_i) = 0$, где $\gamma_{ij} \in K$. Переписав это равенство в + виде $\sum \limits_{j=1}^m (\sum \limits_{i=1}^n \gamma_{ij}e_i)f_j + = 0$ и воспользовавшись тем, что элементы $f_1, \ldots, f_m$ линейно + независимы над~$F$, мы получим $\sum \limits_{i=1}^n \gamma_{ij}e_i + = 0$ для каждого $j = 1, \ldots, m$. Теперь из линейной + независимости элементов $e_1, \ldots, e_n$ над~$K$ вытекает, что + $\gamma_{ij} = 0$ при всех $i,j$. Таким образом, + элементы~(\ref{eqn_basis}) линейно независимы. +\end{proof} + +Пусть $K\subseteq F$~--- расширение полей. + +\begin{definition} + Элемент $\alpha \in F$ называется {\it алгебраическим} над подполем + $K$, если существует ненулевой многочлен $f(x)\in K[x]$, для + которого $f(\alpha) = 0$. В~противном случае $\alpha$ называется + {\it трансцендентным} элементом над~$K$. +\end{definition} + +\begin{definition} + {\it Минимальным многочленом} алгебраического элемента $\alpha \in + F$ над подполем $K$ называется ненулевой многочлен $h_\alpha(x)$ + наименьшей степени, для которого $h_\alpha(\alpha) = 0$. +\end{definition} + +\begin{lemma} \label{lemma_min_pol} + Пусть $\alpha \in F$~--- алгебраический элемент над~$K$ и + $h_\alpha(x)$~--- его минимальный многочлен. Тогда: + + \textup{(а)} $h_\alpha(x)$ определён однозначно с точностью до + пропорциональности; + + \textup{(б)} $h_\alpha(x)$ является неприводимым многочленом над + полем~$K$; + + \textup{(в)} для произвольного многочлена $f(x)\in K[x]$ равенство + $f(\alpha)=0$ имеет место тогда и только тогда, когда $h_\alpha(x)$ + делит~$f(x)$. +\end{lemma} + +\begin{proof} + (а) Пусть $h'_\alpha(x)$~--- ещё один минимальный многочлен элемента + $\alpha$ над~$K$. Тогда $\deg h_\alpha(x) = \deg h'_\alpha(x)$. + Умножив многочлены $h_\alpha(x)$ и $h'_\alpha(x)$ на подходящие + константы, добьёмся того, чтобы их старшие коэффициенты стали равны + единице. После этого положим $g(x) = h_\alpha(x) - h'_\alpha(x)$. + Тогда $g(\alpha) = 0$ и $\deg g(x) < \deg h_\alpha(x)$. Учитывая + определение минимального многочлена, мы получаем $g(x) = 0$. + + (б) Пусть $h_\alpha(x) = h_1(x) h_2(x)$ для некоторых $h_1(x), + h_2(x) \in K[x]$, причём $0 < \deg h_i(x) < \deg h_\alpha(x)$ при $i + = 1,2$. Так как $h_\alpha(\alpha) = 0$, то либо $h_1(\alpha)=0$, + либо $h_2(\alpha)=0$, что противоречит минимальности~$h_\alpha(x)$. + + (в) Очевидно, что если $h_\alpha(x)$ делит $f(x)$, то $f(\alpha) = + 0$. Докажем обратное утверждение. Разделим $f(x)$ на $h_\alpha(x)$ с + остатком: $f(x) = q(x)h_\alpha(x) + r(x)$, где $q(x), r(x) \in K[x]$ + и $\deg r(x) < \deg h_\alpha(x)$. Тогда условие $f(\alpha)=0$ влечёт + $r(\alpha) = 0$. Из минимальности многочлена $h_\alpha(x)$ получаем + $r(x)=0$. +\end{proof} + +Для каждого элемента $\alpha \in F$ обозначим через $K(\alpha)$ +наименьшее подполе в~$F$, содержащее $K$ и~$\alpha$. + +\begin{proposition} + Пусть $\alpha \in F$~--- алгебраический элемент над~$K$ и $n$~--- + степень его минимального многочлена над~$K$. Тогда + $$ + K(\alpha) = \{\beta_0 + \beta_1 \alpha + \ldots + \beta_{n-1} + \alpha^{n-1} \mid \beta_0, \ldots, \beta_{n-1} \in K\}. + $$ + Кроме того, элементы $1, \alpha, \alpha^2, \ldots, \alpha^{n-1}$ + линейно независимы над~$K$. В~частности, $[K(\alpha) : K] = n$. +\end{proposition} + +\begin{proof} + Легко видеть, что + $$ + K(\alpha) = \lbrace \frac{f(\alpha)}{g(\alpha)} \mid f(x), g(x) \in + K[x], f(\alpha) \ne 0 \rbrace. + $$ + Действительно, такие элементы лежат в любом подполе поля~$F$, + содержащем~$K$ и~$\alpha$, и сами образуют поле. Теперь возьмём + произвольный элемент $\frac{f(\alpha)}{g(\alpha)} \in K(\alpha)$ и + покажем, что он представим в виде, указанном в условии. Пусть + $h_\alpha(x) \in K[x]$~--- минимальный многочлен элемента~$\alpha$ + над~$K$. Поскольку $g(\alpha) \ne 0$, в силу + леммы~\ref{lemma_min_pol}(в) многочлен $h_\alpha(x)$ не + делит~$g(x)$. Но $h_\alpha(x)$ неприводим по + лемме~\ref{lemma_min_pol}(б), поэтому $(g(x), h_\alpha(x)) = 1$. + Значит, существуют такие многочлены $u(x), v(x) \in K[x]$, что $u(x) + g(x) + v(x) h_\alpha(x) = 1$. Подставляя в последнее равенство $x = + \alpha$, мы получаем $u(\alpha) g(\alpha) = 1$. Отсюда + $\frac{f(\alpha)}{g(\alpha)} = f(\alpha) u(\alpha)$, и мы избавились + от знаменателя. Теперь уменьшим степень числителя. Пусть $r(x)$~--- + остаток от деления $f(x)u(x)$ на~$h_\alpha(x)$. Тогда $f(\alpha) + u(\alpha) = r(\alpha)$ и, значит, $\frac{f(\alpha)}{g(\alpha)} = + r(\alpha)$, что показывает представимость элемента + $\frac{f\alpha)}{g(\alpha)}$ в требуемом виде. + + Остаётся показать, что элементы $1, \alpha, \ldots, \alpha^{n-1}$ + поля $F$ линейно независимы над~$K$. Если $$\gamma_0 + \gamma_1 + \alpha + \ldots + \gamma_{n-1} \alpha^{n-1} = 0$$ для некоторых + $\gamma_0, \gamma_1, \ldots, \gamma_{n-1} \in K$, то для многочлена + $w(x) = \gamma_0 + \gamma_1x + \ldots + \gamma_{n-1}x^{n-1} \in + K[x]$ получаем $w(\alpha) = 0$. Тогда из + леммы~\ref{lemma_min_pol}(в) и условия $\deg w(x) < \deg + h_\alpha(x)$ вытекает, что $w(x) = 0$, то есть $\gamma_0 = \gamma_1 + = \ldots = \gamma_{n-1} = 0$. +\end{proof} + +\begin{theorem} + Пусть $K$~--- произвольное поле и $f(x)\in K[x]$~--- многочлен + положительной степени. Тогда существует конечное расширение + $K\subseteq F$, в котором многочлен $f(x)$ имеет корень. +\end{theorem} + +\begin{proof} + Достаточно построить конечное расширение, в~котором имеет корень + один из неприводимых делителей $p(x)$ многочлена~$f(x)$. + + Покажем сначала, что факторкольцо $K[x]/(p(x))$ является полем. В + самом деле, если многочлен $g(x) \in\nobreak K[x]$ не делится + на~$p(x)$, то $(g(x), p(x)) = 1$, и тогда существуют многочлены + $u(x), v(x) \in K[x]$, для которых $u(x) g(x) + v(x) p(x) = 1$. Взяв + образ последнего равенства в факторкольце $K[x] / (p(x))$, мы + получим + $$(u(x) + (p(x))) (g(x) + (p(x))) = 1 + (p(x)),$$ т.\,е. элемент + $u(x)+(p(x))$ является обратным к $g(x)+(p(x))$. Значит, $K[x] / + (p(x))$~--- поле, и мы возьмём его в качестве~$F$. + + Заметим теперь, что расширение $K \subseteq F$ является конечным. + Действительно, для всякого многочлена $g(x) \in K[x]$ в поле $F = + K[x]/(p(x))$ имеем $g(x) + (p(x)) = r(x) + (p(x))$, где $r(x)$~--- + остаток от деления $g(x)$ на $p(x)$. Отсюда следует, что $F$ + порождается как векторное пространство над~$K$ элементами + $$ + 1 + (p(x)), x + (p(x)), \ldots, x^{n-1} + (p(x)), + $$ + где $n = \deg p(x)$. (Так же легко показать, что эти элементы + образуют базис в $F$ над~$K$.) + + Остаётся показать, что в поле $F$ многочлен $p(x)$ имеет корень. Это + похоже на обман, но корнем будет... $x + (p(x))$. Действительно, + пусть $p(x) = a_n x^n + a_{n-1} x^{n-1} + a_1x + a_0$, где $a_0, + a_1, \ldots, a_n \in K$. Тогда + \begin{multline*} + p(x + (p(x))) = a_n(x + (p(x)))^n + a_{n-1} (x + (p(x)))^{n-1} + + \ldots + a_1 (x + (p(x)) + a_0 =\\ + = (a_nx^n + a_{n-1}x^{n-1} + \ldots a_1 x + a_0) + (p(x)) = p(x) + + (p(x)) = (p(x)), + \end{multline*} + а $(p(x))$ есть не что иное, как нуль в~$F$. +\end{proof} + +Говорят, что поле $K[x] / (p(x))$ получено из поля $K$ {\it + присоединением корня} неприводимого многочлена~$p(x)$. Нетрудно +проверить, что если $\alpha$~--- некоторый корень многочлена $p(x)$ +в $K[x]/(p(x))$, то поле $K[x]/(p(x))$ совпадает с подполем +$K(\alpha)$. + +\begin{definition} + Пусть $K$~--- некоторое поле и $f(x)\in K[x]$~--- многочлен + положительной степени. {\it Полем разложения} многочлена $f(x)$ + называется такое расширение $F$ поля~$K$, что + + (1) многочлен $f(x)$ разлагается над $F$ на линейные множители; + + (2) корни многочлена $f(x)$ не лежат ни в каком собственном подполе + поля~$F$, содержащем~$K$. +\end{definition} + +\begin{example} + Рассмотрим многочлен $f(x) = x^4+x^3+x^2+x+1$ над $\QQ$. Так как + $(x-1)f(x) = x^5-1$, корнями многочлена $f(x)$ являются все корни + степени $5$ из единицы, отличные от единицы. Если присоединить к + $\QQ$ один из корней $\epsilon$ многочлена~$f$, то его остальные + корни можно получить, возводя число $\epsilon$ в натуральные + степени. Таким образом, присоединение одного корня сразу приводит к + полю разложения многочлена. +\end{example} + + +\begin{example} + Многочлен $f(x)=x^3-2$ неприводим над полем $\QQ$. Присоединение к + полю $\QQ$ корня этого многочлена приводит к полю $\QQ[x]/(x^3-2) + \cong \QQ(\sqrt[3]{2})$. Данное поле не является полем разложения + многочлена~$f(x)$, поскольку в нём $f(x)$ имеет только один корень и + не имеет двух других корней. Поскольку корнями данного многочлена + являются числа + $$ + \sqrt[3]{2}, \quad \sqrt[3]{2}(-\frac{1}{2} + \cfrac{\sqrt{-3}}{2}), + \quad \sqrt[3]{2}(-\frac{1}{2} - \frac{\sqrt{-3}}{2}), + $$ + полем разложения многочлена $f(x)$ является поле + $$ + F = \{\alpha_0 + \alpha_1 \sqrt[3]{2} + \alpha_2 \sqrt[3]{4} + + \alpha_3 \sqrt{-3} + \alpha_4 \sqrt[3]{2} \sqrt{-3} + \alpha_5 + \sqrt[3]{4} \sqrt{-3} \mid \alpha_i \in \QQ\}, + $$ + которое имеет над $\QQ$ степень~$6$. +\end{example} + +Пусть $F$ и $F'$~--- два расширения поля~$K$. Говорят, что +изоморфизм $F \xrightarrow{\sim} F'$ является \textit{тождественным + на~$K$}, если при этом изоморфизме каждый элемент поля $K$ переходит +в себя. + +\begin{theorem} + Поле разложения любого многочлена $f(x) \in K[x]$ существует и + единственно с точностью до изоморфизма, тождественного на~$K$. +\end{theorem} + +Доказательство этой теоремы можно найти, например, в книге +Э.\,Б.~Винберга \guillemotleft Курс алгебры\guillemotright{}. Мы не +включаем это доказательство в программу нашего курса. + + +\newpage + +\section*{Лекция~10} + +\medskip + +{\it Конечные поля. Простое подполе и порядок конечного поля. + Автоморфизм Фробениуса. Теорема существования и единственности для + конечных полей. Поле из четырех элементов. Цикличность + мультипликативной группы. Неприводимые многочлены над конечным + полем. Подполя конечного поля.} + +\medskip + +В этой лекции будем использовать следующее обозначение: $K^\times = +K \setminus \lbrace 0 \rbrace$~--- мультипликативная группа +поля~$K$. + +Пусть $K$~--- конечное поле. Тогда его характеристика отлична от +нуля и потому равна некоторому простому числу~$p$. Значит, $K$ +содержит поле $\ZZ_p$ в качестве простого подполя. + +\begin{theorem} \label{thm1} + Число элементов конечного поля равно $p^n$ для некоторого простого + $p$ и натурального $n$. +\end{theorem} + +\begin{proof} + Пусть $K$~--- конечное поле характеристики~$p$, и пусть размерность + $K$ над простым подполем $\ZZ_p$ равна~$n$. Выберем в $K$ базис + $e_1, \ldots, e_n$ над $\ZZ_p$. Тогда каждый элемент из $K$ + однозначно представляется в виде $\alpha_1 e_1 + \ldots + \alpha_n + e_n$, где $\alpha_1, \ldots, \alpha_n$ пробегают~$\ZZ_p$. + Следовательно, в $K$ ровно $p^n$ элементов. +\end{proof} + +Пусть $K$~--- произвольное поле характеристики $p > 0$. Рассмотрим +отображение +$$ +\varphi \colon K \to K, \quad a \mapsto a^p. +$$ +Покажем, что $\varphi$~--- гомоморфизм. Для любых $a,b \in K$ по +формуле бинома Ньютона имеем +$$ +(a + b)^p = a^p + C_p^1 a^{p-1}b + C_p^2 a^{p-2}b^2 + \ldots + +C_p^{p-1} a b^{p-1} + b^p. +$$ +Так как $p$~--- простое число, то все биномиальные коэффициенты +$C_p^i$ при $1 \leqslant i \leqslant p-1$ делятся на~$p$. Это +значит, что в нашем поле характеристики $p$ все эти коэффициенты +обнуляются, в результате чего получаем $(a + b)^p = a^p + b^p$. +Ясно, что $(ab)^p = a^p b^p$, так что $\varphi$~--- гомоморфизм. +Ядро любого гомоморфизма колец является идеалом, поэтому $\Ker +\varphi$~--- идеал в~$K$. Но в поле нет собственных идеалов, поэтому +$\Ker \varphi = \lbrace 0 \rbrace$, откуда $\varphi$ инъективен. + +Если поле $K$ конечно, то инъективное отображение из $K$ в $K$ +автоматически биективно. В этой ситуации $\varphi$ называется {\it + автоморфизмом Фробениуса} поля $K$. + +\begin{remark} + Пусть $K$~--- произвольное поле и $\psi$~--- произвольный + автоморфизм (т.\,е. изоморфизм на себя) поля~$K$. Легко видеть, что + множество неподвижных точек $K^{\psi} = \{ a \in K \mid \psi(a) = + a\}$ является подполем в~$K$. +\end{remark} + +Прежде чем перейти к следующей теореме, обсудим понятие формальной +производной многочлена. Пусть $K[x]$~--- кольцо многочленов над +произвольным полем~$K$. Формальной производной называется +отображение $K[x] \to K[x]$, которое каждому многочлену $f(x) = +a_nx^n + a_{n-1}x^{n-1} + \ldots + a_1 x + a_0$ сопоставляет +многочлен $f'(x) = na_n x^{n-1} + (n-1)a_{n-1}x^{n-2} + \ldots + +a_1$. Из определения следует, что это отображение линейно. Легко +проверить, что для любых $f,g \in K[x]$ справедливо привычное нам +равенство $(fg)' = f'g + fg'$ (в~силу дистрибутивности умножения +проверка этого равенства сводится к случаю, когда $f,g$~--- +одночлены). В~частности, $(f(x)^m)' = mf(x)^{m-1}$ для любых $f(x) +\in K[x]$ и $m \in \NN$. + +\begin{theorem} \label{thm2} + Для всякого простого числа $p$ и натурального числа $n$ существует + единственное \textup(с точностью до изоморфизма\textup) поле из + $p^n$ элементов. +\end{theorem} + +\begin{proof} + Положим $q = p^n$ для краткости. + + {\it Единственность.}\ Пусть поле $K$ содержит $q$ элементов. Тогда + мультипликативная группа $K^{\times}$ имеет порядок $q-1$. По + следствию~3 из теоремы Лагранжа мы имеем $a^{q-1}=1$ для всех $a \in + K \setminus \{0\}$, откуда $a^q - a = 0$ для всех $a\in K$. Это + значит, что все элементы поля $K$ являются корнями многочлена $x^q - + x \in \ZZ_p[x]$. Отсюда следует, что $K$ является полем разложения + многочлена $x^q - x$ над $\ZZ_p$. Из теоремы о полях разложения, + формулировавшейся на прошлой лекции, следует, что поле $K$ + единственно с точностью до изоморфизма. + + \smallskip + + {\it Существование.} Пусть $K$~--- поле разложения многочлена $f(x) + = x^q - x \in \ZZ_p[x]$. Тогда имеем $f'(x)= qx^{q-1} - 1 =\nobreak + -1$ ($qx^{q-1}$ обнуляется, так как $q$ делится на~$p$, а $p$~--- + характеристика поля~$\ZZ_p$). Покажем, что многочлен $f(x)$ не имеет + кратных корней в~$K$. Действительно, если $\alpha$~--- корень + кратности $m \geqslant 2$, то $f(x) = (x - \alpha)^m g(x)$ для + некоторого многочлена $g(x) \in \ZZ_p[x]$. Но тогда $f'(x) = + m(x-\alpha)^{m-1} g(x) + (x - \alpha)^m g'(x)$, откуда видно, что + $f'(x)$ делится на $(x - \alpha)$. Но последнее невозможно, ибо + $f'(x) = -1$~--- многочлен нулевой степени. Итак, многочлен $f(x)$ + имеет ровно $q$ различных корней в поле~$K$. Заметим, что эти + корни~--- в точности неподвижные точки автоморфизма $\varphi^n = + \underbrace{\varphi \circ \ldots \circ \varphi}_n$, где + $\varphi$~--- автоморфизм Фробениуса. В~самом деле, для элемента $a + \in K$ равенство $a^q - a = 0$ выполнено тогда и только тогда, когда + $a^{p^n} = a$, т.\,е. $\varphi^n(a) = a$. Значит, корни многочлена + $x^q-x$ образуют подполе в~$K$, которое по определению поля + разложения совпадает с~$K$. Следовательно, в поле $K$ ровно $q$ + элементов. +\end{proof} + +Конечныe поля еще называют {\it полями Галуа}. Поле из $q$ элементов +обозначают $\FF_q$. Например, $\FF_p \cong \ZZ_p$. + +\begin{example} + Построим явно поле из четырёх элементов. Многочлен $x^2+x+1$ + неприводим над $\ZZ_2$. Значит, факторкольцо $\ZZ_2[x]/(x^2+x+1)$ + является полем и его элементы~--- это классы $\overline{0}, + \overline{1}, \overline{x}, \overline{x+1}$ (запись $\overline a$ + означает класс элемента $a$ в факторкольце $\ZZ_2[x]/(x^2+x+1)$). + Например, произведение $\overline{x} \cdot \overline{x+1}$~--- это + класс элемента $x^2+x$, который равен $\overline{1}$. +\end{example} + +\begin{proposition} + Мультипликативная группа конечного поля $\FF_q$ является + циклической. +\end{proposition} + +\begin{proof} + Заметим, что $\FF_q^\times$~--- конечная абелева группа, и обозначим + через $m$ её экспоненту (см. конец лекции~4). Предположим, что + группа $\FF_q^{\times}$ не является циклической. Тогда $m < q-1$ по + следствию~2 лекции~4. По определению экспоненты это значит, что $a^m + = 1$ для всех $a \in \FF_q^{\times}$. Но тогда многочлен $x^m-1$ + имеет в поле $\FF_q$ больше корней, чем его степень,~--- + противоречие. +\end{proof} + +\begin{theorem} + Конечное поле $\FF_q$, где $q=p^n$, можно реализовать в виде + $\ZZ_p[x]/(h(x))$, где $h(x)$~--- неприводимый многочлен степени $n$ + над $\ZZ_p$. В~частности, для всякого $n \in \NN$ в кольце + $\ZZ_p[x]$ есть неприводимый многочлен степени~$n$. +\end{theorem} + +\begin{proof} + Пусть $\alpha$~--- порождающий элемент группы $\FF_q^{\times}$. + Тогда минимальное подполе $\ZZ_p(\alpha)$ поля~$\FF_q$, содержащее + $\alpha$, совпадает с~$\FF_q$. Значит, поле $\FF_q$ изоморфно полю + $\ZZ_p[x]/(h(x))$, где $h(x)$~--- минимальный многочлен элемента + $\alpha$ над $\ZZ_p$. Из результатов прошлой лекции следует, что + многочлен $h(x)$ неприводим. Поскольку степень расширения $[\FF_q : + \ZZ_p]$ равна~$n$, этот многочлен имеет степень~$n$. +\end{proof} + +\begin{theorem} + Всякое подполе поля $\FF_q$, где $q=p^n$, изоморфно $\FF_{p^m}$, где + $m$~--- делитель числа $n$. Обратно, для каждого делителя $m$ числа + $n$ в поле $\FF_q$ существует ровно одно подполе из $p^m$ элементов. +\end{theorem} + +\begin{proof} + Пусть $F$~--- подполе поля $\FF_q$. По определению простого подполя + имеем $F \supset \ZZ_p$, откуда $\xar F = p$. Тогда + теорема~\ref{thm1} нам сообщает, что $|F| = p^m$ для некоторого $m + \in \NN$. По теореме~\ref{thm2} имеем $F \cong\nobreak \FF_{p^m}$. + Обозначим через $s$ степень (конечного) расширения $F \subset + \FF_q$. Рассуждая так же, как в доказательстве теоремы~\ref{thm1}, + мы получим $p^n = (p^m)^s$, откуда $p^n = p^{ms}$ и $m$ делит~$n$. + + Пусть теперь $m$~--- делитель числа~$n$, т.\,е. $n = ms$ для + некоторого $s \in \NN$. Рассмотрим многочлены $f(x) = x^{p^n} - x$ и + $g(x) = x^{p^m} - x$ над $\ZZ_p$. Заметим, что для элемента $a \in + \FF_q$ равенства $a^{p^m} = a$ следует + $$ + a^{p^n} = a^{p^{ms}} = a^{(p^m)^s} = + (\ldots((a^{p^m})^{p^m})^{p^m}\ldots)^{p^m} \ \text{($s$ раз возвели + в степень $p^m$)} = a. + $$ + Поэтому каждый корень многочлена $g(x)$ является и корнем многочлена + $f(x)$. Отсюда поле разложения многочлена $f(x)$ лежит в поле + разложения многочлена $g(x)$. Значит, $\FF_{p^m}$ содержится в + $\FF_{p^n}$. + + Наконец, все элементы подполя из $p^m$ элементов неподвижны при + автоморфизме $\psi = \underbrace{\varphi \circ \ldots \circ + \varphi}_m \colon x \mapsto x^{p^m}$ ($\varphi$~--- автоморфизм + Фробениуса). Поскольку число корней многочлена $x^{p^m}-x$ в поле + $\FF_q$ не превосходит~$p^m$, множество элементов данного подполя + совпадает с множеством неподвижных точек автоморфизма~$\psi$. + Значит, такое подполе единственно. +\end{proof} + +\end{document} diff --git a/algo_pilot/book/book.pdf b/algo_pilot/book/book.pdf new file mode 100644 index 0000000..9bf8dd0 Binary files /dev/null and b/algo_pilot/book/book.pdf differ diff --git a/algo_pilot/book/book.tex b/algo_pilot/book/book.tex new file mode 100644 index 0000000..3f077f6 --- /dev/null +++ b/algo_pilot/book/book.tex @@ -0,0 +1,198 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header_book} + +\begin{document} +\titlepage +\thispagestyle{empty} +\pagestyle{fancy} + +\newpage +\section*{Предисловие} +Так уж вышло, что предисловие к этой книжке становится в первую очередь послесловием +групп 151 и 153 к нашему лектору. Послесловие --- это всегда грустный жанр, но есть одно +замечательное свойство: послесловия всегда дают надежду на продолжение разговора, +даже если уже много чего было сказано. + +Многие из нас провели с тобой больше года, но все мы надеемся, что всё, что +происходило было не зря в первую очередь для нас. Да, было много трудностей, +которые и мы, и ты преодолевали все 5 модулей. Для тебя мы --- первые студенты, +которых ты учил. Для нас ты первый и, пожалуй, единственный лектор по алгоритмам. + +Эта маленькая книжечка не отражает всё, что мы проходили, но в этом модуле были +рассмотрены одновременно практически и теоретически важные алгоритмы. + +Мы называли тебя по-сердитому <<Глебас>>, но ты не обижайся, ладно? Отнесись +с юмором :) + +Люди, которые прошли все 5 модулей рядом с тобой: + +\begin{minipage}{0.45\textwidth} + \def\baselinestretch{1.2} + \textbf{Группа 151:} + + \it{ + + Бирюков Валентин + + Воробьев Петр + + Калинов Алексей + + Когтенков Алексей + + Корозевцев Павел + + Кутенин Данила + + Лазарев Владислав + + Лукьянов Илья + + Мельников Артем + + Мусаткина Дарья + + Проскуряков Александр + + Смалюк Арсений + + Смирнов Александр + + Старченко \sout{Владаимир} Владимир + + Тульчинский Эдуард + } +\end{minipage} +\hfill +\begin{minipage}{0.45\textwidth} + \def\baselinestretch{1.2} + + \textbf{Группа 153:} + \it{ + + Абдумуталов Рустам + + Андреев Александр + + Баранов Юрий + + Бесчетнов Павел + + Богомолов Павел + + Гурциева Тамара + + Зойкин Александр + + Зубанов Виктор + + Капранов Иван + + Кнышов Александр + + Латышев Павел + + Остяков Павел + + Сидоров Евгений + + Харламов Алексей + } +\end{minipage} + +\begin{quote} +\textit{ +Глеб, читай курс всегда с таким же диким интересом и на одной волне с +аудиторией, это просто топ. Чтобы через лет 10 можно было завалиться к тебе на +лекцию, и слышать, что определения ещё набрасываются на вентилятор, а аутисты +в аудитории никогда не спят. Спасибо тебе за бодрые пять модулей. Курс просто +огонь. +} +\end{quote} +\begin{flushright} + \textit{Какой-то аутист} +\end{flushright} +% \medskip +\begin{quote} +\textit{ + Было очень классно тебя слушать. Надеюсь, что в будущем ты защитишь + кандидатскую, а каждый из нас найдёт область, которая будет востребована, + чтобы она вызывала бурную реакцию для того, чтобы что-то делать и создавать. + Никогда не забуду, как мне снизили за <<Кутенин Д.>> +} +\end{quote} +\begin{flushright} + \textit{Автор конспектов} +\end{flushright} + +\begin{quote} +\textit{ + Глеб! + Твой курс был очень полезным для меня. Я вынес много нового и надеюсь мне это + пригодится в жизни. У тебя отличная подача материала и замечательное чувство + юмора. Спасибо за все пять модулей, которые ты нас терпел. Надеюсь, мы ещё + встретимся :) +} +\end{quote} +\begin{flushright} + \textit{Андреев А.} +\end{flushright} + +\begin{quote} +\textit{ + Этот курс был чертовски полезен и крут. Пусть я и не всё понимал, но на + лекциях было всегда интересно, к тому же у тебя отличное чувство юмора. + Эта книжечка тебе, чтобы не терять листочки в сумке. + } +\end{quote} +\begin{flushright} + \textit{Иван Капранов} +\end{flushright} + +\newpage + +\tableofcontents +\newpage +\setcounter{page}{7} + +\smallskip + +\input{hse_algo_pilot_01_[02.09.2016]} +\oball +\newpage +\input{hse_algo_pilot_02_[06.09.2016]} +\oball +\clearpage +\input{hse_algo_pilot_03_[16.09.2016]} +\oball +\newpage +\input{hse_algo_pilot_04_[20.09.2016]} +\oball +\newpage +\input{hse_algo_pilot_05_[27.09.2016]} +\oball +\newpage +\input{hse_algo_pilot_06_[30.09.2016]} +\oball +\newpage +\input{hse_algo_pilot_07_[04.10.2016]} +\oball +\newpage +\input{hse_algo_pilot_08_[11.10.2016]} +\oball +\newpage +\input{hse_algo_pilot_09_[14.10.2016]} +\oball +\newpage +\input{hse_algo_pilot_10_[18.10.2016]} +\oball + +\section*{Благодарности} + +Спасибо большое за вычитку конспектов следующим людям: Павлу Корозевцеву, Алексею +Данилюку, Тамаре Гурциевой, Александру Андрееву за +нахождение огромного количества опечаток и неточностей, Алексею Калинову +за вычитку лекции про RSA, Михаилу Дискину за +вычитку лекции про $\Pclass$ и $\NPclass$. + +\end{document} \ No newline at end of file diff --git a/algo_pilot/book/header_book.sty b/algo_pilot/book/header_book.sty new file mode 100644 index 0000000..8918193 --- /dev/null +++ b/algo_pilot/book/header_book.sty @@ -0,0 +1,218 @@ +%% Работа с русским языком +\usepackage{cmap} % поиск в PDF +\usepackage{mathtext} % русские буквы в формулах +\usepackage{ulem} + +\usepackage[T2A]{fontenc} % кодировка +\usepackage[utf8]{inputenc} % кодировка исходного текста. НИКОГДА НЕ МЕНЯТЬ. +\usepackage[english,russian]{babel} % локализация и переносы +\usepackage{epigraph} % делать эпичные эпиграфы +\usepackage{fancybox,fancyhdr} % для колонтитулов + +%% Отступы между абзацами и в начале абзаца +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +%% Изменяем размер полей +\usepackage[top=0.8in, bottom=0.75in, left=0.625in, right=0.625in]{geometry} + +%% Изменяем размер отступов колонтитулов +\renewcommand{\headrulewidth}{1.8pt} +\renewcommand{\footrulewidth}{0.0pt} + +%% Графика +\usepackage[pdftex]{graphicx} +\graphicspath{{images/}} + +%% Различные пакеты для работы с математикой +\usepackage{mathtools} % Тот же amsmath, только с некоторыми поправками + +\usepackage{amssymb} % Математические символы +\usepackage{amsthm} % Пакет для написания теорем +\usepackage{amstext} +\usepackage{array} +\usepackage[noend]{algpseudocode} +\usepackage{algorithm} +\usepackage{algorithmicx} +\usepackage{amsfonts} +\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление +\usepackage{enumitem} % Для выравнивания itemize (\begin{itemize}[align=left]) +\usepackage{ifthen} + + +% Номера формул +\mathtoolsset{showonlyrefs=true} % Показывать номера только у тех формул, на которые есть \eqref{} в тексте. + +% Ссылки +\usepackage[urlcolor=blue]{hyperref} + +% Шрифты +\usepackage{euscript} % Шрифт Евклид +\usepackage{mathrsfs} % Красивый матшрифт + +% Свои команды\textbf{} +\DeclareMathOperator{\sgn}{\mathop{sgn}} + +% Перенос знаков в формулах (по Львовскому) +\newcommand*{\hm}[1]{#1\nobreak\discretionary{} +{\hbox{$\mathsurround=0pt #1$}}{}} + +% Графики +\usepackage{pgfplots} +%\pgfplotsset{compat=1.12} + +% Алгоритмы +\newcommand*\Let[2]{\State #1 $\gets$ #2} + +% Изменим формат \section и \subsection: +\usepackage{titlesec} +\titleformat{\section} +{\vspace{1cm}\centering\LARGE\bfseries} % Стиль заголовка +{} % префикс +{0pt} % Расстояние между префиксом и заголовком +{} % Как отображается префикс +\titleformat{\subsection} % Аналогично для \subsection +{\Large\bfseries} +{} +{0pt} +{} + + +%% Информация об авторах +%% Титульный лист +\renewcommand{\titlepage}{\begingroup + \hbox{ + \hspace*{0.12\textwidth} + \rule{1pt}{\textheight} + \hspace*{0.05\textwidth} + \parbox[b]{0.775\textwidth}{ + {\includegraphics[width=\linewidth]{../images/velosiped.jpg}}\\[2\baselineskip] + {\noindent\Huge\bfseries Избранные главы алгоритмов и + структур данных}\\[\baselineskip] + {\large\textrm{Конспекты лекций}}\\[3\baselineskip] + {\Large\textsc{Лектор: Г.О. Евстропов}}\\[\baselineskip] + {Под редакцией Данилы Кутенина}\\[6\baselineskip] + {\noindent НИУ ВШЭ, 2015-2016}\\[\baselineskip] + } + } + \endgroup +} + + + +%% Для колонтитула +\def\head{ +{\it \small НИУ ВШЭ $\bullet$ Факультет компьютерных наук $\bullet$ +Прикладная математика и информатика} +} + +%% Делаем верхний и нижний колонтитулы +\fancyhf{} +\fancyhead[L]{\ifthenelse{\isodd{\thepage}}{\head}{\thepage}} +\fancyhead[R]{\ifthenelse{\isodd{\thepage}}{\thepage}{\head}} + + +%% Функция для обнуление конкретного счётчика +\def\ob#1{\setcounter{#1}{0}} + +%% Функция для обнуления всего. Обязательно вызывать в конце файла! +\def\oball{\setcounter{Def}{0}\setcounter{Lem}{0}\setcounter{Sug}{0} +\setcounter{eg}{0}\setcounter{Cmt}{0}\setcounter{cnsqnc}{0}\setcounter{th}{0} +\setcounter{stnmt}{0}\setcounter{task}{0}\setcounter{dsg}{0}\setcounter{gen}{0} +\setcounter{dream}{0}\setcounter{prop}{0}} + +%% Определение счётчика + переопределение команд + +\newcounter{Def}\setcounter{Def}{0} +\def\df{\par\smallskip\refstepcounter{Def}\textbf{\arabic{Def}}} +\newtheorem*{Def}{Определение \df} + +\newcounter{Lem}\setcounter{Lem}{0} +\def\lm{\par\smallskip\refstepcounter{Lem}\textbf{\arabic{Lem}}} +\newtheorem*{Lemma}{Лемма \lm} + +\newcounter{Sug}\setcounter{Sug}{0} +\def\sug{\par\smallskip\refstepcounter{Sug}\textbf{\arabic{Sug}}} +\newtheorem*{Suggestion}{Предложение \sug} + +\newcounter{eg}\setcounter{eg}{0} +\def\eg{\par\smallskip\refstepcounter{eg}\textbf{\arabic{eg}}} +\newtheorem*{Examples}{Пример \eg} + +\newcounter{Cmt}\setcounter{Cmt}{0} +\def\cmt{\par\smallskip\refstepcounter{Cmt}\textbf{\arabic{Cmt}}} +\newtheorem*{Commentary}{Замечание \cmt} + +\newcounter{cnsqnc}\setcounter{cnsqnc}{0} +\def\cnsqnc{\par\smallskip\refstepcounter{cnsqnc}\textbf{\arabic{cnsqnc}}} +\newtheorem*{Consequence}{Следствие \cnsqnc} + +\newcounter{th}\setcounter{th}{0} +\def\th{\par\smallskip\refstepcounter{th}\textbf{\arabic{th}}} +\newtheorem*{Theorem}{Теорема \th} + +\newcounter{stnmt}\setcounter{stnmt}{0} +\def\st{\par\smallskip\refstepcounter{stnmt}\textbf{\arabic{stnmt}}} +\newtheorem*{Statement}{Утверждение \st} + +\newcounter{task}\setcounter{task}{0} +\def\task{\par\smallskip\refstepcounter{task}\textbf{\arabic{task}}} +\newtheorem*{Task}{Упражнение \task} + +\newcounter{dsg}\setcounter{dsg}{0} +\def\dsg{\par\smallskip\refstepcounter{dsg}\textbf{\arabic{dsg}}} +\newtheorem*{Designation}{Обозначение \dsg} + +\newcounter{gen}\setcounter{gen}{0} +\def\gen{\par\smallskip\refstepcounter{gen}\textbf{\arabic{gen}}} +\newtheorem*{Generalization}{Обобщение \gen} + +\newcounter{dream}\setcounter{dream}{0} +\def\dream{\par\smallskip\refstepcounter{dream}\textbf{\arabic{dream}}} +\newtheorem*{Thedream}{Предел мечтаний \dream} + +\newcounter{prop}\setcounter{prop}{0} +\def\prop{\par\smallskip\refstepcounter{prop}\textbf{\arabic{prop}}} +\newtheorem*{Properties}{Свойство \prop} + +\renewcommand{\Re}{\mathrm{Re\:}} +\renewcommand{\Im}{\mathrm{Im\:}} +\newcommand{\Arg}{\mathrm{Arg\:}} +\renewcommand{\arg}{\mathrm{arg\:}} +\newcommand{\Mat}{\mathrm{Mat}} +\newcommand{\id}{\mathrm{id}} +\newcommand{\isom}{\xrightarrow{\sim}} +\newcommand{\leftisom}{\xleftarrow{\sim}} +\newcommand{\Hom}{\mathrm{Hom}} +\newcommand{\Ker}{\mathrm{Ker}\:} +\newcommand{\rk}{\mathrm{rk}\:} +\newcommand{\diag}{\mathrm{diag}} +\newcommand{\ort}{\mathrm{ort}} +\newcommand{\pr}{\mathrm{pr}} +\newcommand{\vol}{\mathrm{vol\:}} +\def\limref#1#2{{#1}\negmedspace\mid_{#2}} +\newcommand{\eps}{\varepsilon} + +\renewcommand{\phi}{\varphi} % плохо, так как есть \phi в англ раскладке. +\newcommand{\e}{\mathrm{e}} +\renewcommand{\l}{\lambda} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} +\renewcommand{\C}{\mathbb{C}} +\newcommand{\E}{\mathbb{E}} +\renewcommand{\O}{\mathcal{O}} +\newcommand{\Pclass}{\mathbf{P}} +\newcommand{\NPclass}{\mathbf{NP}} +\newcommand{\coNPclass}{\mathbf{coNP}} +\newcommand{\NPCclass}{\mathbf{NPC}} +\newcommand{\SAT}{\mathsf{SAT}} + + +\newcommand{\vvector}[1]{\begin{pmatrix}{#1}_1 \\\vdots\\{#1}_n\end{pmatrix}} +\renewcommand{\vector}[1]{({#1}_1, \ldots, {#1}_n)} + +\newcommand{\Mod}{\ \text{mod} \ } + +\usetikzlibrary{calc,arrows.meta,positioning} diff --git a/algo_pilot/book/hse_algo_pilot_01_[02.09.2016].tex b/algo_pilot/book/hse_algo_pilot_01_[02.09.2016].tex new file mode 100644 index 0000000..8b0181c --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_01_[02.09.2016].tex @@ -0,0 +1,250 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Программа. Организационные моменты} + +% Внимание: программа дополняется после каждой лекции. +% \begin{itemize} +% \item[1.] Матроиды. +% \item[2.] Быстрое преобразование Фурье. +% \item[3.] Алгоритм Карацубы, алгоритм Штрассена. +% \item[4.] Теоретико числовые алгоритмы. +% \item[5.] Шифрование, RSA, проверка на простоту, комбинаторные +% оптимизации. +% \item[6.] Матроиды, интересные леммы. +% \item[7.] Венгерский алгоритм. +% \item[8.] Сегментация изображений. +% \item[9.] $\Pclass$ и $\NPclass$ классы. $\NPclass$-трудные и $\NPclass$-полные +% задачи. Теорема Кука-Левина. +% \item[10.] Продолжение $\NPclass$ задач, сведения к 3-$\SAT$, различные классы +% задач. +% \end{itemize} + +Формула такая же, как и в прошлом году: + +$0.3\cdot O_{\text{контесты}} + 0.25 +\cdot O_{\text{семинарские листки}} + 0.15 \cdot O_{\text{кр}} + 0.3\cdot +O_{\text{экзамен}} + \text{Б}$. + + Округление вверх. + +\section{Лекция 1 от 02.09.2016. Матроиды} + +Пока поговорим немного о темах, не связанных с матроидами. + +У нас есть конечное множество $A$, которое в будущем мы будем называть +\textit{носителем}. Пусть $F \subset 2^{A}$, и $F$ мы будем называть +\textit{допустимыми} множествами. + +Также у нас есть весовая функция $c(w) \ \forall w \in A$. +Для каждого $B \in F$ мы определим \textit{стоимость} +множетсва, как $\sum\limits_{w \in B} c(w)$. Наша задача +заключается в том, чтобы найти максимальный вес из всех допустимых множеств. + +\begin{Examples}[Задача о рюкзаке] +У каждого предмета есть вес и стоимость. Мы хотим унести как можно больше +вещей максимальной стоимости с весом не более $k$. + +Вес не более $k$ нам задает ограничение, то есть множество $F$. +А максимизация унесенной суммы нам и задаёт задачу. +\end{Examples} + +\subsection{Матроид} + +Множество $F$ теперь будет всегда обозначаться как $I$. Также условимся, что +элементы отождествляются с одноэлементными множествами. + +Матроидом называется множество подмножеств множества $A$ таких, что выполняются +следующие 3 свойства (аксиомы): +\begin{itemize} + \item[{\bf 1.}] $\varnothing \in I$ + + \item[{\bf 2.}] $B \in I : \ \forall \ D \subset B \implies D \in I$ + + \item[{\bf 3.}] Если $B, D \in I$ и $|B| < |D| \implies \exists \ w \in D + \setminus B$ такой, что $B \cup w \in I$ +\end{itemize} + +Дальнейшее обозначение матроидов --- $\langle A, I\rangle$. + +\begin{Def} + Базой матроида называют множество всех таких элементов $B \in I$, что {\bf не} + существует $B'$, что $B \subset B', |B|<|B'|$ и $B' \in I$. Обозначение $\mathfrak{B}$. +\end{Def} + +\begin{Properties} + Все элементы из базы имеют одну и ту же мощность. И все элементы из $I$, имеющие + эту мощность, будут в базе. + + Доказательство очевидно из определения. +\end{Properties} + +\begin{Examples}[Универсальный матроид] + Это все подмножества $B$ множества $A$ такие, что + $|B| \leqslant k$ при $k \geqslant 0$. Все свойства проверяются + непосредственно. + + База такого матроида --- все множества + размера $k$. +\end{Examples} + +\begin{Examples}[Цветной матроид] + У элементов множества $A$ имеются цвета. Тогда $B \in I$, + если все элементы множества $B$ имеют разные цвета. + Свойства проверяются непосредственно, в 3 свойстве надо воспользоваться + принципом Дирихле. + + База такого матроида --- множества, где присутствуют все цвета. +\end{Examples} + +\begin{Examples}[Графовый матроид на $n$ вершинах] + $\langle E, I \rangle$. Множество ребер $T \in I$, если $T$ не содержит циклов. + +\rm{Докажем 3 свойство: + \begin{proof} + Пусть у нас есть $T_1$ и $T_2$ такие, что $|T_1| < |T_2|$. + Разобьём граф, построенный на $T_1$ на компоненты + связности. Так как ребер ровно $|T_1|$ на $n$ вершинах, то компонент связности + будет + $n - |T_1|$. В другом случае компонент связности будет $n - |T_2| < n - |T_1|$. + То есть во 2-ом графе будет меньше компонент связности, а значит по принципу + Дирихле найдётся ребро, которое соединяет две компоненты связности в первом графе. + + Эти рассуждения чем-то отдаленно напоминают алгоритм Краскала. + \end{proof}} + + \textit{Базой в таком матроиде являются все остовные леса.} +\end{Examples} + +\begin{Examples}[Матричный матроид] + Носителем здесь будут столбцы любой фиксированной матрицы. + $I$ --- множество всех подмножеств из линейно независимых + столбцов. Все свойства выводятся из линейной алгебры (третье из метода Гаусса, + если быть точным). +\end{Examples} + +\begin{Examples}[Трансверсальный матроид] + $G = \langle X, Y, E \rangle$ --- двудольный граф с долями $X, Y$. Матроид + будет $\langle X, I \rangle$ такой, что $B \in I$, если существует паросочетание + такое, что множество левых концов этого паросочетания совпадает с $B$. + + \rm{Докажем 3 свойство: + \begin{proof} + Пусть есть 2 паросочетания на $|B_1|$ и $|B_2|$ ($|B_1| < |B_2|$) вершин + левой доли. Тогда рассмотрим симметрическую разность этих паросочетаний. + Так как во 2-ом паросочетании ребер больше, то существует чередующаяся + цепь, а значит при замене ребер на этой чередующейся + цепи с новой добавленной вершиной (а она найдётся по + принципу Дирихле) получим паросочетание с ещё 1 добавленной вершиной. + \end{proof} + } + + \textit{Базой в таком матроиде будут вершины левой доли максимального паросочетания.} +\end{Examples} + +\subsection{Приводимость одной базы к другой} + +\begin{Lemma} + Пусть $B, D \in \mathfrak{B}$. Тогда существует последовательность $B = B_0, B_1, + \ldots,$ $B_k = D, B_i \in \mathfrak{B}$ такие, что $|B_i \ \triangle \ B_{i + 1}| = 2,$ где $\triangle$ + обозначает симметрическую разность множеств. +\end{Lemma} + +\begin{proof} + Будем действовать по шагам. Если текущее $B_i \neq D$, тогда возьмём + произвольный элемент + $w$ из $B_i \setminus D$. Тогда по 2-ому пункту определения матроида следует, + что $B_i \setminus w \in I$. Так как $|B_i \setminus w| < |D|$, то существует + $u \in D \setminus (B_i \setminus w)$ такой, что $(B_i \setminus w) \cup u \in I$. И теперь $B_{i + 1} + \gets (B_i \setminus w) \cup u$. + Мы сократили количество несовпадающих элементов с $D$ на 1, симметрическая + разность $B_i$ и $B_{i + 1}$ состоит из 2 элементов --- $w$ и $u$. +\end{proof} + +Наконец, мы подошли к основной теореме лекции --- жадный алгоритм или теорема +Радо-Эдмондса. + +\subsection{Жадный алгоритм на матроиде} + +Доказательство будет в несколько этапов. + +Для начала определимся с обозначениями. $M = \langle A, I \rangle, n = |A|, w_i$ +--- элементы множества $A$. +Решаем обычную задачу на максимизацию необходимого множества. + +\begin{Theorem}[Жадный алгоритм. Теорема Радо-Эдмондса] + Если отсортировать все элементы $A$ по невозрастанию стоимостей весовой функции: + $c_1 \geqslant c_2 \geqslant \ldots \geqslant c_n$, то такой алгоритм решает + исходную задачу о нахождении самого дорогого подмножества: + + \rm{ + \begin{algorithm} + \caption{Жадный алгоритм на матроиде.} + \begin{algorithmic} + \Let{$B$}{$\varnothing$} + \For {$c_i$} + \If{$B \cup w_i \in I$} + \Let{$B$}{$B \cup w_i$} + \EndIf + \EndFor + \end{algorithmic} + \end{algorithm} + } +\end{Theorem} + +\begin{proof} + Пусть $B_i$ --- множество, которое мы получим после $i$ шагов цикла нашего алгоритма. + Теперь поймём, что наш алгоритм в итоге получит какой-то элемент из базы. + Действительно, предположим, что это не так. Тогда существует множество из базы, которое его + накрывает: $\exists \ D \in \mathfrak{B}: B_n \subset D$ и $|B_n| < |D|$, так как + можно взять любой элемент из базы и добавлять в $B_n$ по 1 элементу из пункта + 3 определения матроида. + + Получаем, что у нас существует элемент $w_i \in D \setminus B_n$, который мы не взяли + нашим алгоритмом, но $B_{i - 1} \cup w_i \in I$, так как $B_{i - 1} \cup w_i \subset + B_n \cup w_i \subset D$, то есть это лежит в $I$ по пункту 2 определения матроида. + Значит мы должны были взять $w_i$, противоречие. + + Рассмотрим последовательность $d_i$ из нулей и единиц длины $n$ такую, что $d_i = 1$ только + в том случае, если мы взяли алгоритмом $i$-ый элемент. А оптимальное решение задачи + пусть будет $e_i$ --- тоже последовательность из 0 и 1. Последовательности будут + обозначаться $d_i$ и $e_i$ соответственно. + + Если на каком-то префиксе последовательности $d_i$ единиц стало меньше, чем в $e_i$, то + возьмём все элементы, которые помечены в последовательности $e_i$ единицами. + Пусть это множество будет $E$. Аналогично на этом префиксе последовательности + $d_i$ определим множество $D$. $|D| < |E|, D \in I, E \in I$, поэтому мы можем + дополнить $D$ каким-то элементом из $E$, которого не было в $D$. То есть на этом + префиксе у $d_i$ стоит 0 (пусть это будет место $i$), но заметим, что на $i$-ом + шаге мы обязаны были брать этот элемент, из-за рассуждений аналогичным рассуждению + про базу (2 абзаца выше). + + Получаем, что на каждом префиксе $d_i$ единиц не меньше, чем на этом же префиксе + последовательности $e_i$. Значит первая единица в $d_i$ встретится не позже, чем в + $e_i$, вторая единица в $d_i$ не позже, чем вторая в $e_i$ и т.д. по рассуждениям по + индукции. + +\end{proof} + +На лекции была теория про ранги. В доказательстве можно обойтись без неё, просто +приложу то, что сказал Глеб. Может быть понадобится в задачах. +\begin{Def} + \textbf{Рангом} множества $B \subseteq A$ (обозн. $r(B)$) называют максимальное + число $k$ такое, что $\exists \ C \subseteq B$ такое, что $|C| = k, C \in I$. +\end{Def} + Эта функция обладает таким свойством: для любого элемента $w \in A$ следует, + что $r(B \cup w) \leqslant r(B) + r(w)$. Давайте поймём, почему так: + + Если $r(B \cup w) = r(B)$, то всё хорошо, так как $r(w) \geqslant 0$. Если + $r(B \cup w) = r(B) + 1$ (других вариантов не бывает из определения), то тогда + $w \in I$, так как $C \subset (B\cup w)$, + что + $|C| = $ + + $r(B \cup w), w \in C$ (иначе $C$ годилось бы для $B$ и $r(B \cup w) = r(B)$), значит + $r(w) = 1$, так как $C \in I$, а $w \in C$. + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_02_[06.09.2016].tex b/algo_pilot/book/hse_algo_pilot_02_[06.09.2016].tex new file mode 100644 index 0000000..06ce008 --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_02_[06.09.2016].tex @@ -0,0 +1,241 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 2 от 06.09.2016. Быстрое преобразование Фурье} +\epigraph{Чтобы быть успешным программистом, надо знать 3 вещи: +\begin{itemize} +\item Cортировки; +\item Хэширование; +\item Преобразование Фурье. +\end{itemize} +\leavevmode}{Глеб} + +В этой лекции будет разобрано дискретное преобразование Фурье (Discrete Fourier +Transform). + +\subsection{Применение преобразования Фурье} + +Допустим, что мы хотим решить такую задачу: + +\begin{Examples} + Даны 2 бинарные строки $A$ и $B$ длины $n$ и $m$ соответственно. Мы хотим найти, какая подстрока в $A$ наиболее + похожа на $B$. Наивная реализация решает эту задачу в худшем случае за + $\O(n^2)$. Преобразование + Фурье поможет решить эту задачу за $\O(n\log n)$, а именно научимся решать другую + задачу: + +{\bf Цель.} + Хотим научиться перемножать многочлены одной степени \newline $A(x) = a_0 + a_1x + \ldots + a_{n - 1}x^{n - 1}$ + и $B(x) = b_0 + b_1x + \ldots + b_{n - 1}x^{n - 1}$ так, что + $C(x) = A(x)B(x)$, то есть считать \textit{свёртку} (найти все коэффициенты, если по-другому) + $\sum\limits_{i = 0}^{2n - 2} \sum\limits_{\substack{j + k = i,\\ + j, k \in [n - 1]}} a_jb_{k}x^i$ за $\O(n\log n)$. + +Вернёмся к нашему примеру. Поймём как с помощью нашей {\bf цели} решать задачу +про бинарные строки. + +Пусть $A = a_0 \ldots a_{n - 1}, B = b_0\ldots b_{n - 1}$. Их можно считать одной длины +(просто добавим нулей в конец $b$ при надобности). Теперь задача +переформулировывается как нахождение максимального скалярного произведение +$B$ и некоторых циклических сдвигов $A$ (до $n - m + 1$). + +Инвертируем массив $B$ и припишем в конец $n$ нулей, а к массиву +$A$ припишем самого себя. Посмотрим на все коэффициенты перемножения: + +\[ + c_k = \sum\limits_{i + j = k} a_ib_j +\] + +Но $b_i = 0$ при $i \geqslant n$, поэтому при $k \geqslant n$: + +\[ + c_k = \sum\limits_{i = 0}^{n - 1} b_ia_{k - i} +\] + +Выбрав нужные коэффициенты, мы решили эту задачу. + +\end{Examples} + +\subsection{Алгоритм быстрого преобразования Фурье} + +Основная идея алгоритма заключается в том, чтобы представить каждый многочлен +через набор $n$ точек и значений многочлена в этих точках, быстро (за $\O(n\log n)$) вычислить значения в каких-то $n$ точках для обоих многочленов, потом +перемножить за $\O(n)$ сами значения. Потом применить обратное преобразование +Фурье и получить коэффициенты $C(x) = A(x)B(x)$. + +Итак, для начала будем считать, что $n = 2^k$ (просто добавим нулей до степени двойки). + +Рассмотрим циклическую группу корней из 1 --- $W_n = \{\e^{i\frac{2\pi k}{n}} \ +\mid \ k \in [n - 1]\}$. Обозначим за $w_n = \e^{i\frac{2\pi}{n}}$. +Одно из самых главных свойств, что $w_n^{p} \cdot w_n^{q} = w_n^{p + q}$, +которым мы будем пользоваться в дальнейшем. + +Воспользуемся идеей метода <<разделяй и властвуй>>. + +Пусть $A(x) = a_0 + \ldots + a_{n - 1}x^{n - 1}$. + +Представим $A(x) = A_l(x^2) + xA_r(x^2)$ так, что + +\begin{center} + $A_l(x^2) = a_0 + a_2x^2 + \ldots + a_{n - 2}x^{n - 2}$ + + $A_r(x^2) = a_1 + a_3x^2 + \ldots + a_{n - 1}x^{n - 2}$ +\end{center} + +\begin{Def} + Назовём \textbf{Фурье-образом} многочлена $P(x) = p_0 + \ldots + + p_{m - 1}x^{m - 1}$ вектор из $m$ элементов --- $\langle P(1), P(w_m), P(w_m^2), \ldots, P(w_m^{m - 1}) \rangle$. +\end{Def} + +Теперь рекурсивно запускаемся от многочленов меньшей степени. Так как для +любого целого неотрицательного $k$ следует, что $2k$ четное число, то $w_n^{2k} = w_{n/2}^k \in W_{n/2}$, +то есть мы можем уже использовать значения Фурье-образа для вычисления $A(x)$. + +Если мы сможем за линейное время вычислить сумму $A_l(x^2) + xA_r(x^2)$, то +суммарное время работы будет $\O(n\log n)$, так как $A_l(x), A_r(x)$ имеют степень +в 2 раза меньше, чем $A(x)$. + +Действительно это легко следует из псевдокода, который приведен ниже: + +\begin{algorithm} + \caption{FFT} + \begin{algorithmic}[1] + \Function{FFT}{$A$} \Comment{A --- массив из комплексных чисел, функция + возвращает Фурье-образ} + \Let{$n$}{length($A$)} + \If{$n = 1$} + \State{return $A$} + \EndIf + \Let{$A_l$}{$\langle a_0, a_2, \ldots, a_{n - 2}\rangle$} + \Let{$A_r$}{$\langle a_1, a_3, \ldots, a_{n - 1}\rangle$} + \Let{$\hat A_l$}{FFT($A_l$)} + \Let{$\hat A_r$}{FFT($A_r$)} + \For{$k \gets 0 \textrm{ to } \frac{n}{2} - 1$} + \Let{$\hat A[k]$}{$\hat A_l[k] + \e^{i\frac{2\pi k}{n}}\hat A_r[k]$} + \Let{$\hat A[k + \frac{n}{2}]$}{$\hat A_l[k] - \e^{i\frac{2\pi k}{n}}\hat + A_r[k]$} \Comment{Здесь минус перед комплексным числом из-за того, что мы + должны найти другой угол, + удвоенный которого на окружности будет $\frac{2\pi (k + n/2)}{n}$} + \EndFor + \State return $\hat A$ + \EndFunction + \end{algorithmic} +\end{algorithm} + +Теперь поговорим про обратное FFT. + +Фактически, мы вычислили такую вещь за $\O(n\log n)$: + + +\[ + \begin{pmatrix} + w_n^0 & w_n^0 & w_n^0 & w_n^0 & \cdots & w_n^0 \cr + w_n^0 & w_n^1 & w_n^2 & w_n^3 & \cdots & w_n^{n-1} \cr + w_n^0 & w_n^2 & w_n^4 & w_n^6 & \cdots & w_n^{2(n-1)} \cr + w_n^0 & w_n^3 & w_n^6 & w_n^9 & \cdots & w_n^{3(n-1)} \cr + \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \cr + w_n^0 & w_n^{n-1} & w_n^{2(n-1)} & w_n^{3(n-1)} & \cdots & w_n^{(n-1)(n-1)} + \end{pmatrix} + \begin{pmatrix} + a_0 \cr + a_1 \cr + a_2 \cr + a_3 \cr + \vdots \cr + a_{n-1} + \end{pmatrix} + = + \begin{pmatrix} + y_0 \cr + y_1 \cr + y_2 \cr + y_3 \cr + \vdots \cr + y_{n-1} + \end{pmatrix} +\] + +где $y_i$ --- Фурье-образ многочлена $A(x)$. + +Фактически нам надо найти обратное преобразование. Магическим образом обратная +матрица к квадратной матрице выглядит почти также: + +\[ + \frac{1}{n} + \begin{pmatrix} + w_n^0 & w_n^0 & w_n^0 & w_n^0 & \cdots & w_n^0 \cr + w_n^0 & w_n^{-1} & w_n^{-2} & w_n^{-3} & \cdots & w_n^{-(n-1)} \cr + w_n^0 & w_n^{-2} & w_n^{-4} & w_n^{-6} & \cdots & w_n^{-2(n-1)} \cr + w_n^0 & w_n^{-3} & w_n^{-6} & w_n^{-9} & \cdots & w_n^{-3(n-1)} \cr + \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \cr + w_n^0 & w_n^{-(n-1)} & w_n^{-2(n-1)} & w_n^{-3(n-1)} & \cdots & w_n^{-(n-1)(n-1)} + \end{pmatrix} +\] + + +\[ + \frac{1}{n} + \begin{pmatrix} + w_n^0 & w_n^0 & w_n^0 & w_n^0 & \cdots & w_n^0 \cr + w_n^0 & w_n^{-1} & w_n^{-2} & w_n^{-3} & \cdots & w_n^{-(n-1)} \cr + w_n^0 & w_n^{-2} & w_n^{-4} & w_n^{-6} & \cdots & w_n^{-2(n-1)} \cr + w_n^0 & w_n^{-3} & w_n^{-6} & w_n^{-9} & \cdots & w_n^{-3(n-1)} \cr + \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \cr + w_n^0 & w_n^{-(n-1)} & w_n^{-2(n-1)} & w_n^{-3(n-1)} & \cdots & w_n^{-(n-1)(n-1)} + \end{pmatrix} + \begin{pmatrix} + y_0 \cr + y_1 \cr + y_2 \cr + y_3 \cr + \vdots \cr + y_{n-1} + \end{pmatrix} + = + \begin{pmatrix} + a_0 \cr + a_1 \cr + a_2 \cr + a_3 \cr + \vdots \cr + a_{n-1} + \end{pmatrix} +\] + +Откуда получаем: $a_k = \frac{1}{n}\sum\limits_{j = 0}^{n - 1} y_jw_n^{-kj}$. + +Теперь напишем псевдокод обратного алгоритма: + +\begin{algorithm}[H] + \caption{FFT\_inverted} + \begin{algorithmic}[1] + \Function{FFT\_inverted}{$A$} \Comment{A --- Фурье-образ, возвращает коэффициенты многочлена} + \Let{$n$}{length($A$)} + \If{$n = 1$} + \State{return $A$} + \EndIf + \Let{$A_l$}{$\langle a_0, a_2, \ldots, a_{n - 2}\rangle$} + \Let{$A_r$}{$\langle a_1, a_3, \ldots, a_{n - 1}\rangle$} + \Let{$\hat A_l$}{FFT\_inverted($A_l$)} + \Let{$\hat A_r$}{FFT\_inverted($A_r$)} + \For{$k \gets 0 \textrm{ to } \frac{n}{2} - 1$} + \Let{$\hat A[k]$}{$\hat A_l[k] + \e^{i\frac{-2\pi k}{n}}\hat A_r[k]$} + \Comment{Здесь угол идёт с минусом} + \Let{$\hat A[k + \frac{n}{2}]$}{$\hat A_l[k] - \e^{i\frac{-2\pi k}{n}}\hat + A_r[k]$} + \Let{$\hat A[k]$}{$\hat A[k]/2$} \Comment{Поделим на 2 $\log n$ раз, а значит + поделим на $n$ в итоге} + \Let{$\hat A[k + \frac{n}{2}]$}{$\hat A[k + \frac{n}{2}]/2$} \Comment{Аналогично + строчке выше} + \EndFor + \State return $\hat A$ + \EndFunction + \end{algorithmic} +\end{algorithm} +\newpage + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_03_[16.09.2016].tex b/algo_pilot/book/hse_algo_pilot_03_[16.09.2016].tex new file mode 100644 index 0000000..5a947a5 --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_03_[16.09.2016].tex @@ -0,0 +1,341 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 3 от 16.09.2016. Алгоритм Карацубы, алгоритм Штрассена} + +\epigraph{<<Алгоритм Карацубы --- это верх математики. Просто +посидел, придумал, вот и кандидатская готова.>>} +{Глеб} + +\subsection{Перемножение двух длинных чисел с помощью FFT} + +Пусть $x = \overline{x_1 x_2 \ldots x_n}$ и $y = \overline{y_1 y_2 \ldots y_n}$. Распишем их умножение в столбик: +\begin{center} + \[ + \renewcommand{\arraystretch}{0.8} + \arraycolsep=1pt + \begin{array}{r} + \times\begin{array}{rrrr} + x_1 & x_2 & \ldots & x_n \\ + y_1 & y_2 & \ldots & y_n \\ + \hline + \end{array} + \\ + +\begin{array}{rrrrrrr} + & & & z_{11} & z_{12} & \ldots & z_{1n} \\ + & & z_{21} & z_{22} & \ldots & z_{2n} & \\ + & \hdotsfor{4} & & \\ + z_{n1} & z_{n2} & \ldots & z_{nn} & & & \\ + \hline + \end{array} + \\ + \begin{array}{rrrrrrrr} + z'_{1} & z'_{2} & \dots & \dots & \dots & \dots & \dots & z'_{2n}\\ + \end{array} + \end{array}\] +\end{center} + +Понятно, что наивное умножение двух длинных чисел будет иметь сложность $\O(n^2)$. + +Давайте научимся перемножать два числа быстрым преобразованием Фурье за $\O(n\log n)$. + +Пусть $a = \overline{a_{n - 1}\ldots a_0}, b = \overline{b_{n - 1}\ldots b_0}$. + +Тогда введём многочлены $f(x) = \sum\limits_{i = 0}^{n - 1} a_ix^i, +g(x) = \sum\limits_{i = 0}^{n - 1} b_ix^i$. + +За $\O(n\log n)$ мы можем найти $h(x) = f(x) \cdot g(x) = \sum\limits_{i = 0}^{2n - 2} c_i x^i$. + +После этого надо аккуратно провести переносы разрядов таким образом и после этого +развернуть полученное число, отбросив ненужные нули в начале: + +\begin{algorithm} + \caption{Умножение 2 длинных чисел.} + \begin{algorithmic}[1] + \Function{Умножение 2 длинных чисел}{$h(x)$} \Comment{$h(x)$ --- + перемножение 2 многочленов $f(x)$ и $g(x)$.} + \Let{$carry$}{0} + \For{$i \gets 0 \text{ to } 2n - 1$} + \Let{$h_i$}{$h_i + carry$} + \Let{$carry$}{$\left\lfloor\frac{h_i}{10}\right\rfloor$} + \Let{$h_i$}{$h_i \Mod 10$} + \EndFor + \EndFunction + \end{algorithmic} +\end{algorithm} + +Но этот метод плохо применим на практике из-за того, что быстрое преобразование +Фурье имеет очень большую константу в асимптотике времени работы. + +\subsection{Алгоритм Карацубы} + +Какое-то время человечество не знало алгоритмов перемножения быстрее, чем за +$\O(n^2)$. А.Н. Колмогоров считал, что это вообще невозможно. В один момент +собрались математики на мехмате МГУ и решили доказать, что это невозможно. Но +один из аспирантов (Анатолий Алексеевич Карацуба) Колмогорова пришёл и сказал, что у него получилось сделать +это быстрее. Давайте посмотрим, как: + +Будем считать, что $n = 2^k$ (если это не так, дополним нулями, сложность вырастет лишь в константу раз). + +Для начала просто попробуем воспользоваться стратегией <<Разделяй и властвуй>>. Разобьём числа в +разрядной записи пополам. Тогда +\[\begin{array}{c} +\times \begin{cases} +x = 10^{n/2}a + b\\ +y = 10^{n/2}c + d\\ +\end{cases} \\ +\Downarrow\\ +xy = 10^{n}ac + 10^{n/2}(ad+bc)+bd +\end{array}\] + +Как видно, получается 4 умножения чисел размера $\frac{n}{2}$ или $\frac{n}{2} + 1$ (оставляем читателю +на подумать, как справиться с последней ситуацией быстро). Так как сложение имеет сложность $\Theta(n)$, то + +\[T(n) = 4T\left( \frac{n}{2} \right) + \Theta(n)\] + +Чему равно $T(n)$? Если посмотреть на дерево исходов или воспользоваться +индукцией, то получим, что $T(n) = \O(n^2)$, что, конечно, +неэффективно. + +Анатолий Алексеевич проявил недюжие способности и предложил +следующее: + +\[(a+b)(c+d) = ac+(ad+bc) + bd \implies ad + bc = (a + b)(c + d) - ac - bd\] + +Подставим это в начальное выражение для $xy$: + +\[xy = 10^{n}ac + 10^{n/2}((a + b)(c + d) - ac - bd)+bd\] + +Отсюда видно, что на предыдущем уровне надо вычислить 3 умножения +чисел размера $\frac{n}{2}$ или $\frac{n}{2} + 1$ (оставляем читателю +на подумать, как справиться с последней ситуацией быстро): $(a + b)(c + d), ac$ и $bd$. Тогда: + +\[T(n) = 3T\left( \frac{n}{2} \right) + \Theta(n)\] + +Докажем, что $T(n) = \O(n^{\log_2 3})$. + +Рассмотрим дерево исходов: в каждой вершине дерева мы выполняем не более +$Cm$ действий, где $C$ ---какая-то фиксированная константа, а $m$ --- размер числа на данном шаге, поэтому + +\[ + T(n) \leqslant Cn\left(1 + \frac{3}{2} + \ldots + \frac{3^{\log_2 n}}{2^{ + \log_2 n}}\right), +\] + +так как на каждом шаге мы запускаемся три раза от задачи в два раза меньше. + +Откуда $T(n) \leqslant Cn \cdot \frac{\frac{3}{2}^{\log_2 n} - 1}{1/2} = +2Cn^{\log_2 3} = \O(n^{\log_2 3}) \approx \O(n^{1.5849})$ + +Полученный алгоритм называется \emph{алгоритмом Карацубы}. + +\subsection{Перемножение матриц. Алгоритм Штрассена} + +После идеи А.А. Карацубы, появились многие алгоритмы, использующие ту же идею. +Одним из этих алгоритмов является алгоритм Штрассена. Будем считать, что $n = +2^k$ снова (оставляем читалелю самим подумать, как дополнить матрицы $m \times t, +t \times u$, чтобы потом лекго восстановить ответ) + +Пусть у нас есть квадратные матрицы +\[A = \begin{pmatrix} +a_{11} & a_{12} & \ldots & a_{1n} \\ +a_{21} & a_{22} & \ldots & a_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +a_{n1} & a_{n2} & \ldots & a_{nn} \\ +\end{pmatrix} +\text{и } +B = \begin{pmatrix} +b_{11} & b_{12} & \ldots & b_{1n} \\ +b_{21} & b_{22} & \ldots & b_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +b_{n1} & b_{n2} & \ldots & b_{nn} \\ +\end{pmatrix}\] + +Сколько операций нужно для умножения матриц? Умножим их по определению. Матрицу +$C = AB$ заполним следующим образом: +\[c_{ij} = \sum\limits_{k = 1}^{n} a_{ik}b_{kj}\] + +Всего в матрице $n^2$ элементов. На получение каждого элемента уходит $\O(n)$ +операций (умножение за константное время и сложение $n$ элементов). Тогда +умножение требует $n^2\O(n) = \O(n^3)$ +операций. + +Попробуем применить аналогичную стратегию «Разделяй и властвуй». Представим +матрицы $A$ и $B$ в виде: + +\[A = \begin{pmatrix} +A_{11} & A_{12}\\ +A_{21} & A_{22} +\end{pmatrix} +\text{и } +B = \begin{pmatrix} +B_{11} & B_{12}\\ +B_{21} & B_{22} +\end{pmatrix}\] +где каждая матрица имеет размер $\frac{n}{2}$. Тогда матрица $C$ будет иметь вид: +\[C = \begin{pmatrix} +A_{11}B_{11}+A_{12}B_{21} & A_{11}B_{12}+A_{12}B_{22}\\ +A_{21}B_{11}+A_{22}B_{21} & A_{21}B_{12}+A_{22}B_{22} +\end{pmatrix}\] + Как видно, получаем 8 перемножений матриц порядка $\frac{n}{2}$. Тогда + +\[T(n) = 8T\left( \frac{n}{2} \right) + \O(n^2)\] + +По индукции получаем, что $T(n) = \O\left(n^{\log_{2} 8}\right) = \O(n^{3})$. + +Можно ли уменьшить число умножений до 7? \emph{Алгоритм Штрассена} утверждает, +что можно. Он предлагает ввести следующие матрицы (даже не спрашивайте, как до них дошли): + +\[\begin{cases} + M_1 = (A_{11} + A_{22})(B_{11} + B_{22}); \\ + M_2 = (A_{21} + A_{22})B_{11}; \\ + M_3 = A_{11}(B_{12} - B_{22}); \\ + M_4 = A_{22}(B_{21} + B_{11}); \\ + M_5 = (A_{11} + A_{12})B_{22}; \\ + M_6 = (A_{21} - A_{11})(B_{11} + B_{12}); \\ + M_7 = (A_{12} - A_{22})(B_{21} + B_{22}); \\ +\end{cases}\] +Тогда +\[\begin{cases} + C_1 &= M_1+M_4-M_5+M_7; \\ + C_2 &= M_3+M_5; \\ + C_3 &= M_2+M_4; \\ + C_4 &= M_1-M_2+M_3+M_6; \\ +\end{cases}\] + +Можно проверить что всё верно (оставим это как \sout{наказание} упражнение читателю). Сложность алгоритма: + +\[T(n) = 7T\left( \frac{n}{2} \right) + \O(n^2) \implies T(n) = \O\left(n^{\log_{2} 7} \right) \approx \O(n^{2.8073})\] + +Доказательство времени работы такое же, как и в алгоритме Карацубы. + +Также существует модификация алгоритма Штрассена, где используется лишь +пятнадцать +сложений матриц на каждом шаге, вместо восемнадцати предъявленных выше. + +\subsection{Эквивалентность асимптотик некоторых алгоритмов} + +\emph{Этот раздел не войдёт в экзамен.} + +Здесь мы поговорим об обращении и перемножении 2 матриц. Докажем, что асимптотики +этих алгоритмов эквивалентны. + +\begin{Theorem}[Умножение не сложнее обращения] + Если можно обратить матрицу размеров $n \times n$ за время $T(n)$, + где $T(n) = \Omega(n^2)$, и $T(3n) = \O(T(n))$ (условие регулярности), то две + матрицы размером $n \times n$ можно перемножить за время $\O(T(n))$ +\end{Theorem} + +\begin{proof} + Пусть $A$ и $B$ матрицы одного порядка размера $n \times n$. Пусть + + \[D = + \begin{pmatrix} + I_n & A & 0\\ + 0 & I_n & B\\ + 0 & 0 & I_n + \end{pmatrix}\] + + Тогда легко понять, что + \[ + D^{-1} = + \begin{pmatrix} + I_n & -A & AB\\ + 0 & I_n & -B \\ + 0 & 0 & I_n + \end{pmatrix} + \] + + Матрицу $D$ мы можем построить за $\Theta(n^2)$, которое является $\O(T(n))$, + поэтому с условием регулярности получаем, что $M(n) = \O(T(n))$, где $M(n)$ --- + асимптотика перемножения 2 матриц. +\end{proof} + +С обратной теоремой предлагаем ознакомиться в книге Кормена, Лейзерсона, +Ривеста и Штайна или в книге Ахо, Хопкрофта и Ульмана. + +% Давайте поговорим о том, что обращение матрицы не сложнее умножения. + +% Далее будем считать, что матрица $A$ имеет размеры $2^k \times 2^k = n \times n$. + +% \begin{Lemma} +% Пусть матрица $A$ разбита на 4 одинаковых матрицы так: +% \[ +% A = +% \begin{pmatrix} +% A_{11} & A_{12}\\ +% A_{21} & A_{22} +% \end{pmatrix} +% \] + +% Предположим, что существует $A_{11}^{-1}$, пусть $\Delta = A_{22} - +% A_{21}A_{11}^{-1}A_{12}$. Предположим, что $\Delta^{-1}$ существует. Тогда + +% \[ +% A^{-1} = +% \begin{pmatrix} +% A_{11}^{-1} + A_{11}^{-1}A_{12}\Delta^{-1}A_{21}A_{11}^{-1} & -A_{11}^{-1}A_{12}\Delta^{-1}\\ +% -\Delta^{-1}A_{21}A_{11}^{-1} & \Delta^{-1} +% \end{pmatrix} +% \] +% \end{Lemma} + +% \begin{proof} +% Можно убедиться в том, что такое равенство выполнено: +% \[ +% A = +% \begin{pmatrix} +% A_{11} & A_{12}\\ +% A_{21} & A_{22} +% \end{pmatrix} = +% \begin{pmatrix} +% I_{n/2} & 0\\ +% A_{21}A_{11}^{-1} & I_{n/2} +% \end{pmatrix} +% \begin{pmatrix} +% A_{11}& 0\\ +% 0 & \Delta +% \end{pmatrix} +% \begin{pmatrix} +% I_{n/2}& A_{11}^{-1}A_{12}\\ +% 0 & I_{n/2} +% \end{pmatrix} +% \] + +% Воспользуемся фактом из линейной алгебры, что $(ABC)^{-1} = C^{-1}B^{-1}A^{-1}$, откуда + +% \[ +% A^{-1} = +% \begin{pmatrix} +% I_{n/2}& -A_{11}^{-1}A_{12}\\ +% 0 & I_{n/2} +% \end{pmatrix} +% \begin{pmatrix} +% A_{11}^{-1}& 0\\ +% 0 & \Delta^{-1} +% \end{pmatrix} +% \begin{pmatrix} +% I_{n/2} & 0\\ +% -A_{21}A_{11}^{-1} & I_{n/2} +% \end{pmatrix} = +% \begin{pmatrix} +% A_{11}^{-1} + A_{11}^{-1}A_{12}\Delta^{-1}A_{21}A_{11}^{-1} & -A_{11}^{-1}A_{12}\Delta^{-1}\\ +% -\Delta^{-1}A_{21}A_{11}^{-1} & \Delta^{-1} +% \end{pmatrix} +% \] +% \end{proof} + +% \begin{Lemma} +% Если $A$ --- невырожденная верхняя треугольная матрица, то матрицы $A_{11}$ и +% $\Delta$ из Леммы 1 обратимы и являются верхними треугольными. +% \end{Lemma} + +% \begin{proof} +% Ясно, что $A_{11}$ невырожденная верхняя треугольная матрица и, значит, что +% $A_{11}^{-1}$ существует. Далее заметим, что +% \end{proof} + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_04_[20.09.2016].tex b/algo_pilot/book/hse_algo_pilot_04_[20.09.2016].tex new file mode 100644 index 0000000..35c9164 --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_04_[20.09.2016].tex @@ -0,0 +1,323 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 4 от 20.09.2016. Простейшие теоретико-числовые алгоритмы} + +Числовые алгоритмы играют огромную роль в криптографии, фактически вся криптография +держится на том, что не придуман до сих пор алгоритм, который умеет факторизовать числа за +полиномиальное время от размера числа. + +\subsection{Алгоритм Евклида} + +Начнём, пожалуй, с одного из самых известных алгоритмов нахождения наибольшего +общего делителя, а именно --- алгоритм Евклида и его расширенную версию. + +\begin{algorithm} + \caption{Алгоритм Евклида.} + \begin{algorithmic}[1] + \Function{$\gcd$}{int $a$, int $b$} + \If{$b = 0$} + \State return $a$; + \Else + \State return $\gcd(b, a \Mod b)$; + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Вспомним курс дискретной математики, и сошлёмся на то, что все умеют доказывать +корректность этого алгоритма. + +Асимптотика такого алгоритма $\O(\log n)$ (где $n = \max(a, b)$) +--- легко проверить, что каждое число уменьшается хотя бы в два раза за два шага алгоритма. + +\subsection{Расширенный алгоритм Евклида} + +Пусть даны числа $a, b, c$, мы хотим найти хотя бы одну пару решений $x, y$ таких, +что $ax + by = c$. Понятно, что $\gcd(a, b) \ | \ c$, поэтому если это условие +не выполняется, то найти решение мы не сможем. Пусть $c = k \gcd(a, b)$. Сейчас +мы предъявим хотя бы одну пару чисел $x, y$, что $ax + by = \gcd(a, b)$ --- после этого +мы просто домножим $x, y$ на $k$ и получим, что сможем представить $c$ в таком +виде. + +\begin{algorithm} + \caption{Расширенный алгоритм Евклида.} + \begin{algorithmic}[1] + \Function{extended\_$\gcd$}{int $a$, int $b$} \Comment --- возвращаем тройку чисел $(x, y, \gcd(a, b))$. + \If{$b = 0$} + \State return $(1, x', a)$; \Comment{$x'$ можно вернуть любым числом, + так как $b=0$} + \EndIf + \Let{$(x', y', d)$}{EXTENDED\_$\gcd(b, a \Mod b)$} + \State return $(y', x' - \left\lfloor\frac{a}{b}\right\rfloor y', d)$ + \EndFunction + \end{algorithmic} +\end{algorithm} + +\begin{Lemma} + Для произвольных неотрицательных чисел $a$ и $b$ $(a \geqslant b)$ расширенный +алгоритм Евклида возвращает целые числа $x, y, d$, для которых $\gcd(a, b) = d = ax + by$. +\end{Lemma} + +\begin{proof} + Если не рассматривать $x, y$ в алгоритме, то такой алгоритм полностью + повторяет обычный алгоритм Евклида. Поэтому алгоритм третьим параметром + действительно вычислит $\gcd(a, b)$. + + Для обоснования корректности возвращаемых значений $x, y$ будем вести индукцию по $b$. Если $b = 0$, тогда мы + действительно вернём верное значение. Шаг индукции: заметим, что алгоритм + находит $\gcd(a, b)$, произведя рекурсивный вызов для $(b, a \Mod b)$. + Поскольку $(a \Mod b) < b$, мы можем + воспользоваться предположением индукции и заключить, что для возвращаемых + рекурсивным вызовом чисел $x', y'$ выполняется равенство: + + \[ + \gcd(b, a \Mod b) = bx' + (a \Mod b)y' + \] + + Понятно, что $a \Mod b = a - \left\lfloor\frac{a}{b}\right\rfloor b$, поэтому + \begin{multline*} + d = \gcd(a, b) = \gcd(b, a \Mod b) = bx' + (a \Mod b)y' =\\ + = bx' + \left(a - \left\lfloor\frac{a}{b}\right\rfloor b\right)y' = + ay' + b\left(x' - \left\lfloor\frac{a}{b}\right\rfloor y'\right) + \end{multline*} +\end{proof} + +\begin{Examples} + Мы умеем с помощью расширенного алгоритма Евклида вычислять обратные остатки по + простому модулю (в поле $\mathbb{F}_p$). Действительно, если $(a, p) = 1$ то + существуют $x, y$, что $ax + py = 1$, а значит в поле $\mathbb{F}_p$ --- + $ax = 1$, откуда $x = a^{-1}$. +\end{Examples} + +\subsection{Алгоритм быстрого возведения в степень по модулю} + +Хотим вычислить $a^b \Mod p$. Основная идея в том, чтобы разложить $b$ в двоичную +систему и вычислять только $a^{2^i} \Mod p$. Здесь будем +предполагать, что операции с числами выполняются достаточно быстро. +Приведём ниже псевдокод такого алгоритма: + +\begin{algorithm} + \caption{Алгоритм быстрого возведения в степень.} + \begin{algorithmic}[1] + \Function{fast\_pow}{int $a$, int $b$, int $p$} \Comment --- возвращаем $a^b \Mod p$. + \If{$b = 0$} + \State return 1; + \EndIf + \If{$b \Mod 2 = 1$} + \State return FAST\_POW($a, b - 1, p) \cdot a \Mod p$ + \Else + \Let{$c$}{FAST\_POW($a, b/2, p$)} + \State return $c^2 \Mod p$ + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Корректность этого алгоритма следует из того, что $a^b = a^{b - 1}\cdot a$ +для нечетных $b$ и + +$a^b = a^{b/2} \cdot a^{b/2}$ для четных $b$. Также мы +здесь неявно пользуемся индукцией по $b$, в которой корректно возвращается база при $b = 0$. + +От каждого числа $b$, если оно четно, мы запускаем наш алгоритм от $b/2$, а если +оно нечетно, то от $b - 1$, откуда получаем, что количество +действий, совершенным нашим алгоритмом будет не более, чем $2\log b = \O(\log b)$. + +\begin{Commentary} + На самом деле быстрое возведение в степень работает на всех ассоциативных операциях. + Например, если вы хотите вычислить $A^n$, где $A$ --- квадратная матрица ($m \times m$), то + это можно сделать тем же самым алгоритмом + за $\O(T(m)\log n)$, где $T(m)$ асимптотика перемножения + матриц $m \times m$. +\end{Commentary} + +\subsection{Китайская теорема об остатках и вычисление решений линейных систем} + +Китайская теорема об остатках звучит так: пусть даны попарно взаимно простые +модули и числа $r_1, \ldots, r_n$. Тогда существует единственное с точностью по +модулю $a_1 \ldots a_n$ решение такой системы: + +\[ + \begin{cases} + x \equiv r_1 \pmod{a_1} \\ + x \equiv r_2 \pmod{a_2} \\ + ~~~~\vdots \\ + x \equiv r_n \pmod{a_n} \\ + \end{cases} +\] + +\begin{proof} + Докажем теорему и предъявим сразу алгоритм вычисления решения за $\O(n \log (a_1\cdot \ldots \cdot a_n))$. + + Пусть $x = \sum\limits_{i = 1}^n r_i M_i M_i^{-1}$, где $M_i = \dfrac{a_1\cdot\ldots \cdot a_n}{a_i}, + M_i^{-1}$ это обратное к $M_i$ по модулю $a_i$ (такое всегда найдётся из + попарной взаимной простоты). Прошу заметить, что такое + число мы можем вычислить за $\O(n \log (a_1\cdot \ldots \cdot a_n))$(см. пример в + расширенном алгоритме Евклида). + + Докажем, что это число подходит по любому модулю $a_i$. + \[ + x \equiv \sum\limits_{j = 1}^n r_jM_jM_j^{-1} \equiv r_iM_iM_i^{-1} \equiv r_i \pmod{a_i} + \] + Второе равенство следует из того, что $a_i \ | \ M_j$ при $j \neq i$ (из построения). + + Докажем единственность решения по модулю. Пусть $x, x'$ --- различные решения + данной системы, тогда $0<|x - x'| < a_1\cdot \ldots \cdot a_n$ и $|x - x'|$ делится + на $a_1\cdot \ldots \cdot a_n$, что невозможно, так как ни одно положительное число до + $a_1\cdot \ldots \cdot a_n$ не делится на $a_1\cdot \ldots \cdot a_n$. +\end{proof} + +\subsection{Решето Эратосфена} + +Решето Эратосфена --- это один~из первых алгоритмов в истории человечества. Он +позволяет найти все простые числа на отрезке от $[1; n]$ за $\O(n\log\log n)$, а +разложить все числа на простые множители за $\O(n\log n)$ + +В первом случае у нас задача состоит в том, чтобы вернуть 1, если число простое +и 0, если непростое. + +Предъявим ниже псевдокод такого алгоритма. + +\begin{algorithm} + \caption{Решето Эратосфена.} + \begin{algorithmic}[1] + \Function{Sieve\_of\_Eratosthenes}{int $n$} \Comment найти --- массив $prime_i$, + определяющий характеристическую функцию простых чисел от $1$ до $n$. + \For{$i \gets 1 \textbf{ to } n$} + \Let{$prime_i$}{$true$} + \EndFor + \Let{$prime_1$}{$false$} + \For{$i \gets 2 \textbf{ to } n$} + \If{$prime_i = true$} + \Let{$j$}{$2i$} + \While{$j \leqslant n$} + \Let{$prime_j$}{$false$} + \Let{$j$}{$j + i$} + \EndWhile + \EndIf + \EndFor + \EndFunction + \end{algorithmic} +\end{algorithm} + +\begin{Lemma} + Алгоритм $\mathsf{Sieve\_of\_Eratosthenes}$ корректно оставит все простые числа. +\end{Lemma} + +\begin{proof} + Докажем индукцией по $n$. База $n = 2$ очевидна. + + Переход $n \to n + 1$. Заметим, что наш алгоритм и корректно обрабатывает + первые $n$ чисел, потому что мы только расширяем область рассматриваемых чисел. + + Если $n + 1$ составное, тогда $n + 1 = p \cdot m $ для какого-то простого $p < n + 1$. + По предположению индукции, мы рассмотрим простое число $p$, то есть удалим из массива все числа, которые + кратны $p$, а значит и $n + 1$ мы пометим как составное. + + Если $n + 1$ простое, то мы не могли пометить его как составное, так как оно не делилось ни на одно простое, рассмотренное ранее. +\end{proof} + +Заметим, что алгоритм будет выполняться за время + +\[ + \sum_{\substack{p \leqslant n,\\ p \in \mathbb{P}}} \frac{n}{p}, +\] + +так как для каждого простого числа мы рассматриваем в таблице все числа, +кратные $p$. + +Можно оценить очень грубо и получим, что + +\[ + \sum_{\substack{p \leqslant n,\\ p \in \mathbb{P}}} \frac{n}{p} \leqslant + \sum_{i = 1}^{n} \frac{n}{i} \approx n\ln n + o(n) = \O(n \log n) +\] + +Но используя свойства ряда $\sum\limits_{\substack{p \leqslant n,\\ p \in \mathbb{P}}} \frac{n}{p} +\approx n\ln\ln n + o(n)$, получим, что алгоритм работает за $\O(n \log\log n)$, +но факт про асимптотику этого ряда мы оставим без доказательства. + +Если теперь первый раз, приходя в составное число в алгоритме, будем сохранять его +наименьший простой делитель, то рекурсивно мы можем разложить +число на простые множители. Общее количество простых делителей у числа не может превышать $\O(\log n)$ +(так как наименьший простой делитель это двойка), поэтому разложение +на множители будет выполняться за $\O(n \log n)$. + +\subsection{Решето Эйлера} + +Составим двусвязный список из чисел от $2$ до $n$, а также ещё массив (длины +$n$) указателей на элементы списка. + +Будем идти итеративно: первый непросмотренный номер в списке берётся как простое +число, и определяются все произведения с последующими элементами в списке (само на себя тоже умножим). Это продолжается до тех пор, пока мы +не выйдем в произведении за пределы $n$. После этого удаляются +все числа, которые мы вычислили (смотрим в массив укзателей и удаляем по указателю +за $\O(1)$). Далее заново повторяем процедуру. + +\begin{Lemma} +После $k$ шагов алгоритма останутся первые $k$ простых чисел в начале, и в списке +будут только числа взаимно простые с первыми $k$. +\end{Lemma} + +\begin{proof} + + База при $k = 1$ очевидна. Просто убираем все четные числа. + + Переход $k \to k + 1$. + + Докажем, что следующим нерассмотренным элементом списка мы возьмём $p_{k + 1}$. Действительно, простые + числа мы не выкидываем, а значит следующим шагом после $p_k$ + мы возьмём число, не большее $p_{k + 1}$, но по предположению + индукции все числа от $(p_k, p_{k + 1})$ были убраны, так как + они составные и содержат в разложении только простые меньшие $p_{k + 1}$. + + Предположим, что после ещё одного шага алгоритма у нас осталось число, кратное + $p_{k + 1}$ (и большее $p_{k + 1}$) + (все числа, делящиеся на предыдущие простые до этого были убраны). + + Тогда пусть это будет $m = p_{k + 1} \cdot a, a > 1$. Если $a$ содержит в разложении + на простые хотя бы одно число, меньшее $p_{k + 1}$, то получим противоречие, так + как все числа не взаимно простые с $p_1, \ldots, p_k$ по предположению индукции были убраны. + + Значит $a$ содержит в разложении на простые числа, не меньшие $p_{k + 1}$, а значит + $a \geqslant p_{k + 1}$ и это число ещё было в списке, значит мы это число уберем, противоречие. +\end{proof} + +Если мы вдруг на шаге алгоритма получили в умножении число, которое мы уже убрали, то +значит у этого числа есть меньший простой делитель, чем $p_{k}$, но по доказанной лемме у нас все такие числа к $k$-ому шагу +были убраны. Значит каждое составное число мы рассмотрим ровно один раз и ровно +один раз уберем за $\O(1)$. + +По лемме получаем, что в списке останутся только простые числа. + +Простые числа мы тоже рассматриваем по одному разу в нашем алгоритме, значит +общая сложность решета Эйлера будет $\O(n)$. + +\subsection{Наивная факторизация числа за $\O(\sqrt{n}\,)$} + +На данный момент не существует алгоритма факторизации числа за +полином от размера числа, а не от значения. Здесь мы рассмотрим наивный алгоритм +факторизации числа. На следующей лекции рассмотрим $\rho$-метод Полларда +({\bf UPD} так и не рассмотрели), который работает за $\O(\sqrt[4]{n}\,)$. + +Пусть $n' = n$. +Будем перебирать от $2$ до $\left\lceil \sqrt{n'} \right\rceil$ числа и пока +текущее $n$ делится на данное число, делим $n$ на это число. + +Легко показать, что делим мы только на простые числа (иначе мы поделили бы на +меньшее простое несколькими шагами раньше). + +В конце $n$ будет либо 1 (тогда факторизация удалась), либо простым. Составным +оно не может быть, иначе $n = ab, a, b > 1$ и $a, b > \left\lceil \sqrt{n'}\right\rceil$, +так как на все числа, меньшие корня, мы поделили. + +Осталось оценить, сколько операций раз мы обращаемся к циклу $while$. В нём мы делаем +суммарно не более, чем $\O(\log n + \sqrt{n}\,)$ действий, так как сумма +степеней в разложении числа не более, чем $\O(\log n)$ (см. выше). Ну а также +обращаемся по одному разу каждый шаг внешнего цикла. + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_05_[27.09.2016].tex b/algo_pilot/book/hse_algo_pilot_05_[27.09.2016].tex new file mode 100644 index 0000000..73b56f4 --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_05_[27.09.2016].tex @@ -0,0 +1,374 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 5 от 27.09.2016. RSA, продолжение некоторых теоретико-числовых +алгоритмов, некоторые комбинаторные оптимизации} +\epigraph{<<На самом деле, если этот алгоритм (разложение на простые) +придумают за полиномиальное время, можно спокойно идти и покупать +попкорн и смотреть, как рушится этот мир. +\\ +Только не забудьте перед этим снять все деньги с банковских карточек.>>} +{Глеб} + +\textit{Прим. Я в этой лекции поменял местами темы, чтобы было легче воспринимать +материал.} + +\subsection{Предисловие} + +Теория чисел с появлением алгоритмов, а особенно криптографии, приобрела новую +<<жизнь>>. Теперь простые числа, разложение на простые множители являются +важными алгоритмами даже в нашей повседневной жизни. Сначала поговорим о самих +простых числах, потом о криптографии. + +\subsection{Тест Рабина-Миллера на проверку простоты числа} + +В той же самой криптографии есть необходимость в генерировании длинных простых +чисел. Благо простые числа встречаются не так редко. Пусть +функция распределения простых чисел будет $\pi(n)$ --- количество +чисел, не б\'{о}льших $n$, которые являются простыми. Есть теорема, о которой +мы уже упоминали + +\[ + \lim\limits_{n \to +\infty} \frac{\pi(n)}{n/\ln(n)} = 1 +\] + +То есть если взять случайно $\ln(n)$ чисел до $n$, то математическое ожидание +количества простых чисел равно единице. + +Поэтому, чтобы сгенерировать большое простое число, надо уметь проверять за +полином от числа (было бы вообще прекрасно), является ли число простым. Был +найден алгоритм, который проверяет это свойство за полином от размера числа. + +Но мы рассмотрим достаточно эффективный вероятностный алгоритм проверки числа +на простоту. Вспомним малую теорему Ферма, которая нам гласит: + +\[ + a^{p - 1} \equiv 1 \Mod p \text{ для всех простых чисел $p$}. +\] + +\begin{Def} + Назовём число $n$ \textit{псевдопростым} по основанию $a$, если $(a, n) = 1$ и + $a^{n - 1} \equiv 1 \pmod n$. +\end{Def} + +Поэтому первый наш алгоритм будет такой (будем проверять нечётные $n$ и $a = 2$): + +\begin{algorithm} + \caption{Проверка на псевдопростоту по основанию $2$.} + \begin{algorithmic}[1] + \Function{Pseudoprime}{int $n$} + \If{FAST\_POW(2, $n - 1$, $n) \neq 1$} + \State return Составное \Comment{100\% составное} + \EndIf + \State return Простое \Comment{молимся и надеемся, что тут действительно простое} + \EndFunction + \end{algorithmic} +\end{algorithm} + +Но, к сожалению, существуют и составные числа, которые удовлетворяют этому +алгоритму +и нам выведется, что число простое, а, на самом деле, нет. Наименьшие из них это +$341, 561 \ldots$ и так далее. Поменять основание тоже не вариант, так как +существуют числа Кармайкла, которые псевдопростые по любому основанию. +Но было доказано, что с ростом $n$ вероятность, +что непростое число является псевдопростым стремится к 0. + +К \sout{счастью} сожалению, мы не будем доказывать вероятность ошибки этого +алгоритма (она составляет не более 0.5), поэтому если запустить этот алгоритм +$k$ раз, то вероятность ошибки будет равна $2^{-k}$. Собственно, алгоритм: + +\begin{algorithm} + \caption{Тест Миллера-Рабина, считаем, что $n - 1 = 2^t u$, где $u$ нечетно и + $t \geqslant 1$} + \begin{algorithmic}[1] + \Function{MILLER\_RABIN}{int $n$} + \Let{$a$}{random\_integer$(1, n - 1)$} + \Let{$x_0$}{FAST\_POW$(a, u, n)$} + \For{$i \gets 1 \textbf{ to } t$} + \Let{$x_i$}{$x_{i - 1}^2 \Mod n$} + \If{$x_i = 1$ и $x_{i - 1} \neq 1$ и $x_{i - 1} \neq n - 1$} + \State return Составное + \EndIf + \EndFor + \If{$x_t \neq 1$} + \State return Составное + \EndIf + \State return Простое + \EndFunction + \end{algorithmic} +\end{algorithm} + +Ясно, что этот алгоритм работает за полином от числа (при условии, что +мы умеем вычислять по модулю быстро, но это задача в листке, да и это легко +придумать без метода Ньютона, оставляю читалю это сделать). + +\begin{Lemma} + Если алгоритм как-то вышел на строчки семь или девять, то число + составное. +\end{Lemma} + +\begin{proof} + Заметим, что $x_i \equiv a^{2^i u} \Mod n$, так как $x_0 \equiv a^{u} \Mod n$ + (база индукции) и + $x_i = x_{i - 1}^2 \Mod n$ (переход индукции), а значит $x_i \equiv a^{2^{i - + 1} u} \cdot + a^{2^{i - 1} u} \equiv a^{2^{i} u} \Mod n$. + + Поэтому если $x_i = 1$ и $x_{i - 1} \neq 1$ и $x_{i - 1} \neq n - 1$, то + $n \ | \ x_{i - 1}^2 - 1$, то есть $(x_{i - 1} - 1)(x_{i - 1} + 1) = 0$ в + $\Z_n$. + То есть у нас нетривиальные делители нуля, а из курса алгебры известно, что в + поле (а при простых $n$ --- $\Z_n$ поле) их нет, поэтому перед нами составное + число. + + Если $x_t \neq 1$, то просто-напросто не выполняется малая теорема Ферма и + тогда $n$ точно составное. +\end{proof} + +\begin{Lemma} +Количество таких $a$, +на которых алгоритм выдаст <<Составное>> не меньше $\frac{n - 1}{2}$ при +составном нечетном $n$. +\end{Lemma} + +Именно этот факт мы оставим без доказательства ({\it Прим. на самом деле, он не +очень сложный, видимо, Глебу было лень}). +И именно он нам даёт ошибку не более 0.5. + +\subsection{RSA, криптография} + +Криптографическую систему с открытым ключом можно использовать для шифровки +сообщений, которыми обмениваются два партнера (Алиса и Боб), чтобы посторонние +люди (Ева в дальнейшем), даже перехватившие сообщения, +не могли его расшифровать. Также некоторая система позволяет подписывать +свои подписи. Кто угодно без труда может её проверить, но подделать никак. + +Давайте уже перейдём к обсуждению различных систем. + +Но для начала несколько определений. У Алисы есть +ключи $P_{A}, R_{A}$, у Боба $P_{B}, R_{B}$ --- +публичные и приватные соответственно (на самом деле, это функции, которые +что-то вычисляют). Алиса и Боб хранят приватные ключи у себя, +а с открытыми могут делать что угодно. Будем считать, что Алиса и Боб передают +двоичные последовательности. Также будем считать, что $M = P_{A}(R_{A}(M)) = R_{ +A}(P_{A}(M))$ и $M = P_{B}(R_{B}(M)) = R_{B}(P_{B}(M))$. Также, чтобы шифрование +имело смысл, надо, чтобы секретные ключи владельцы умели вычислять быстро, и +чтобы по открытому ключу было очень сложно вычислить обратное преобразование. +На этом и держится весь алгоритм. Рассмотрим пример: + +\begin{center} + Боб хочет отправить сообщение $M$ Алисе, зашифрованное так, чтобы для Евы оно + выглядело как ужасный набор символов: + \begin{itemize} + \item Боб получает открытый ключ Алисы $P_{A}$ любым способом. + \item Боб шифрует сообщение, которое знает только он, как $C = P_{A}(M)$. + \item Алиса, когда получает сообщение $C$, расшифровывает это сообщение с + помощью секретного ключа. + \end{itemize} +\end{center} + +Функции обратные, поэтому вычисления будут корректными. Но, к сожалению, такая +система плоха тем, что, перехватив сообщения, Ева может их подменивать. Поэтому +часто используют ещё и цифровые подписи: + +\begin{center} +Пусть Алиса хочет отправить сообщение $M'$ Бобу: + \begin{itemize} + \item Алиса вычисляет свою подпись с помощью своего секретного ключа. + $\sigma = R_{A}(M')$. + \item Алиса отправляет пару Бобу $(M', \sigma)$. + \item Боб может легко убедиться, что это действительно Алиса, с помощью + открытого ключа, вычислив $P_{A}(\sigma)$ и сравнив с $M'$. + \end{itemize} +\end{center} + +В данном случае никакая Ева не страшна в подмене сообщения, так как она не может +вычислить $R_{A}(M')$ ни для какого $M'$. + +Такие подписи позволяют проверять целостность сообщений. Но всё равно есть +проблема --- Ева знает содержания сообщений. Можно взять ещё один ключ, который +шифрует по первой схеме сообщения, которые мы передаём по второй схеме. И тогда +Ева, даже получив перехваченное сообщение, во-первых, не сможет понять, какой +парой оно было зашифровано, то есть дешифровка невозможна за разумное время, +да и подмена тоже, так как к сообщению применяется сложный ключ. + +Проблема остаётся одна --- что Алиса и Боб должны обменяться ключами, чтобы +Ева не могла подменить открытые ключи. Но, к сожалению, невозможно спрятаться +от Евы, если быть совсем параноиком. Она всегда может подменять вам ключи, где +бы вы ни находились. Поэтому факт личной встречи должен быть. И самая большая +<> состоит именно в том, что Ева внедряется работать к Алисе, +чтобы разузнать, а то и подменять ключи для Боба. + +Давайте уже, наконец-то поговорим о способах шифрования: + +\begin{itemize} + \item Самая старая система --- это шифр Цезаря. Она просто переставляет по циклу + символы в алфавите, что, конечно же, ломается за $\O(k)$, где $k$ --- размер + алфавита. + \item Взять рандомную перестановку алфавита. Да, задача уже сложнее, но + если это какой-нибудь язык, то можно из статистических параметров + восстанавливать символы, что значительно сократит перебор. Не годится. + \item Например, выравнивать двоичные сообщения и брать рандомную перестановку, + применяя её ко всем сообщениям. Тогда нетрудно убедиться, что за $\O(\log n)$ + действий мы сможем понять, какой символ, где стоит. Просто смотреть, куда + переходят единицы и нули. На непонятных рандомных сообщениях математическое + ожидание того, чтобы разобрать, где что стоит, будет $\O(\log n)$. +\end{itemize} + +Все примеры сверху так или иначе зависят от человеческого фактора или +для них легко подобрать обратную функцию. Рассмотрим криптографическую систему +RSA (Rivest--Shamir--Adleman public-key cryptosystem). + +\begin{itemize} + \item[1.] Случайным образом выбираются два больших простых числа $p \neq q$. Мы + уже обсудили выше, что это сделать легко достаточно. + \item[2.] Вычисляется $n = pq$ (что можно сделать тоже не очень сложно + алгоритмом Карацубы или преобразованием Фурье). + \item[3.] Выбирается маленькое нечетное число $e$, взаимно простое с + $\varphi(n) = (p - 1)(q - 1)$ (разложение $\varphi(n)$ такое из-за мультипликативности). + \item[4.] Вычисляем число $d = e^{-1} \Mod \varphi(n)$. Это можно сделать + расширенным алгоритмом Евклида. + \item[5.] Пара $P = (e, n)$ будет открытым ключом. + \item[6.] Пара $S = (d, n)$ закрытым. +\end{itemize} + +Теперь в качестве сообщения мы передаём сообщение $P(M) = M^{e} \Mod n$. + +Обратное шифрование будет равно $S(C) = C^{d} \Mod n$. + +Аналогично, ясно, что это шифрование работает за полином от длины числа, так +как все операции мы умеем делать за полином от длины числа. + +\begin{Lemma}[Корректность RSA] + Докажем, что $P(M)$ и $S(C)$ взаимно обратные функции. +\end{Lemma} +\begin{proof} + Видно, что $P(S(M)) = S(P(M)) = M^{ed} \Mod n$. + + Так как $e, d$ взаимно обратные по модулю $\varphi(n)$, то $ed = 1 + k(p - 1)(q - 1)$ + + \[ + M^{ed} \equiv M^{1 + k(p - 1)(q - 1)} \equiv M \cdot M^{k(q - 1)\varphi(p)} + \Mod p + \] + + \[ + M^{ed} \equiv M^{1 + k(p - 1)(q - 1)} \equiv M \cdot M^{k(p - 1)\varphi(q)} + \Mod q + \] + + Малая теорема Ферма имеет очень простое следствие, что для любых чисел + $M^{p} \equiv M \Mod p$ (предлагается это доказать самостоятельно). + Поэтому в обоих равенствах в арифметике это просто эквивалентно $M$, то есть + + \[ + M^{ed} \equiv M \Mod p \text{ и } M^{ed} \equiv M \Mod q + \] + + А значит по легкому следствию из основной теоремы арифметики + $M^{ed} \equiv M \Mod n$. +\end{proof} + +Основная сложность в том, что зная $n, e, M^{e} \Mod n$ практически невозможно +найти $M$. Перебрать все $M$ может занять экспоненциальную сложность, а +разложение на множители $n$ и вычисление $d$ +оказалось очень сложной задачей, которая пока не решается за полиномиальное +время. + +{\bf Байка от Глебаса:} + На самом деле вся теория по шифрованию в интернете появилась лет 5-6 назад. + Раньше кто угодно мог перехватывать сообщения вашей почты, платить в интернете + было опасно (если вообще можно было). + Я только однажды покупал что-то не через безопасное соединение + в интернете. Я очень хотел ту пиццу, мне было без разницы тогда на + безопасность. + + +\subsection{Комбинаторные оптимизации} + +\subsection{Метод имитации отжига} + +Этот метод пришёл из физики, основная его идея заключается +в том, чтобы вероятностно менять решения с <<понижающейся>> +температурой $T$. Давайте чуть подробнее: + +\begin{itemize} + \item Сравниваем текущее значение $S_*$ с наилучшим найденным ($S$). + Если нашли лучше, меняем глобально наилучшее. + \item Если наше состояние хуже, на самом деле, нам есть + смысл менять на это состояние, только уже с какой-то + вероятностью, которая зависит от температуры и, собственно, + от значений. Обычно берут вероятность такой: + \[ + p = \exp\left\{\frac{S_* - S}{T}\right\} \text{подойдёт для задачи максимизации.} + \] + \item После этого, если мы приняли новое состояние, + понижаем температуру и идём в начало алгоритма, иначе генерируем + новое $S_*$ и делаем так, пока не примется новое состояние. + \item Когда температура становится близкой к 0, нужно выйти + из программы. +\end{itemize} + +В итоге, данный алгоритм способен решать многие сложные задачи комбинаторных +оптимизаций, но при этом работать он будет довольно-таки быстро, +в силу превосходства своей эффективности над полиномиальными аналогами. + +\subsection{Генетический алгоритм} + +Генетический алгоритм позволяет решать некоторые трудные задачи методом ошибок +за разумное время. + +Есть несколько фаз алгоритма: + +\begin{itemize} + \item {\bf Создание популяции.} Обычно это какие-то рандомные решение нашей + задачи, которые могут иметь много ошибок. + \item {\bf Размножение.} Тут всё как у людей. Мы скрещиваем некоторые особи + (обычно сильные особи) вместе, чтобы получить лучшее поколение. + \item {\bf Мутация.} Тут природа говорит, что мутации иногда хорошо влияют + на организмы. Мы просто берем некоторые особи и мутируем их с помощью + какого-то заранее определенного алгоритма. Да, могут получиться плохие + особи, но есть вероятность, что получатся хорошие. + \item {\bf Отбор.} Мы отбираем самых лучших, те, кто пойдут дальше повторять + этот процесс. +\end{itemize} + +Иногда такой алгоритм приносит правильные решения. + +{\it Далее материала не было на лекции.} + +Приведём пример работы генетического алгоритма в задаче о правильной +расстановке ферзей. + +Берем какую-нибудь перестановку, что в строках и столбцах ровно по 1 ферзю. +Генерируем, например, 100 таких перестановок. + +Потом считаем количество ошибок, то есть количество пар, которые бьют друг +друга (это можно сделать за $\O(n)$, пройдясь по диагоналям). + +После этого выбираем хороших особей --- примерно половину, у которых ошибок +меньше всего. Берем любые 2, смотрим, какие элементы у них совпадают, оставляем +их в предположении, что они являются <<сильными>> генами, а остальное всё +перемешиваем между собой. Так делаем с каким-то количеством пар, потом +выбираем, например, одну особь, мутируем её --- меняем 2 любых элемента местами. + +И это должно работать достаточно быстро. Для $n = 200$, скажем, такой +алгоритм может приносить успех. + +Опять же считаем количество ошибок и выбираем лучших 100. Повторяем алгоритм, +пока не найдём нужное решение. + +Генетический алгоритм ничего не доказывает, он лишь может работать как природа. +Мы можем находить какие-то хорошие решение с его помощью за более разумное время. + +{\bf Байка от Глебаса:} + В конце 40-ых годов появилась компания RAND, которая одна из первых вообще + придумала работать со случайными числами ({\it Прим. и даже сгенерировала + огромный список случайных цифр}). Вообще, это была первая компания, которая + моделировала процессы с помощью случайных чисел. + + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_06_[30.09.2016].tex b/algo_pilot/book/hse_algo_pilot_06_[30.09.2016].tex new file mode 100644 index 0000000..f43a02e --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_06_[30.09.2016].tex @@ -0,0 +1,381 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 6 от 30.09.2016. Разбор некоторых интересных +задач по матроидам} + +\textit{Здесь мы разберем три важных задачи, две из которых, скорее всего Глеб включит +куда-нибудь (экзамен или что-то такое)}. + +Я везде отождествляю элементы как одноэлементные множества. + +\subsection{Матроид паросочетаний} + +\begin{Lemma} + Пара $\langle V, I\rangle$, где $V$ --- множество вершин + некоторого графа $G = (V, E)$, и $B \in I$, если существует + паросочетание, покрывающее множество $B$, является матроидом. Также его называют + матроидом паросочетаний. +\end{Lemma} + +\begin{proof} + Первые два свойства матроида и правда ясны без объяснения (проделайте сами). + + Будем доказывать третье свойство. + + Давайте возьмём два множества вершин $B_1, B_2 \in I$ такие, что $|B_1| < |B_2|$. + + Пусть $X_1, X_2$ --- паросочетания, насыщающие $B_1$ и $B_2$ + соответственно. + + Есть два случая: + + 1. Если существует элемент $x \in B_2 \setminus B_1$, насыщенный в $X_1$, то всё + отлично, так как $X_1$ насыщает $B_1 \cup x$ + + 2. Теперь мы предполагаем, что все $x \in B_2 \setminus B_1$ не задействованы + в вершинах в $X_1$. Рассмотрим подграф $G' = X_1 \triangle X_2$ --- + симметрическая разность ребер. Теперь степень каждой вершины не более двух, поэтому + наш граф разбивается на циклы и цепочки, притом в циклах идёт чередование ребер, + в цепочках тоже. + + Ясно, что в каждой цепи концевые вершины будут в одном паросочении не насыщены, так + как иначе будет + четное число ребер, содержащую данную вершину в $G'$, значит это не конец пути. + + Так как ни одна вершина из $B_2 \setminus B_1$ (а их там хотя бы 1) не насыщена + первым паросочетанием, то эти вершины могут быть только концами путей. + + Докажем, что $|B_2 \setminus B_1| > |B_1 \setminus B_2|$. Пусть $|B_1 \cap B_2| + = \alpha$, тогда $|B_2 \setminus B_1| = |B_2| - \alpha, |B_1 \setminus B_2| = + |B_1| - \alpha$, так как из каждого множества мы убираем только элементы из + пересечения, откуда $|B_2 \setminus B_1| > |B_1 \setminus B_2|$. + + Так как $|B_2 \setminus B_1| > |B_1 \setminus B_2|$, то существует путь $P$ (не + цикл), + начинающаяся в $B_2 \setminus B_1$ и заканчивающаяся {\bf не} в $B_1 \setminus + B_2$. Заканчиваться путь в $B_1 \cap B_2$ не может, так как в этом множестве все + вершины имеют четную степень в $G'$, значит этот путь заканчивается вне $B_1$. + + Докажем, что $X_1 \triangle P$ будет паросочетанием, насыщающим + $B_1 \cup v_{start}$, где $v_{start} \in B_2 \setminus B_1$ и начинает путь + $P$ с одного из концов. Фактически мы написали, что мы поменяем цвета этих + рёбер, то есть те рёбра, которые были в $X_1 \cap P$, больше не ребра паросочетания, + а ребра из $X_2$ на этом пути будут теперь рёбрами $X_1 \triangle P$. Все вершины из + $B_1$, + лежащие внутри пути (не на концах) останутся быть вершинами паросочетания + $X_1 \triangle P$. Единственная проблема может возникнуть с концами --- $v_{start}$: + теперь вершина паросочетания $X_1 \triangle P$, а другой конец не входил в $B_1$, + значит даже если там не берется ребро, то ничего страшного, эта вершина нам и не + нужна была. +\end{proof} + +\subsection{Worst-out Greedy} + +\begin{Lemma}[Worst-out Greedy] + Пусть дан некоторый матроид $M = \langle M \rangle$, элементам присвоены + некоторые стоимости $c(w)$, причём элементы $w_1, \ldots, w_n$ упорядочены + так, что $0 \leqslant c(w_1) \leqslant \ldots \leqslant c(w_n)$. Рассмотрим + следующий жадный алгоритм: + + \begin{algorithm} + \caption{Worst-out greedy} + \begin{algorithmic}[1] + \Let{$F$}{$X$} + \For {$i \gets 1 \textbf{ to } n$} + \If{$F \setminus w_i$ содержит базу} + \Let{$F$}{$F \setminus w_i$} + \EndIf + \EndFor + \end{algorithmic} +\end{algorithm} + +Тогда такой алгоритм строит базу максимального веса. +\end{Lemma} + + Введем понятие {\it двойственного матроида}. + +{\it Двойственный матроид} к $M = \langle X, I \rangle$ это матроид $M^* = +\langle X, I^*\rangle$, где $I^* = \{A \ | \ \exists \ B \in \mathfrak{B} : A +\cap B = \varnothing\}$. + +Докажем, что это матроид: + +\begin{proof} + +Проверим все 3 свойства. + +1. Пустое множество лежит в этом множестве. + +2. Пусть $A_1 \subseteq A_2$ и $A_2 \in I^*$, тогда $A_2 \cap B = \varnothing$, +тогда $A_1 \cap B = \varnothing$, так как подмножество пустого множества будет +пустым. + +3. Возьмём произвольные $A_1, A_2$ такие, что $|A_1| < |A_2|$. Из определения +следует, что $X \setminus A_2$ сожержит какую-то базу --- пусть это будет база +$B$. Мы знаем, что $B \setminus A_1 \subseteq X \setminus A_1$, так как $B \subseteq X$. + +Также пусть $B_1' \subseteq X \setminus A_1$ --- та база, которая содержится в +дополнении $A_1$. + +Рассмотрим множества $B \setminus A_1$ и $B_1'$. Будем дополнять по третьей аксиоме +матроида $M$ первое множество, пока оно не станет базой. Пусть мы в итоге +получили $B' = B \setminus A_1 \cup \{x_1, \ldots, x_{|A_1|}\}$. Мы получили +множество $B'$, которое является базой, содержит $B \setminus A_1$ и содержится +в $X \setminus A_1$, так как мы добавляли элементы только из $B_1'$, а $B_1' \subseteq X \setminus A_1$. + +Отлично, мы нашли базу $B'$, такую что $B \setminus A_1\subseteq B' \subseteq X \setminus A_1$. + +Предположим, что $A_2 \setminus A_1 \subseteq B'$. + +Также нам понадобится факт $B \cap A_1 \subseteq A_1 \setminus A_2$, который +объясняется тем, что $B$ не имеет общих элементов с $A_2$ по определению. + +Теперь выпишем цепочку неравенств и равенств и докажем каждое из них поочереди. + +$|B| = |B \cap A_1| + |B \setminus A_1|$ --- простое свойство из теории множеств +(это просто все элементы лежащие в $B$ и в первом случае и в $A_1$, а во втором не в $A_1$). + +$|B \cap A_1| + |B \setminus A_1| \leqslant |A_1 \setminus A_2| + |B \setminus A_1|$ --- +см. свойство выше. + +$|A_1 \setminus A_2| + |B \setminus A_1| < |A_2 \setminus A_1| + |B \setminus A_1|$ --- +так как $|A_1 \setminus A_2|<|A_2 \setminus A_1|$, так как $|A_2| > |A_1|$ (см. факт +из первой леммы). + +$|A_2 \setminus A_1| + |B \setminus A_1| \leqslant |B'|$ --- это +действительно верно, так как два +множества слева под модулями не пересекаются (так как $B$ и $A_2$ не пересекаются). +И каждое из этих множеств является подмножеством $B'$ (первое по предположению, второе +доказано выше). + +Откуда $|B| < |B'|$, что неверно, так как все базы равномощны между собой. + +Значит, $A_2 \setminus A_1 \not\subseteq B'$, откуда существует элемент $z \in +A_2 \setminus A_1$ такой, что $z \not\in B'$, откуда + +\noindent$(A_1 \cup z) \cap B' = \varnothing$, +что нам и требуется. + +\end{proof} + +Теперь перейдём к доказательству леммы. + +\begin{proof} + +{\bf Свойство двойственности баз.} + +Понятно, что база матроида $M^*$ будет дополнением всех элементов из базы $\mathfrak{B}$, +потому что для каждого дополнения существует база, с которой он пересекается по +пустому множеству. И если существует множество из $I^*$, которое по мощности +больше, чем мощность дополнения любого элемента из $\mathfrak{B}$, то такое +множество по принципу Дирихле пересекается со всеми элементами $\mathfrak{B}$, +а значит это множество не лежит в $I^*$. И если есть элемент базы $M^*$, который является недополнением +какого-то +элемента из базы $\mathfrak{B}$, то такое множество тоже пересекается со всеми +базами, так как базы имеют одинаковую мощность в обоих случаях. + +Теперь чуточку перепишем алгоритм, данный в лемме. + +\begin{algorithm} + \caption{Модификация алгоритма на матроиде $M^*$(именно на двойственном)} + \begin{algorithmic}[1] + \Let{$F^*$}{$\varnothing$} + \For {$i \gets 1 \textbf{ to } n$} + \If{$F^* \cup w_i \in I^*$} + \Let{$F^*$}{$F^* \cup w_i$} + \EndIf + \EndFor + \end{algorithmic} +\end{algorithm} + +Заметим, что этот алгоритм возьмёт все те и только те элементы, которые алгоритм +из леммы выкинет. Докажем это по индукции: + +Утверждение. На каждом шаге $i$ от 0 до $n$ выполняется $F^* \cup F = X, F \cap +F^* = \varnothing$. + +База $i = 0$. На нулевом шаге у нас $F^* \cup F = X, F^* \cap F = \varnothing$. + +Переход $i - 1 \to i$: + +Если $F$ выкидывает $w_i$, то существует база $B_i$ такая, что $B_i +\subseteq F \setminus w_i$. А значит, в двойственном матроиде $F^* \cup w_i \subseteq +X \setminus B_i$ (здесь мы пользуемся предположением индукции), то есть $F^* +\cup w_i$ является подмножеством какой-то базы +матроида $M^*$, а значит $F^* \cup w_i \in I^*$. Это всё следует из свойств, +которые мы доказывали выше. В обратную сторону аналогично: если $w_i$ добавляется +к $F^*$, то и $F$ выкинет $w_i$. Переход доказан. + +В первой лекции было, что алгоритм из решения приносит максимальную сумму, если веса +расположены в невозрастающем порядке. {\bf Дословно} переносятся все утверждения, +когда порядок неубывающий, только в итоге мы получим минимальную сумму множества. + +Поэтому мы получили множество $F^*$, которое набрало минимальную сумму. Следовательно +$F$ наберет максимальную, так как $F \cup F^* = X, F \cap F^* = \varnothing$, откуда +$c(F) + c(F^*) = c(X)$, а значит $c(F)$ набирает максимум. Так как $F^*$ +будет элементом базы (из следствия на первой лекции) в матроиде $M^*$, то и $F$ будет +элементом базы в $M$ из-за +свойства двойственности баз (см. выше). +\end{proof} + + +\subsection{Лемма об обмене} + +\begin{Lemma}[Лемма об обмене] + Пусть имеются 2 базы $B_1, B_2$, тогда $\forall \ x \in B_1 \setminus B_2 + \ \exists \ y \in B_2 \setminus B_1$, такие, что $(B_1 \setminus x) \cup y \in I$ и + $(B_2 \setminus y) \cup x \in I$. +\end{Lemma} + +Здесь у нас будет матроид $M = \langle S, I \rangle$ + +Введем понятие {\it цикла}. {\it Цикл} --- это наименьшее по включению зависимое +множество, то есть все собственные подмножества цикла принадлежат $I$. + +Все ссылки на леммы, которые я делаю в этой теореме, это ссылки +на леммы <<задачи>>. + +Докажем такие леммы: + +{\bf Лемма задачи 1.} {\it $r(A) + r(B) \geqslant r(A \cup B) + r(A \cap B)$.} + +\begin{proof} + Пусть $X$ максимальное независимое подмножество $A \cap B$. Возьмём $Y'$ --- + максимальное независимое множество $A \cup B$. Заметим, что $|X| \leqslant + |Y'|$, поэтому будем по третьей аксиоме матроидов добавлять к $X$ элементы из $Y' + \setminus X$. Получим максимальное независимое подмножество $A \cup B$, которое + содержит $X$. Пусть это подмножество будет $Y \Rightarrow X \subseteq Y$. + + Разделим $Y$ на 3 категории множеств --- $Y = X \cup V \cup W$ так, что + $V \subseteq A \setminus B, W \subseteq B \setminus A$. Так и будет, потому + что из пересечения мы не могли добавить к $X$ больше элементов, иначе $X$ был + бы не максимальным по включению. + + Получаем, что $X \cup V$ --- независимо в $A$ (аксиома два), аналогично $X \cup W$ + независимо в $B$, откуда $r(A) \geqslant |X \cup V|, r(B) \geqslant |X \cup W|$. + + Откуда $r(A) + r(B) \geqslant |X \cup V| + |X \cup W| = |X| + |X| + |W| + |V| = + r(A \cup B) + r(A \cap B)$. +\end{proof} + +{\bf Лемма задачи 2.} {\it Пусть $C_1, C_2$ --- различные циклы одного матроида и $x \in +C_1 \cap C_2$. Тогда существует цикл $C_3 \subseteq (C_1 \cup C_2) \setminus x$.} + +\begin{proof} + Покажем, что $r(C') < |C'|$, где $C' = (C_1 \cup C_2) \setminus x$. + + Так как $C_1, C_2$ --- различные циклы, то $C_1 \cap C_2$ является собственным + подмножеством $C_1$, то есть $r(C_1 \cap C_2) = |C_1 \cap C_2|$. + + Также мы знаем, что $r(C_1) = |C_1| - 1, r(C_2) = |C_2| - 1$, так как это циклы. + + По лемме 1 получаем + + \[ + r(C_1 \cup C_2) \leqslant r(C_1) + r(C_2) - r(C_1 \cap C_2) = |C_1| + |C_2|- + |C_1 \cap C_2| - 2 = |C_1 \cup C_2| - 2 < |C'| + \] + + Также мы знаем, что $r(C') \leqslant r(C_1 \cup C_2)$, так как $C' \subseteq + C_1 \cup C_2$. + + Откуда $r(C') < |C'|$. Значит существует цикл в таком множестве. +\end{proof} + +{\bf Лемма задачи 3.} {\it Если $A$ независимое множество, а $x \in S$, тогда $A \cup x$ +содержит не более одного цикла.} + +\begin{proof} + Пусть есть 2 различных цикла $C_1, C_2 \subseteq (A \cup x)$. Они оба содержат + $x$, иначе они независимы. + + Рассмотрим множество $(C_1 \cup C_2) \setminus x$. По лемме 2 в этом множестве + есть цикл, а значит $(C_1 \cup C_2) \setminus x$ зависимо. Но $(C_1 \cup C_2) + \setminus x \subseteq A$, что противоречит независимости $A$. +\end{proof} + +Также введём ещё понятие для любого подмножества $A \subseteq S$~--- +$span(A) = \{s \in S : r(A \cup s) = r(S)\}$. Тривиально, что $A \subseteq span(A)$. + +{\bf Лемма задачи 4.} a) Если $A \subseteq B$, то $span(A) \subseteq span(B)$ + +b) Если $e \in span(A)$, то $span(A \cup e) = span(A)$. + +\begin{proof} + a) Пусть $e \in span(A)$. Если $e \in B$, то отсюда сразу следует, что $e \in + span(B)$ (см. тривиальное свойство). По лемме 1 следует, что + $r(A \cup e) + r(B) \geqslant r((A \cup e) \cap B) + r((A \cup e) \cup B)$ + + Откуда сразу следует, что + $r(A \cup e) + r(B) \geqslant r(A) + r(B \cup e)$, так как $e \not\in B$, поэтому + $(A \cup e) \cap B = A, (A \cup e) \cup B = B \cup e$. Из определения следует, + что $r(A \cup e) = r(A)$, значит + + $r(B) \geqslant r(B \cup e)$, но мы знаем, что все независимые подмножества $B$ + являются независимыми множествами $B \cup e$, значит в другую сторону + неравенство выполняется очевидно. + + Поэтому $r(B) = r(B \cup e)$, откуда $e \in span(B)$. + + b) Из пункта a) следует, что $span(A) \subseteq span(A \cup e)$. Поэтому нам + надо доказать для каждого $f \in span(A \cup e)$, что оно лежит в $span(A)$. + Опять воспользуемся леммой 1: + + $r(A \cup e) + r(A \cup f) \geqslant r((A \cup e) \cap (A \cup f)) + r(A \cup e \cup A \cup f)$ + + Случай $e = f$ очевиден, пусть $e \neq f$. + + Тогда + + $r(A \cup e) + r(A \cup f) \geqslant r(A) + r(A \cup e \cup f)$ + + $r(A \cup e) = r(A)$ по определению. Значит + + $r(A \cup f) \geqslant r(A \cup e \cup f)$ откуда аналогично следует, что + $r(A \cup f) = r(A \cup e \cup f)$. + + Откуда $e \in span(A \cup f)$, но $e \in span(A)$ и $f \in span(A \cup e)$, значит + $r(A) = r(A \cup e) = r(A \cup e \cup f) = r(A \cup f)$ --- последнее + равенство следует из выше доказанного. Поэтому $f \in span(A)$, что и требовалось. +\end{proof} + +{\bf Доказательство леммы.} +\begin{proof} + +Пусть $x \in B_1 \setminus B_2$, тогда $B_2 \cup x$ содержит ровно один цикл по +лемме 3 (так как $B_2$ независимо, а $B_2 \cup x$ зависимо). Пусть этот цикл +будет $C$. Мы знаем, что $x \in span(C \setminus x)$, так как добавление не +меняет ранг. Поэтому $x \in span((B_1 \cup C) \setminus x)$ (см. лемма 4а). По +лемме 4b следует, что +$span((B_1 \cup C) \setminus x) = span(B_1 \cup C) = S$, так как $B_1$ является +базой. Получается, что какой-бы элемент к максимально независимому множеству +в $(B_1 \cup C) \setminus x$ ни добавляй, получим, что ранг меняться не будет. +Это возможно только если $r((B_1 \cup C) \setminus x) = |B_1|$, иначе мы могли +бы получить противоречие с аксиомой 3 матроидов. + +Пусть $B'$ --- база, содержащаяся в $(B_1 \cup C) \setminus x$. + +По аксиоме 3 (для $B_1 \setminus x$ и $B'$) в $B' \setminus (B_1 \setminus x)$ существует $y$, что +$(B_1 \setminus x) \cup y$ --- база. + +$B' \setminus (B_1 \setminus x) \subseteq ((B_1 \cup C) \setminus x) \setminus +(B_1 \setminus x)$ (см. 2 абзаца выше). + +$((B_1 \cup C) \setminus x) \setminus (B_1 \setminus x) \subseteq C \setminus x$ +--- легко проверяется кругами Эйлера. То есть $y \in C \setminus x$. Но $C +\subseteq (B_2 \cup x)$, поэтому $C \setminus x \subseteq B_2$. Значит $y \in B_2$, +значит $y \in B_2 \setminus B_1$ (см. выше, почему $y \not\in B_1$). Также важно +отметить, что $x \neq y$, так как $B' \subseteq (B_1 \cup C)\setminus x$. + +Докажем, что $(B_2 \setminus y) \cup x$ --- тоже база. Допустим, что это не так. +Тогда существует цикл +$C' \subseteq (B_2 \setminus y) \cup x \subseteq B_2 \cup x$. Причем $C' \neq C$, +так как $y \in C$ (см. выше), но $y \not\in C'$. Значит у $B_2 \cup x$ существовало 2 различных цикла, +что невозможно по лемме 3. Что и завершает наше доказательство. +\end{proof} + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_07_[04.10.2016].tex b/algo_pilot/book/hse_algo_pilot_07_[04.10.2016].tex new file mode 100644 index 0000000..10abd85 --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_07_[04.10.2016].tex @@ -0,0 +1,288 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 7 от 04.10.2016. Венгерский алгоритм решения задачи о назначениях} + +\subsection{Формальная постановка задачи} +Оригинальная постановка задачи о назначениях +выгдядит так: нам дана матрица $n \times n$ + +\[ + \begin{pmatrix} + a_{11} & \cdots & a_{1n} \cr + \vdots & \ddots & \vdots \cr + a_{n1} & \cdots & a_{nn} + \end{pmatrix}, +\] + +где строки отвечают за работников, которые требуют определенную сумму за то +или иное задание (столбцы). + +Требуется найти такую перестановку $p(i)$, что $\sum\limits_{i = 1}^{n} +a_{ip(i)} \to \min.$ Обозначим эту задачу за $A'$. + +\subsection{Немного линейного программирования} + +Выпишем задачу линейного программирования (назовём её $B'$). + +\begin{align*} + \sum\limits_{i = 1}^n \sum\limits_{j = 1}^n a_{ij}x_{ij} \to & \min\\ + \forall i \in \overline{1\ldots n} \implies \sum\limits_{j = 1}^n x_{ij} &= 1,\\ + \forall j \in \overline{1\ldots n} \implies \sum\limits_{i = 1}^n x_{ij} &= 1,\\ + x_{ij} &\geqslant 0. +\end{align*} + +Ясно, что если есть решение задачи $A'$, то оно является каким-то решением задачи $B'$, +так как мы в каждой строке и столбце у нас ровно одно $x_{ij} = 1$, поэтому +все такие решения подойдут под $B'$. Значит решение задачи $B'$ не хуже, чем у +$A'$. Выпишем этой задаче двойственную (что, конечно же, было проделано +много раз на курсе дискретной математики). Двойственные переменные $u_i$ отвечают +за строки, $v_i$ за столбцы. Напомним пару двойственных задач: + +\[ + \begin{cases} + cx \to \max\\ + Ax \leqslant b. + \end{cases} + \text{ двойственна } + \begin{cases} + yb \to \min\\ + yA = c,\\ + y \geqslant 0. + \end{cases} +\] + +Поэтому двойственная к $B'$ будет + +\begin{align*} + \sum\limits_{i = 1}^n u_i + \sum\limits_{j = 1}^n v_j \to &\max\\ + \forall i, j \in \overline{1\ldots n} \implies u_i + v_j \leqslant a_{ij}. +\end{align*} + +Это действительно так, потому что в строках матрицы $A$ задачи $B'$ будет лишь +2 элемента --- отвечающее за строку и столбец, в котором переменная $x_{ij}$ +находится. + +Обозначим эту задачу за $C'$. + +Как мы знаем из курса дискретной математики, двойственная и прямая задачи +имеют одно и то же оптимальное значение, поэтому оптимальные значения $B'$ и $C'$ +совпадают. Также легко убедиться, что каждая задача имеет хоть какое-то +решение. + +Заметим, что любое решение задачи $A'$ является решением задачи $C'$. Действительно, + +\begin{equation}\label{main} + \sum\limits_{i = 1}^n a_{ip(i)} \geqslant \sum\limits_{i = 1}^n u_i + v_{p(i)} = + \sum\limits_{i = 1}^n u_i + \sum\limits_{j = 1}^n v_j. +\end{equation} + +То есть любое допустимая перестановка не меньше, чем любое значение целевой +функции задачи $C'$, поэтому если мы предъявим хоть какое-то решение, что +значение целевой функции задачи $C'$ совпадает с каким-то из задачи $A'$, то мы найдём +оптимальное решение (достигается равенство выше). И тогда все оптимальные решения +задач $A', B', C'$ совпадают. Предъявим конструктивно алгоритм построения решения +$C'$. + +\subsection{Венгерский алгоритм} + +Нарисуем двудольный граф, где левая доля отвечает переменным $u_i$, правая +за $v_j$. + +\begin{Def} + Назовём ребро $(i, j)$ \textbf{жёстким}, если $u_i + v_j = a_{ij}$. +\end{Def} + +Заметим, что если мы найдём совершенное паросочетание на жёстких ребрах, то +мы найдём какую-то перестановку $p(i)$, тогда мы найдём какое-то решение, где +$u_i + v_{p(i)}$ будет входить в сумму целевой функции, как $a_{ip(i)}$, а значит +мы найдём какое-то решение задачи $A'$. Поэтому надо всего лишь <<подвигать +значения переменных>>, чтобы получить совершенное паросочетание на жёстких ребрах. + +Мы будем пытаться добавлять вершины левой доли по одной на каждом шаге, в предположении, +что на предыдущих шагах мы смогли всё добавить. Пусть мы добавляем вершину $i$, +а на всех $i-1$ предыдущих максимальное паросочетание можно построить. Запустим +алгоритм Куна из $i$-ой вершины. Если мы нашли паросочетание и на $i$-ой вершине, +то отлично, мы увеличили паросочетание. Теперь допустим, что не смогли увеличить. + +Обозначим за $R_{+}$ --- все вершины, которые мы достигли алгоритмом +Куна в правой доле из вершины $i$, +$L_{+}$ в левой. Аналогично определяются множества вершин +$R_{-}$ и $L_{-}$. В $R_{+}$ вершин меньше, так как для любой вершины из +$R_+$ алгоритм Куна посетит вместе с ней какую-то вершину левой доли из +паросочетания. + +Заметим, что нет жёстких ребёр из $L_+$ в $R_-$, так как иначе мы могли бы +найти удлиняющий путь (просто пройдя как-то по этой вершине). + +Теперь введём обозначение $d = \min(a_{ij} - u_i - v_j), i \in L_+, j \in R_-$. +Как мы только что показали, $d > 0$, так как ни одно ребро не жёсткое. + +Теперь применим данные действия к алгоритму: + +\begin{itemize} + \item Увеличим все $u_i$ на $d$ для $i \in L_+$, + \item Уменьшим все $v_j$ на $d$ для $j \in R_+$. +\end{itemize} + +Заметим, что целевая функция увеличилась хотя бы на $d$, так как в $L_+$ больше +вершин, чем в $R_+$. Осталось проверить, что все неравенства линейной задачи $C'$ +сохранятся: + +\begin{itemize} + \item На ребрах из $L_+ \to R_+$ ничего не изменится, так как мы добавили + $d$ и вычли $d$, в частности жёсткие ребра останутся жёсткими. + \item На ребрах из $L_- \to R_+$ мы уменьшим $u_i + v_j$ на $d$, но уменьшать + нам не запрещено, так как неравенство сохранится, + \item На ребрах из $L_+ \to R_-$ мы по определению не получим противоречия + в неравенствах $u_i + d + v_j \leqslant a_{ij}$, так как $d \leqslant a_{ij} - u_i - v_j$, + \item Ребра из $L_- \to R_-$ мы никак не модифицировали, поэтому всё корректно + будет и тут. +\end{itemize} + +Поэтому из $L_+$ после пересчёта переменных будет ещё одно жёсткое ребро, которое +ведёт в $R_-$, а значит алгоритмом Куна мы строго увеличим количество посещенных +вершин. + +Бесконечно этот процесс не может происходить, так как мы не можем строго увеличивать +бесконечно количество посещённых вершин. Максимум через $n$ действий мы получим, +что $R_-$ состоит из одной вершины, а все вершины левой доли мы посетили, поэтому +мы сможем найти удлиняющую цепочку. + +\subsection{Понижение асимптотики алгоритма до $\O(n^3)$} + +Сейчас наш алгоритм работает за $\O(n^4)$. Действительно, мы должны добавить $n$ +вершин, каждый раз запуская алгоритм Куна от вершины не более $n$ раз, пересчет +переменных происходит за $\O(n^2)$ и за $\O(n^2)$ будет работать одна фаза алгоритма +Куна, поэтому асимптотика $\O(n^4)$, но, можно и быстрее, давайте поймём как +проапгрейдить наш алгоритм. + +Ключевая идея: теперь мы будем добавлять в рассмотрение строки матрицы одну за +одной, а не рассматривать их все сразу. Таким образом, описанный выше алгоритм примет вид: + +\begin{itemize} + \item Добавляем в рассмотрение очередную строку матрицы $a$. + \item Пока нет увеличивающей цепи, начинающейся в этой строке, пересчитываем переменные. + \item Как только появляется увеличивающая цепь, чередуем паросочетание вдоль неё + (включая тем самым последнюю строку в паросочетание), и переходим к началу + (к рассмотрению следующей строки). +\end{itemize} + +Чтобы достичь требуемой асимптотики, надо реализовать шаги 2-3, выполняющиеся +для каждой строки матрицы, за время $\O(n^2)$. + +Заметим, что если вершина была достижима из $i$-ой, то после пересчётов переменных она +останется достижимой, так как жёсткие ребра остаются жесткими, и пересчет +переменных выполняется $\O(n)$ раз. + +Также заметим, что +для проверки наличия увеличивающей цепочки нет необходимости запускать алгоритм +Куна заново после каждого пересчёта переменной. +Вместо этого можно оформить light версию обхода Куна: после каждого +пересчёта переменной мы просматриваем добавившиеся жёсткие рёбра и, если их +левые концы были достижимыми, помечаем их правые концы также как достижимые и +продолжаем обход из них. + +Введём также величину $c_j$ для всех $j$: + +\[ + c_j = \min\limits_{i \in L_+} (a_{ij} - u_i - v_j) +\] + +Тогда наша $d = \min\limits_{j \in R_-} c_j$. Это и есть в точности те вершины правой доли, +которые мы ещё не посетили, соединенных с вершинами левой доли $L_+$. Это делается +за $\O(n)$. + +Теперь легко изменять $c_j$ при расстановке потенциалов --- надо просто вычесть +$d$ из всех $c_j, j \in R_-$. Если мы добавляем в левой доли вершину $k$, надо лишь +обновить все $c_j = \min(c_j, a_{kj} - u_k - v_j)$. Это делается за $\O(n)$. + +А инициализировать $c_j$ надо +при добавлении $i$-ой вершины, как $c_j = a_{ij} - u_i - v_j$, так как пока +только 1 вершина посещена --- эта вершина на $i$-ой фазе алгоритма. + +Теперь поймём, почему теперь алгоритм работает за $\O(n^3)$. Есть, как и в +прошлой версии, внешняя фаза --- добавление вершин левой доли за $\O(n)$. Теперь +обновление переменных выполняется за $\O(n)$, обновление массива $c_j$ происходит +при каждом обновлении за $\O(n)$, что даёт $\O(n^2)$ на каждом шаге. Плюс +ещё мы должны во внешней фазе запустить алгоритм Куна, чтобы найти паросочетание (мы +уже уверены, что оно есть), что тоже $\O(n^2)$. В итоге $\O(n^3)$. Приведем +псевдокод: + +\begin{algorithm}[H] + \caption{Венгерский алгоритм} + \begin{algorithmic}[1] + \Let{$M$}{$\varnothing$} \Comment{Поддерживающееся паросочетание на + жёстких рёбрах} + \For{$i \gets 1 \textbf{ to } n$} + \Let{$c_j$}{$a_{ij} - u_i - v_j$} \Comment{По всем $j$} + \Let{$R_+$}{$\varnothing$} + \Let{$L_+$}{$\{i\}$} + \Let{$flag$}{$true$} + \While{$flag$} + \Let{$d$}{$\min{c_j}$} \Comment{По всем $j \in R_-$ --- надо найти это самое $d$} + \Let{$u_k$}{$u_k + d$} \Comment{По всем $k \in L_+$ --- см. выше} + \Let{$v_k$}{$v_k - d$} \Comment{По всем $k \in R_+$ --- см. выше} + \Let{$c_k$}{$c_k - d$} \Comment{По всем $k \in R_-$ --- см. выше} + \For{$k \in R_-$} + \If{$c_k = 0$} \Comment{Значит вершина стала достижимой} + \If{$k \in Right(M)$} \Comment{Вдруг, наша вершина оказалась уже в паросочетании, то мы ещё не можем увеличить} + \Let{$L_+$}{$L_+ + Left\_neighbour(k)$} \Comment{Добавляем посещенную в $L_+$, которая насыщена паросочетанием $M$} + \Let{$R_+$}{$R_+ + k$} \Comment{Суммарно добавлений будет не более $\O(n)$} + \Let{$q$}{$Left\_neighbour(k)$} + \Let{$c_p$}{$\min(c_p, a_{qp} - u_q - v_p)$} \Comment{надо обновить после добавления по всем $p \in R_-$} + \Else + \Let{$flag$}{$false$} \Comment{уже точно знаем, что можем увеличить паросочетание} + \State{$break$} \Comment{надо выйти вообще, чтобы запустить алгоритм Куна} + \EndIf + \EndIf + \EndFor + \EndWhile + \Let{$M$}{$kunh\_algo(i)$} + \EndFor + \end{algorithmic} +\end{algorithm} + +Действительно, в $L_+$ и $R_+$ мы добавляем не больше, чем $\O(n)$ раз, значит +и восемнадцатая строка выполнится не более $\O(n)$ раз, значит в цикле с седьмой строки мы +в целом будем выполнять не более $\O(n^2)$ действий. Также +алгоритм Куна будет выполняться не более $\O(n^2)$ действий на каждой итерации. +А значит общая асимптотика равна $\O(n^3)$. + +Можно немного сэкономить на практике +и не писать алгоритм Куна, а запоминать, из какой +вершины левой доли мы пошли в правую, а вместо алгоритма Куна делать всего +$\O(n)$ действий, идя обратно по пути. + +{\bf Байка от Глебаса:} Была одна команда на ACM, вроде из Саратова. На финал +можно было принести с тобой несколько листов заготовленного кода. +Одна из задач была на венгерский алгоритм, и у команды была распечатка по этому алгоритму. +В итоге она у них не заходила, потому что когда они тестили у себя в контесте, +видимо, тесты были слабые. Мораль: ставьте assertы везде, где можно, чтобы +убедиться, что этот алгоритм работает корректно. + +\subsection{Венгерский алгоритм на прямоугольной матрице} + +Будем считать, что $n \leqslant m$, иначе просто транспонируем матрицу. + +Здесь всё тоже самое, только давайте теперь оценим время работы, если у нас +матрица размера $n \times m$. Заметим, что в алгоритме мы будем добавлять не больше, +чем $\min(n, m) = n$ вершин, так как мы либо ничего не делаем, либо добавляем по +одному элементу к $L_+$ и $R_+$ одновременно. Поэтому тут $\O(n)$, но восемнадцатую строку +мы будем обновлять за $\O(m)$, поэтому внешний цикл с седьмой строки будет +выполняться не более $\O(nm)$ действий, алгоритм Куна тоже будет выполняться +за $\O(nm)$ (максимальное количество рёбер столько). Поэтому асимптотика будет +равна $\O(n^2m)$, что может быть применимо для больших $m$ и +$n$ поменьше. + +Также для совсем маленьких $n$, можно оставить лучших $n$ в каждой строке (ведь +если есть решение, что в данной строке кто-то не из $n$ лучших, то остальные +работники забрали не более $n - 1$ столбец в матрице на свои лучшие ответы, а значит +по принципу Дирихле мы можем взять получше ответ для этой строки). Поэтому матрица +осталась максимум $n \times n^2$, значит такой алгоритм будет работать за $\O(n^4 + nm)$. + + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_08_[11.10.2016].tex b/algo_pilot/book/hse_algo_pilot_08_[11.10.2016].tex new file mode 100644 index 0000000..124e2e1 --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_08_[11.10.2016].tex @@ -0,0 +1,192 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 8 от 11.10.2016. Сегментация и кластеризация изображений +с помощью потоковых алгоритмов} + +\subsection{Постановка задачи} + +Рассмотрим любую картинку (Айрат, привет): + +\begin{figure}[H] + \center{\includegraphics[width=0.5\linewidth]{../images/Airat.jpg}} + \caption{Произвольная картинка} +\end{figure} + +И мы хотим отделить фон от человека. То есть присвоить каждому пикселю матрицы +$n \times m$ какой-то label, к какому классу относится --- фон или человек, +например. + +Фактически это единственный алгоритм машинного обучения, где используются +алгоритмы на потоках. + +\textit{Прим. Те, кто не помнят, что такое поток, могут закрывать эту лекцию.} + +\subsection{Минимизация парно-сепарабельной энергии от бинарных переменных} + +Пусть у нас задан неориентированный граф $G(V, E)$. Для каждого $i \in V$ пусть +$x_i$ могут принимать значения только из $\{0, 1\}$. + +\begin{Def} + Назовём \textbf{энергией} (обозначение $I$) функцию из $\{0, 1\}^{|V|} \to + \R$: + \[ + I(X) = \sum_{i \in V} \theta_i(x_i) + \sum_{(i, j) \in E} \theta_{ij}(x_i, x_j) + + \theta_0, + \] + + где $\theta_i, \theta_{ij}$ --- какие-то потенциалы, а $\theta_0$ --- константа. +\end{Def} + +И наша задача заключается в том, что минимизировать $I(X)$. Известно, что если +не вводить никаких дополнительных ограничений, то задача минимизации +энергии является $\NPclass$-трудной. + +Давайте поймём, как +это относится к сегментации. На выборке из огромного числа изображений мы +можем с уверенностью говорить, о том, какие пиксели находятся рядом, какие +далеко по цвету, поэтому можем поставить какие-то веса на рёбрах. После этого +сегментировать изображение, чтобы были в одной и другой части как можно +более тёплые цвета. Рассмотрим частный случай потенциалов, в котором задача +становится полиномиальной: + +\begin{itemize} + \item $\forall \ i \in V, \theta_i(0) \geqslant 0, \theta_i(1) \geqslant 0$; + \item $\forall \ (i, j) \in E \Rightarrow \theta_{ij}(0, 0) = \theta_{ij}(1, 1) = 0, + \theta_{ij}(0, 1) \geqslant 0, \theta_{ij}(1, 0) \geqslant 0$. +\end{itemize} + +Тогда энергию можно задать так (легко проверить все случаи): + +\[ + I(X) = \sum_{i \in V} (x_i\theta_i(1) + (1 - x_i)\theta_i(0)) + + \sum_{(i, j) \in E} (x_i(1 - x_j)\theta_{ij}(1, 0) + + x_j(1 - x_i)\theta_{ij}(0, 1)) + \theta_0, +\] + +\begin{figure}[H] + \center{\includegraphics[width=0.5\linewidth]{../images/graph.png}} + \caption{Граф, построенный для минимизации энергии от двух переменных + $x_i, x_j$. Разрез, отображенной пунктирной линией соответствует присваиванию + $x_i = 1, x_j = 0$. Величина разреза составляет $\theta_i(1) + \theta_j(0) + + \theta_{ij}(1, 0)$}. +\end{figure} + +Теперь построим ориентированный граф $\overline{G} = (\overline{V}, \overline{E})$ +по следующим правилам: + +\begin{itemize} + \item В $\overline{V} = V \cup \{s, t\}$; + \item Неориентированные рёбра делаем ориентированными в обе + стороны, а для каждой вершины + $i$ проведем ещё ребра $(s, i), (i, t)$; + \item $c(s, i) = \theta_i(1), c(i, t) = \theta_i(0)$, где $i \in V$; + \item $\forall \ (i, j) \in E$ таким, что $i < j$ положим $c(i, j) =\theta_{ij}(0, 1), c(j, i) = \theta_{ij}(1, 0)$; + \item Все вершины из $V$, которые попали в минимальный разрез $S$ положим $x_i = 0$, + остальным $x_i = 1$. +\end{itemize} + +Тогда видно, что минимизация разреза эквивалентна этой задаче, что эквивалентно +задаче максимального потока. Существует, конечно, много алгоритмов максимального +потока, многие из них мы изучали, но в компьютерном зрении часто возникают алгоритмы +Бойкова-Колмогорова и IBFS. С ними вы можете ознакомиться при желании самостоятельно. + +Пример графа, построенного для энергии от 2-х переменных, и его разреза +приведен на рис 2. + +\subsection{Репараметризация} + +Здесь мы рассмотрим, какие ещё энергии можно минимизировать при помощи +разрезов графов. Назовём преобразования потенциалов, не меняющее энергию +\textit{репараметризацией}. Рассмотрим несколько видов репараметризаций: + +\begin{itemize} + \item Вычитание константы --- $\theta_i(0) \mathrel{{-}{=}} \delta, \theta_i(1) \mathrel{{-}{=}} \delta, + \theta_0 \mathrel{{+}{=}} \delta$; + \item Изменение потенциалов на ребрах. $\theta_{ij}(p, 0) \mathrel{{-}{=}} \delta, + \theta_{ij}(p, 1) \mathrel{{-}{=}} \delta, \theta_i(p) \mathrel{{+}{=}} \delta$. Аналогично, если + $p$ на 2-ой координате. +\end{itemize} + +Легко видеть из определения, что эти преобразования не меняют энергию. + +Рассмотрим, что можно делать при помощи репараметризации потенциалов на ребрах. +Для $(i, j) \in E$ пусть +$\theta_{ij}(0, 0) = a$, +$\theta_{ij}(1, 1) = b$, +$\theta_{ij}(0, 1) = c$, +$\theta_{ij}(1, 0) = d$. + +После этого давайте 3 раза применим 2-ой пункт видов репараметризации: + +\begin{itemize} + \item $\theta_{ij}(0, 0) \mathrel{{-}{=}} a, \theta_{ij}(0, 1) \mathrel{{-}{=}} a, \theta_{i}(0) \mathrel{{+}{=}} a$; + \item $\theta_{ij}(0, 1) \mathrel{{-}{=}} (c - a), \theta_{ij}(1, 1) \mathrel{{-}{=}} (c - a), + \theta_{j}(1) \mathrel{{+}{=}} c - a$; + \item $\theta_{ij}(1, 1) \mathrel{{-}{=}} (b - c + a), \theta_{ij}(1, 0) \mathrel{{-}{=}} (b - c + a), + \theta_{i}(1) \mathrel{{+}{=}} b - c + a$ +\end{itemize} + +Потом сделаем все потенциалы вершины неотрицательными по 1-ому пункту +репараметризации. В итоге у нас ненулевым останется только $\theta_{ij}(1, 0) = +d + c - a - b$. И если оно положительно, то мы можем применить наш алгоритм, то +есть должно выполняться условие \textit{субмодулярности}: + +\[ + \theta_{ij}(0, 0) + \theta_{ij}(1, 1) \leqslant \theta_{ij}(0, 1) + + \theta_{ij}(1, 0) +\] + +Данное условие вызвано тем, что для полиномиальной разрешимости задач о +максимальном потоке и минимальном разрезе пропускные способности дуг графа +должны быть неотрицательны. + +\subsection{$\alpha$-расширение} + +Мы умели решать задачу только с одним объектом, теперь давайте попробуем +приближенно решить задачу со многими объектами. Тот же граф, только теперь +поставим в соответствие каждой вершине $i$ --- $y_i \in \{1, \ldots, K\}$ --- +классы разбиения. Рассмотрим следующую энергию: + +\[ + I_M(X) = \sum_{i \in V} \psi_i(x_i) + \sum_{(i, j) \in E} \psi_{ij}(x_i, x_j) + + \psi_0, +\] + +Буква $M$, скорее всего, идёт от английского слова Many --- много. + +Алгоритм $\alpha$-расширение минимизирует энергию при помощи выполнения шагов между +разметками $y$, каждый из которых гарантированно не увеличивает значение энергии. +Каждый шаг +представляет собой задачу минимизации энергии бинарных переменных вида. +Неформально каждый шаг позволяет каждой переменной из $y$ либо присвоить выбранное значение +$\alpha$, либо оставить текущее значение (расширение метки $\alpha$). + +\begin{figure}[H] + \center{\includegraphics[width=1\linewidth]{../images/alpha.png}} + \caption{Пример работы алгоритма $\alpha$-расширения для задачи + выровненного стерео. (a) -- начальная разметка, далее последовательные + расширения различных меток.} +\end{figure} + +На каждом шаге алгоритма у нас есть текущее приближение $y^0$ и выбрана +\textit{расширяемая} метка $\alpha \in \{1, \ldots, K\}$. + +\begin{itemize} + \item Граф, потенциалы сначала одинаковы; + \item Применяем алгоритм о минимальном разрезе, теперь, если $x_i = 0$, то + оставляем $y_i^0$, а если $x_i = 1$, то меняем переменную $y_i^0 = \alpha$; + \item Меняем все потенциалы вершин: $\theta_i(0) = \psi_i(y_i^0), + \theta_i(1) = \psi_i(\alpha);$ + \item Меняем потенциалы на ребрах: $\theta_{ij}(0, 0) = \psi_{ij}(y_i^0, y_j^0), + \theta_{ij}(1, 1) = \psi_{ij}(\alpha, \alpha), \theta_{ij}(0, 1) = + \psi_{ij}(y_i^0, \alpha), $ + + $\theta_{ij}(1, 0) = \psi_{ij}(\alpha, y_j^0)$; + \item Повторяем процедуру, сколько нам надо для реальной задачи. +\end{itemize} + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_09_[14.10.2016].tex b/algo_pilot/book/hse_algo_pilot_09_[14.10.2016].tex new file mode 100644 index 0000000..e19f11c --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_09_[14.10.2016].tex @@ -0,0 +1,318 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 9 от 14.10.2016. $\Pclass$ vs. $\NPclass$} + +\subsection{Класс $\Pclass$ и сведение} + +Сейчас мы переходим в теоретический материал, который является основой +классификации алгоритмов. Нас совершенно не интересует эффективность, кроме +как разделение на <<алгоритмы, которые работают за полиномиальное время>> и все +остальные. + +Договоримся, что мы определяем <<алгоритм>>, как детерминированную +машину Тьюринга. И будем +использовать тезис Чёрча-Тьюринга о том, что любая вычислимая функция является +вычислимой на машине Тьюринга. Также условимся, что мы рассматриваем только +задачи принятия решения (принадлежит ли слово $w$ языку $L$). + +\begin{Def} + Задача (формально говоря язык) $A \in \Pclass$, если существует машина Тьюринга, + проверяющая принадлежность + слова языку, + время работы $t_A(x)$ которой ограничено полиномом от $P(|x|)$, который является + фиксированным для всех входов. +\end{Def} + +Также, до определения класса $\NPclass$, определим, +что значит, что язык $A$ сводится к языку $B$ за полиномиальное время. + +\begin{Def} + Язык $A$ \textbf{сводится} к языку $B$ за полиномиальное время, если + существует функция $f$, вычислимая за полиномиальное время, такая, что + $w \in A \Longleftrightarrow f(w) \in B$. + Обозначение: $A \leqslant_p B$. +\end{Def} +Докажем основное утверждение о сводимости: +\begin{Statement} + Пусть $A \leqslant_p B$ и $B \in \Pclass$ (существует полиномиальный + алгоритм решения задачи). Тогда $A \in \Pclass$. +\end{Statement} + +\begin{proof} + Достаточно построить алгоритм, показывающий, что для языка $A$ тоже существует + полиномиальное решение. Пусть у нас имеются МТ $M_A$, допускающая язык $A$, и + $M_B$, допускающая язык $B$. Поскольку $A \leqslant_p B$, то $\exists$ + полиномиальная функция $f$, удовлетворяющая определению выше. Построим алгоритм вычисления $M_A$: + \begin{algorithmic} + \Require{слово $w$} + \State вычислить $f(w)$ + \State \Return $M_B\big(f(w)\big)$ + \end{algorithmic} + Поскольку сама функция $f$ является вычислимой за полиномиальное время, то + вычисление $f(w)$ потратит полиномиальное время. Кроме того, поскольку + $B \in \Pclass$, то вычисление $M_B\big(f(w)\big)$ также займёт полиномиальное + время (от размера $f(w)$, но $f(w)$ также вычисляется за полином)! Отсюда + $M_A(w)$ также допускает слово $w$ за полиномальное время, что по определению + означает, что $A \in \Pclass$. +\end{proof} + +\subsection{Класс $\NPclass$} + +\begin{Def} + Язык \(L\) лежит в классе \(\NPclass\), если существует функция + от двух аргументов \(A(x, y)\)~--- \textbf{алгоритм верификации}~--- с + полиномиальной сложностью от \(x\) такая, что \(x\) лежит в \(L\) + тогда и только тогда, когда для него существует \(y\) (его принято называть + \textbf{сертификатом}) такой, что \(A(x, y) = 1\). При этом сертификат должен + быть полиномиально зависим от размера \(x\). +\end{Def} + +Ясно, что $\Pclass \subseteq \NPclass$, так как за алгоритм верификации можно +взять просто полиномиальный алгоритм принадлежности слова языку. + +Также введём понятие $\coNPclass$ класса: + +\begin{Def} + \[ + \coNPclass = \{\overline{L} = \Sigma^{*} \setminus L \mid L \in \NPclass\} + \] +\end{Def} + +Другими словами, $\coNPclass$~--- множество всех языков, которые могут +верифицировать \textbf{не}принадлежность слово языку. Например, такая задача +--- <<Нет ли гамильтонового цикла в графе?>>. Неизвестно, лежит ли она в $\NPclass$, +но она точно лежит в $\coNPclass$ (предъявление верификатора оставляем, как +упражнение читателю). Также ясно, что $\Pclass \subseteq \coNPclass$. + +\begin{Def} + Язык $A \in \mathbf{PSPACE}$, если существует МТ принимающая данный язык + с полиномиальным количеством дополнительной памяти. +\end{Def} + +\begin{Def} + Язык $A \in \mathbf{EXPTIME}$, если существует МТ принимающая данный язык + с экспоненциальным временем работы (а именно $\O(2^{n^k})$). +\end{Def} + +Оставим тоже следующую лемму, как упражнение читателю: + +\begin{Lemma} + $\NPclass \subseteq \mathbf{PSPACE} \subseteq \mathbf{EXPTIME}$ +\end{Lemma} + +\subsection{$\NPCclass$ класс и теорема Кука-Левина} + +\begin{Def} + Язык $A$--- $\NPclass$-трудный, если $\forall \ B \in \NPclass : B \leqslant_p A$. +\end{Def} + +\begin{Def} + Язык $A \in \NPCclass$ ($\NPclass$-complete или Nondeterministic Polynomial + Complete), если $A \in \NPclass$ и $\forall \ B \in \NPclass \implies B + \leqslant_p A$. +\end{Def} + +Другими словами, $\NPCclass$~--- это в точности те языки, которые +сами лежат в $\NPclass$ и являются $\NPclass$-трудными одновременно. + +Докажем следующие простые утверждения: + +\begin{Lemma} + Пусть $L \in \NPCclass$. Тогда, если $L \in \Pclass$, то $\Pclass = \NPclass$. +\end{Lemma} +\begin{proof} + Пусть $L' \in \NPclass$. Так как $L \in \NPCclass$, то $L' \leqslant_p L$. + Но, поскольку $L \in \Pclass$, то $L' \in \Pclass$, откуда $\Pclass = \NPclass$. +\end{proof} + +\begin{Lemma} +Если $B \in \NPCclass$ и $B \leqslant_p C \in \NPclass$, то $C \in \NPCclass$. +\end{Lemma} +\begin{proof} + Проверим оба условия, входящих в определение $\NPclass$-полного языка. + \begin{enumerate} + \item $C \in \NPclass$ --- по условию. + \item Пусть $L' \in \NPclass$. Так как $B \in \NPCclass$, то $L' + \leqslant_p B$, что по определению означает, что существует некая + функция $f_{L'B}$ + (которая сводит одну задачу к другой), вычислимая за полиномиальное + время. Кроме того, $B \leqslant_p C$, что по определению означает, что + существует некая функция $f_{BC}$, вычислимая за полиномиальное время. + + Но это означает, что $L' \leqslant_p C$, так как существует функция + $f_{L'C}$, такая, что $f_{L'C}(w) = f_{BC}\big(f_{L'B}(w)\big)$ -- она + также является вычислимой за полиномиальное время. + + Следовательно, $\forall\ L' \in \NPclass: L' \leqslant_p C$, откуда + $C$ -- $\NPclass$-трудный по определению. + \end{enumerate} + Оба условия выполняются, значит $C \in \NPCclass$. +\end{proof} + +Но всё равно должны же остаться вопросы по тому, зачем всё это надо и как +вообще доказывать, что задача трудна, то есть лежит в классе $\NPclass$. +Ведь должна же быть какая-то <<первая>> задача из $\NPCclass$. Если вы решаете +задачу и вдруг понимаете, что она эквивалентна какой-то задаче из $\NPCclass$, +то возможно стоит либо перечитать задачу (и понять, каким условием +надо точно пользоваться, если вдруг вы его отбросили), +либо решить и получить $\$1\,000\,000$. + +Одна из первых $\NPCclass$ задач была задача $\SAT$ (от англ. +Satisfiability). Можем считать, что нам +дана булева формула в конъюнктивно нормальной форме. Сейчас мы покажем, что +любая $\NPclass$ задача сводится к этой. Вообще, так как если мы хотим сводить +любую $\NPclass$ задачу к $\SAT$, то какие-то обычные рассуждения вряд ли пройдут. +Действительно, мы будем стараться моделировать работу МТ через КНФ. + +\begin{Theorem}[Теорема Кука-Левина] + $\SAT \in \NPCclass$. +\end{Theorem} + +\begin{proof} + Сначала покажем, что $\SAT \in \NPclass$. Действительно, по входу булевой + формулы и верификатору (значение переменных $x_1, \ldots, x_n$) мы с лёгкостью + проверим выполнимость формулы. Поэтому есть линейный алгоритм верификации. + + Пусть $\mathcal{P} \in \NPclass$. Надо понять, как полиномиально свести + эту задачу к $\SAT$. По определению класса $\NPclass$ существует полином + $p$ и алгоритм $\mathcal{P'}$, который верифицирует задачу $\mathcal{P}$, + причём верификатор размера не больше, чем $p(|x|)$. + + Пусть + \[ + \Phi : \{0, \ldots, N\} \times \overline{A} \to \{-1, \ldots, N\} + \times \overline{A} \times \{-1, 0, 1\} + \] + МТ, работающая за полиномиальное время, отвечающая за задачу $\mathcal{P'}$ + с алфавитом $A$. Добавим пустой символ к $A$, чтобы легче было работать. + Пусть работа этой МТ ограничена полиномом $q$, то есть time$(\Phi, x\#c) + \leqslant q(|x\#c|)$. Сейчас мы соорудим набор дизъюнктов или <<клауз>> + (от англ. Clause) $Z(x)$, который + ограничен полиномом $Q \gets q(|x\#c|)$, такой, что $Z(x)$ выполняется + тогда и только тогда, когда слово принадлежит языку $\mathcal{P}$. + + Ясно, что мы не уйдём за пределы ленты от $-Q$ до $Q$. + + Теперь создадим несколько переменных: + \begin{itemize} + \item переменные $v_{ij\sigma}$ для всех $0 \leqslant i \leqslant Q$, + $-Q \leqslant j \leqslant Q$ и $\sigma \in \overline{A}$. Верно ли, что + в момент $i$ (после $i$ шагов выполнения МТ) позиция с номером $j$ содержала + символ $\sigma$. + + \item переменные $w_{ijn}$ для всех $0 \leqslant i \leqslant Q$, + $-Q \leqslant j \leqslant Q$ и $-1 \leqslant n \leqslant N$. Верно ли, что + в момент $i$ на позиции $j$ МТ была в состоянии $n$. За минус 1 отвечает + финальное состояние. + \end{itemize} + + Поэтому, если у нас есть конфигурация МТ на $i$-ом шаге + с позицией $\pi^{(i)}$, символами $s^{(i)}$ и состоянием $n^{(i)}$, тогда + мы должны выставить $v_{ij\sigma} := true$ тогда и только тогда, когда + $s_j^{(i)} = \sigma$ ($s_j$ --- позиция на $j$-ом месте ленты МТ). И мы должны + выставить $w_{ijn} := true$ тоже тогда и только тогда, когда $\pi^{(i)} = j$ и + $n^{(i)} = n$. + + Сейчас мы предъявим набор клауз $Z(x)$, который будет выполняться тогда и + только тогда, когда существует строка $c$ полиномиального размера, что + МТ $\Phi$ на входе $x\#c$ выдаёт единицу. + + В каждый момент времени на каждой позиции стоит строго один символ: + + \begin{itemize} + \item дизъюнкт $(v_{ij\sigma} \mid \sigma \in \overline{A})$ по всем + $0 \leqslant i \leqslant Q$ и $-Q \leqslant j \leqslant Q$. + \item $(\overline{v_{ij\sigma}} \vee \overline{v_{ij\tau}})$ по всем + $0 \leqslant i \leqslant Q$, и $-Q \leqslant j \leqslant Q$, и $\sigma \neq + \tau \in \overline{A}$. + \end{itemize} + + В каждый момент времени единственная позиция в строке сканируется и + единственная инструкция выполняется: + + \begin{itemize} + \item $(w_{ijn} \mid -Q \leqslant j \leqslant Q, -1 \leqslant n \leqslant N)$ + для всех $0 \leqslant i \leqslant Q$. + \item $(\overline{w_{ijn}} \vee \overline{w_{ij'n'}})$ по всем + $0 \leqslant i \leqslant Q$ и $-Q \leqslant j, j' \leqslant Q$ и + $-1\leqslant n, n' \leqslant N$ с условием, что $(j, n) \neq (j', n')$. + \end{itemize} + + Алгоритм корректно начинает свою работу: + + \begin{itemize} + \item $(v_{0, j, x_j})$ по всем $1 \leqslant j \leqslant |x|$. + \item $(v_{0, |x| + 1, \#})$ --- разделяющий символ. + \item $(v_{0, |x |+ 1 + j, 0} \vee v_{0, |x| + 1 + j, 1})$ + по всем $1 \leqslant j \leqslant p(|x|)$. + \item $(v_{0, j, \sqcup})$ по всем $-Q \leqslant j \leqslant 0$ и + $|x| + 2 + p(|x|) \leqslant j \leqslant Q$ --- пустые символы не с входа. + \item $(w_{0,1,0})$ --- начальное положение головки. + \end{itemize} + + Алгоритм работает корректно: + + \begin{itemize} + \item $(\overline{v_{ij\sigma}} \vee \overline{w_{ijn}} \vee v_{i + 1, j, \tau})$ и + $(\overline{v_{ij\sigma}} \vee \overline{w_{ijn}} \vee w_{i + 1, j + \delta, m})$ + по всем $0 \leqslant i < Q, -Q \leqslant j\leqslant Q; \sigma, \tau \in + \overline{A}, \delta \in \{-1, 0, 1\}$, где $\Phi(n, \sigma) = + (m, \tau, \delta)$ (переход по состоянию $n$, символу $\sigma$ в какое-то + состояние $m$, символ $\tau$ пишем на $j$-ом месте и сдвиг на $-1, 0$ или $1$). + \end{itemize} + + Когда алгоритм достигает финального состояния (минус 1 в нашем случае), алгоритм + останавливается: + \begin{itemize} + \item $(\overline{w_{i, j, -1}} \vee w_{i + 1, j, -1})$ и + $(\overline{w_{i, j, -1}}\vee \overline{v_{i, j, \sigma}}\vee v_{i + 1, j, \sigma})$ + по всем $0 \leqslant i < Q; -Q \leqslant j \leqslant Q$ и $\sigma \in + \overline{A}$ --- как раз, если достигли состояния $-1$, тогда все состояния + в каждое время должны быть минус один и символ меняться не должен. + \end{itemize} + + Позиции, которые не были просмотрены, должны остаться неизменными: + + \begin{itemize} + \item $(\overline{v_{ij\sigma}}\vee \overline{w_{ij'n}}\vee v_{i+1, j, \sigma})$ + по всем $0 \leqslant i \leqslant Q; \sigma \in \overline{A}; -1 \leqslant + n \leqslant N$ и $-Q \leqslant j, j' \leqslant Q$ при условии, что $j \neq j'$. + \end{itemize} + + Алгоритм выводит единицу: + \begin{itemize} + \item $(v_{Q, 1, 1})$ и $(v_{Q, 2, \sqcup})$ --- на первой позиции стоит + единица, а потом пробел (можно считать, что только один, можно, что все + последующие, это не играет на роль полиномиальности МТ и полиномиальности + размера КНФ). + \end{itemize} + + Заметим, что размер $Z(x)$ будет не больше, чем $\O(Q^3\log Q)$, существует + $\O(Q^3)$ литералов и нужно $\O(\log Q)$ памяти, чтобы закодировать индексы. + + Осталось показать, что $Z(x)$ выполняется тогда только тогда, когда $x$ + принадлежит языку. + + Если $Z(x)$ выполняется, то пусть $T$ --- это набор переменных, удовлетворяющим + всем клаузам. Поставим $c_j = 1$ по всем $j$ для которых + $T(v_{o, |x| + 1 + j, 1}) = true$ и $c_j = 0$ в ином случае. Сверху мы + описали работу МТ $\Phi$ на входе $x\#c$. Поэтому мы можем заключить, что + $\Phi(x\#c) = 1$. Так как $\Phi$ --- алгоритм верификации, то это значит, что + $x$ принадлежит языку. + + Пусть $x$ принадлежит языку. Тогда пусть $c$ --- сертификат проверки для $x$. + Тогда пусть конфигурация МТ на входе $x\#c$ на $i$-ом шаге пусть будет равна + $(n^{(i)}, s^{(i)}, \pi^{(i)})$. Тогда давайте поставим $T(v_{i,j,\sigma}) = + true$ тогда и только тогда, когда $s_j^{(i)} = \sigma$ и $T(w_{i, j, n})=true$ + тогда и только тогда, когда $\pi^{(i)} = j, n^{(i)} = n$ по всем $i \leqslant m$. + Для б\'{о}льших $i$ выставим $T(v_{i, j, \sigma}) := T(v_{i - 1, j, \sigma})$ + и $T(w_{i, j, n}) := T(w_{i - 1, j, n})$ по всевозможным $j, n, \sigma$. Тогда + можно убедиться, что формула выполняется, что завершает наше доказательство. +\end{proof} + + +% \end{document} diff --git a/algo_pilot/book/hse_algo_pilot_10_[18.10.2016].tex b/algo_pilot/book/hse_algo_pilot_10_[18.10.2016].tex new file mode 100644 index 0000000..ab28e7e --- /dev/null +++ b/algo_pilot/book/hse_algo_pilot_10_[18.10.2016].tex @@ -0,0 +1,324 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Лекция 10 от 18.10.2016. $\NPclass$ классы, сведения, различные другие классы алгоритмов} + +\epigraph{<<Будет вообще уморительно, если кто-то сядет и скажет: <<Ох ё, +поиск Гамильтонова цикла --- это просто динамика за квадрат>>. И полстраницы кода...>>} +{Глеб} + +В прошлый раз мы поговорили о просто задаче $\SAT$. Теперь у нас есть мощный +инструмент к сведению сложных на данное время задач. Первая из них --- +3-$\SAT$ --- булева формула в конъюктивно нормальной форме, где каждый дизъюнкт +содержит не более 3 литералов (ну или ровно 3, мы докажем эквивалентность чуть +позже). + +\subsection{Сведение $\SAT$ к 3-$\SAT$} + +\begin{Theorem} + $\SAT \leqslant_p$ $3\text{-}\SAT$. +\end{Theorem} + +\begin{proof} + Возьмём один дизъюнкт и сделаем из него много дизъюнктов с количеством + литералов не более 3. + + Действительно, пусть у нас будет дизъюнкт $(x_1 \vee \ldots \vee x_{k})$ --- + возможно + с отрицаниями, нам не важно. Разобьём на 2 примерно равных множества этот + дизъюнкт --- в одном $\left\lfloor \frac{k}{2} \right\rfloor$ литералов, в + другом $\left\lceil \frac{k}{2} \right\rceil$. Добавим новую переменную $x_{n + 1}$, + тогда покажем эквивалентность $(x_1 \vee \ldots \vee + x_{\lfloor k/2\rfloor} \vee x_{n + 1}) \wedge (x_{\lfloor k/2 \rfloor + 1} + \vee \ldots \vee + x_{k} \vee \overline{x_{n + 1}})$. Действительно, если эти 2 дизъюнкта выполнены, + то в одном из них литерал с $x_{n + 1}$ равен 0, значит один из литералов + в множестве $x_1, \ldots, x_k$ равен 1 и изначальный дизъюнкт выполнен. + + В другую сторону --- если изначальный дизъюнкт выполнен, тогда существует + какой-то литерал из $x_1, \ldots, x_k$, который равен 1, тогда поставим $x_{n + 1}$ + так, что оно равно 0, там где литерал из $x_1, \ldots, x_k$ равен 1. Тогда + обе скобки будут равны единице (там, где есть литерал, который равен 1, будет + всегда 1, а в другой скобке литерал с $x_{n + 1}$ равен 1). + + Будем так делать для каждого дизъюнкта, добавляя новую (обязательно не + совпадающую с предыдущими созданными) переменными. И будем останавливаться, + когда дизъюнкт содержит не более 3 литералов. Заметим, что из дизъюнкта, + состоящего из 3 литералов нельзя сделать 2 дизъюнкта со строго меньшим + количеством литералов. Легко проверить, что такая процедура работает только + при $k \geqslant 4$. + + Осталось совсем немного --- доказать, что 3-$\SAT \in \NPclass$ и сведение + действительно полиномиально. Первое совсем очевидно, так как 3-$\SAT$ это + частный случай $\SAT$, а про $\SAT$ мы точно знаем, что эта задача из класса + $\NPclass$. + + Заметим, что количество уровней при процедуре с одним дизъюнктом будет не более, + чем $\O(\log n)$ (это легко показать, сказав и проверив, что если проделать + 2 уровня, то максимальная длина дизъюнкта уменьшается хотя бы в 2 раза). И на + каждом уровне мы создаём не более $2^k$ новых литералов. Если всё просуммировать, + получим линейное сведение одного дизъюнкта. Для осталальных проделаем то же + самое. +\end{proof} + +Также стоит отметить по лемме в прошлой лекции следует, что 3-$\SAT \in \NPCclass$. + +Пока никто не умеет сводить $\SAT$ к 2-$\SAT$, так как последняя решается за +линейное время. + +{\bf Байка от Глебаса:} Только испанские составители контестов могут +это делать. Писали испанский контест. +Читаешь условие --- вот просто дана задача о рюкзаке. +$n \leqslant 50000, a_i \leqslant 10^9$, TL 2 секунды. +Зашли в админку, увидели супер-эвристику, долго ржали, возможно, даже отослали +решение, но не помню. Ну также они дали задачу на гамильтонов путь на 200 вершинах. + +\subsection{$\NPclass$-полнота задач клики, доминирующего множества и вершинного +покрытия} + +Ну теперь мы займёмся сведениями. Мы много говорили, что некоторые задачи на +графах очень сложны. Теперь надо ответить за базар: + +\begin{Theorem} + Задача <<существует ли клика размера $k$ в графе $G(V, E)$>> является $\NPCclass$. +\end{Theorem} + +\begin{proof} + Сведем эту задачу к $\SAT$ (просто красивое рассуждение). + Потом сделаем в другую сторону. + + \begin{center} + \begin{tikzpicture} + \tikzstyle{main node}=[draw,circle,fill=white,minimum size=4pt, + inner sep=0pt] + \tikzstyle{every node}=[fill=white,minimum size=0pt] + \draw (0, 0) node[main node](x_1) [label=left:$x_1$] {}; + \draw (5, 2) node[main node](x_2) [label=above:$x_2$] {}; + \draw (7, 2) node[main node](x_3) [label=above:$x_3$] {}; + \draw (10, 0) node[main node](x_4) [label=right:$x_4$] {}; + \draw (4.5, -3) node[main node](x_{n - 1}) [label=below:$x_{n - 1}$] {}; + % \draw (7, -1) node[main node](x_t1) [label=right:] {}; + % \draw (6.5, -1.5) node[main node](x_t12) [label=right:] {}; + % \draw (6, -2) node[main node](x_t13) [label=right:] {}; + \draw (1, -3) node[main node](x_n) [label=below:$x_n$] {}; + \node at ($(x_4)!.5!(x_{n - 1})$) {\huge{\reflectbox{$\ddots$}}}; + + \draw (x_3) -- (x_n); + \draw (x_1) -- (x_{n - 1}); + \draw (x_4) -- (x_n); + \draw (x_2) -- (x_{n - 1}); + \draw (x_2) -- (x_4); + \end{tikzpicture} + \end{center} + + Переменные будут отвечать за вершины. Соорудим нашу формулу: + + Любые 2 вершины, между которыми нет ребра, не могут быть взяты обе. + \begin{itemize} + \item $(\overline{x_v} \vee \overline{x_u})$ при всех $(v, u) \not\in E$. + \end{itemize} + + Введём такую величину --- $d_{ij}$, отвечающую на вопрос, верно ли, что + среди первых $i$ вершин есть клика размера $j$. Заметим, что + $d_{ij} = d_{i - 1, j} \vee (d_{i-1,j-1} \wedge x_i)$, то есть либо есть + клика размера $k$ среди первых $i - 1$ вершины, либо среди первых $i - 1$ + есть клика размера $j - 1$ и взята вершина $i$. + + \begin{itemize} + \item $(\overline{d_{ij}} \vee d_{i - 1, j} \vee d_{i - 1, j - 1}) \wedge + (\overline{d_{ij}} \vee d_{i - 1, j} \vee x_i)$ --- если $d_{i - 1, j} = 0$ + и $x_i = 0$, тогда точно $d_{ij} = 0$ и выполняются оба дизъюнкта. + Если $d_{i - 1, j} = 0$ и $d_{i - 1, j - 1} = 0$, то $d_{ij} = 0$ в обоих + случаях. Это делаем при $1 \leqslant i \leqslant n; 1 \leqslant j \leqslant k$. + + \item $(d_{ij} \vee \overline{d_{i - 1, j}}) \wedge (d_{ij} + \vee \overline{d_{i - 1, j - 1}} \vee \overline{x_i})$. Это те же условия, + только мы здесь хотим сделать $d_{ij} = 1$, если выполнено хотя бы одно + условие. Это делаем при $1 \leqslant i \leqslant n; 1 \leqslant j \leqslant k$. + \end{itemize} + + Начальные условия (среди первых ): + + \begin{itemize} + \item $d_{0j} = 0$ при $1 \leqslant j \leqslant k$ --- среди нуля вершин + нет клики размера хотя бы 1. + \item $d_{i0} = 1$ при $0 \leqslant i \leqslant n$ --- среди первых + $i$ вершин есть клика размера 0. + \end{itemize} + + Финальное состояние: + + \begin{itemize} + \item $(d_{nk})$ --- ответ на задачу. + \end{itemize} + + Легко видеть, что это и есть $\SAT$, притом формула выполняется тогда и только + тогда, когда есть клика размера $k$. Причём сведение, очевидно, полиномиально. + + Теперь в другую сторону: + + Рассмотрим любую $\SAT$ формулу. Пусть у нас есть $k$ дизъюнктов. + Выпишем всех их (каждый литерал --- отдельная вершина) в виде графа. + Внутри дизъюнкта вершины не будем соединять, + а также не будем соединять вершины в различных дизъюнктах, которые отвечают + сразу за $x_i$ и $\overline{x_i}$. Теперь запустим решение задачи о поиске + клики размера $k$. Если решение нашлось, то в каждой части графа, отвечающего + за отдельный <<дизъюнкт>>, выбрана ровно 1 вершина. Иначе в каком-то дизъюнкте + выбрано 2, а мы не соединяли вершины в одном и том же дизъюнкте. Поэтому + в каждом дизъюнкте выбран ровно 1 литерал. Сделаем эти литералы равными единице. + Те переменные, которые мы не выбрали, положим единице. Заметим, что мы + не сделали одновременно $x_i$ и $\overline{x_i}$ равными единице, так как + иначе между ними было бы ребро. А мы договорились, что такого ребра нет. + + То, что любому решению $\SAT$ формулы соответствует какая-то клика в построенном + графе следует из почти дословных рассуждений выше, что завершает док-во, что + задача про поиск клики данного размера лежит в $\NPCclass$. +\end{proof} + +Теперь поговорим про задачу о доминирующем множестве размера $k$. Напомним, что мы +хотим в данной задаче найти $k$ вершин так, что оставшиеся вершины соединены +хотя бы с одной из выбранных вершин. Докажем следующее сведение: + +Теперь поговорим о вершинном покрытии графа размера $k$. +Вспомним, что вершинное покрытие +это множество вершин такое, что любое ребро инцидентное хотя бы одной вершине +из множества. Неудивительно, эта задача тоже $\NPCclass$. + +\begin{Theorem} + $\mathsf{Vertex\_cover} \in \NPCclass$. +\end{Theorem} + +\begin{proof} + Сведём 3-$\SAT$ к этой задаче. + + Ну здесь как раз нам и понадобится факт, что в любой КНФ, где дизъюнкты имеют + размер не более 3, можно сделать ровно 3. + + Добавим 3 переменных $x, y, z$. Мы хотим их сделать всегда $false$. Давайте + напишем 7 дизъюнктов длины 3 с этими переменными, кроме одного --- + $(x \vee y \vee z)$. Если хотя бы одна переменная равна 1, то несложно + убедиться, что + формула будет равна 0 (просто перебор). Значит все равны 0. То есть решения + существуют тогда и только тогда, когда $x = y = z = 0$. Поэтому их не жалко + добавлять в те дизъюнкты, где не хватает литералов до количества 3. + + Теперь каждый дизъюнкт содержит ровно 3 переменных. + + Теперь построим такой граф: каждый дизъюнкт отвечает треугольнику, причем + в различных треугольниках мы соединяем вершины, соответствующие $x_i$ и + $\overline{x_i}$. Проиллюстрируем это рисунком для любых 2 различных + треугольников: + + \begin{center} + \begin{tikzpicture} + \tikzstyle{every node}=[draw,circle,fill=white,minimum size=4pt, + inner sep=0pt] + \draw (2,-2) node (x_i) [label=left:${x_i}$] {} + -- ++(240:1.5cm) node (x_j) [label=left:${x_j}$] {} + -- ++(0:1.5cm) node (x_k) [label=below:${\overline{x_p}}$] {} + -- (x_i); + + \draw (8,-2) node (x_j1) [label=right:${x_j}$] {} + -- ++(240:1.5cm) node (x_i1) [label=left:${\overline{x_i}}$] {} + -- ++(0:1.5cm) node (x_t) [label=below:${\overline{x_t}}$] {} + -- (x_j1); + + \draw (x_i) to [out=20,in=-100] (x_i1); + \end{tikzpicture} + \end{center} + + Теперь, если есть решение формулы, давайте докажем, что у нас есть решение + задачи о вершинном покрытии размера $2k$, где $k$ --- количество дизъюнктов. + + По решению выберем в каждом треугольнике, где значение литерала равно 1. И + отметим 2 другие вершины в качестве покрытия. Докажем, что это действительно + вершинное покрытие. Ясно, что в каждом треугольнике все рёбра будут + инцидентные какой-то вершине, так как выбраны ровно 2 вершины. Осталось + разобраться с ребрами между $x_i$ и $\overline{x_i}$. Если ни одна + вершина не покрывает это ребро, тогда и $x_i$, и $\overline{x_i}$ были + равны 1, что невозможно. Значит мы нашли вершинное покрытие размера $2k$. + + Обратно. Пусть у нас есть покрытие размера $2k$, тогда в каждом треугольнике + выбрано не меньше 2 вершин, иначе какое-то ребро не будет покрыто вершиной. + С другой стороны их не больше 2, так как иначе по принципу Дирихле найдётся + треугольник, в котором покрыто меньше 2 вершин. + + Теперь возьмём во всех треугольниках и сделаем литерал равным единице, который + не лежит в этом покрытии. Остальным переменным, которые мы не использовали, + выставим 1 (с ними всё корректно, мы их не использовали). + Осталось понять, что мы корректно выставили всем переменным + значения. Если мы вдруг захотели выставить $x_i = 1$ и $\overline{x_i} = 1$, + то эти обе вершины не лежали в вершинном покрытии, а между ними есть ребро, + поэтому вершинное покрытие было некорректным. + + Осталось проверить, что эта задача из $\NPclass$. Действительно, легко + по множеству вершин определить, является ли это множество вершинным покрытием + (надо просто просмотреть все рёбра). Значит эта задача является $\NPCclass$. +\end{proof} + +\subsection{Другие классы алгоритмов} + +Все мы знаем, что проблема останова невычислима. Все классы алгоритмов, +которые считают, что проблема останова невычислима обозначают за $\mathbf{H_0}$. Вот +начинают рассматривать некоторые классы алгоритмов, при условии, что мы +умеем решать проблему остановки. Этот класс обозначают за $\mathbf{H_1}$, но это ещё +не всё! Проблема остановки с оракулом проблемы остановки на обычной МТ тоже +невычислима. И если уметь решать и эту проблему, то такие классы алгоритмов +обозначают за $\mathbf{H_2}$ и так далее. Нужно ли это кому-то? Вряд ли. Какая разница, +если мы уже не умеем решать проблему остановки, то зачем рассматривать случаи, +когда мы умеем это делать? -Непонятно, но знать об этом стоит. + +\begin{Def} + Класс $\mathbf{L}$ --- это те языки, для которых существует МТ, + которая работают с $\O(\log n)$ дополнительной + памятью. Легко показать, что $\mathbf{L} \subseteq \Pclass$ (оставим, как упражнение читателю). +\end{Def} + +Пример задачи --- узнать длину строки на входе. Нам нужно все $\O(\log n)$ бит, +чтобы закодировать длину на входе длины $n$. + +\begin{Def} + Класс $\mathbf{BPP}$ (от англ. Bounded-Error Probabilistic Polynomial) те языки, + для которых существует + недетерминированная МТ (использующая генератор случайных чисел, МТ выбирает + переход по таблице переходов с некоторой равной вероятностью), + которые ошибаются с вероятностью не более $\frac{1}{3}$. +\end{Def} + +Почему $\frac{1}{3}$? По схеме Бернулли, если $p < 1/2$, то мы можем +быть сильно уверены в правильности ответа после многократного запуска (например, $\O(n)$ вероятность +будет сравнима с экспонентной от входа). Про +$\frac{1}{3}$ просто договорились. + + +\begin{Def} + Класс $\mathbf{RP}$ (от англ. Randomized Polynomial) это те языки, для которых, + если слово не принадлежит языку, то вероятность, что МТ допустит это слово + равна 0. Если принадлежит, то вероятность не меньше $\frac{1}{2}$, что МТ + допустит (мы опять рассматриваем недетерминированные МТ с генератором случайных + чисел). +\end{Def} + +Примеры таких алгоритмов --- хэши. + +Класс $\mathbf{coRP}$ определяется также, только поменяны местами выражения +<<принимает>> и <<не принимает>>. + +\begin{Def} + Класс $\mathbf{ZPP}$ (от англ. Zero-Error Probabilistic Polynomial) это + языки, для которых существует вероятностная МТ, которая всегда отвечает + правильно и математическое ожидание времени работы полиномиально. +\end{Def} + +Упражнение читателю: $\mathbf{ZPP} = \mathbf{RP} \cap \mathbf{coRP}$. + +Зачем мы приводим здесь все эти классы? При приёме в аспирантуру всегда +есть вопрос про классы алгоритмов, поэтому просто полезно об этом знать. + + +На этом наш курс подошёл к концу. + +% \end{document} diff --git a/algo_pilot/images/Airat.jpg b/algo_pilot/images/Airat.jpg new file mode 100644 index 0000000..b27caec Binary files /dev/null and b/algo_pilot/images/Airat.jpg differ diff --git a/algo_pilot/images/Nebudem.jpg b/algo_pilot/images/Nebudem.jpg new file mode 100644 index 0000000..3945179 Binary files /dev/null and b/algo_pilot/images/Nebudem.jpg differ diff --git a/algo_pilot/images/alpha.png b/algo_pilot/images/alpha.png new file mode 100644 index 0000000..bd7d5cf Binary files /dev/null and b/algo_pilot/images/alpha.png differ diff --git a/algo_pilot/images/graph.png b/algo_pilot/images/graph.png new file mode 100644 index 0000000..8453d55 Binary files /dev/null and b/algo_pilot/images/graph.png differ diff --git a/algo_pilot/images/velosiped.jpg b/algo_pilot/images/velosiped.jpg new file mode 100644 index 0000000..f0fd8d3 Binary files /dev/null and b/algo_pilot/images/velosiped.jpg differ diff --git a/algo_pilot_16_edition/book/1_lecture.tex b/algo_pilot_16_edition/book/1_lecture.tex new file mode 100644 index 0000000..5595e8e --- /dev/null +++ b/algo_pilot_16_edition/book/1_lecture.tex @@ -0,0 +1,35 @@ +\section{Немного теории вероятностей} + +\textbf{Disclaimer 1.} Это первая из двух глав теории вероятностей. В них мы будем говорить исключительно о дискретной (с конечными вероятностными пространствами) вероятности, так как в алгоритмах ничего другого особо не понадобится. Кроме того, эти две главы не заслуживают даже названия «Начала теории вероятностей», так как являются совсем частным случаем общей теории вероятностей. Несмотря на это, изложенный в них кусочек начала теорвера достаточен для того, чтобы понимать, что происходит. \par + +\textbf{Disclaimer 2.} Иногда (примерно всегда) мы будем ставить знак «$=$» между числами тогда, когда его ставить в строгом смысле не очень честно. Однако, поскольку нас всюду интересует ассимптотическое поведение величин, то этот знак будет стоять вполне себе честно. \par + +\begin{definition} + \textit{Вероятностное пространство} $\left( \Omega, 2^{\Omega}, \P \right)$ -- структура, состоящая из: + \begin{itemize} + \item $\Omega$ -- множество элементарных исходов (конечное); + \item $2^{\Omega}$ -- множество всевозможных событий (наборов исходов); + \item $\P$ -- функция вероятности $\P: 2^{\Omega} \to [0, 1]$ такая, что $\P(\Omega) = 1$. + \end{itemize} +\end{definition} + +Теперь договоримся о некоторых обозначениях и лексике. Вместо $\P(\lbrace\omega\rbrace)$ мы всегда будем писать $\P(\omega)$ и называть это \textit{вероятностью исхода $\omega$}. Если вероятность какого-то события $B \in 2^{\Omega}$ равна нулю, то есть $\P(B) = 0$, то событие $B$ называется \textit{невозможным}. Если же $\P(B) = 1$, то $B$ называется \textit{достоверным} событием. \par + +Через $\P(A \vert B)$ будем обозначать вероятность события при условии наступления события $B$. Такая вероятность считается по формуле +\[ + \P(A \vert B) = \frac{\P(A \cap B)}{\P(B)} +\] + +\begin{definition} + \textit{Независимыми} называются события $A$ и $B$, если $\P(A \vert B) = \P(A)$ или $\P(A) \cdot \P(B) = \P(A \cap B)$. \par + \textit{Несовместными} называются события, для которых $\P(A \vert B) = 0$. +\end{definition} + +\begin{definition} + $A_1, \ldots, A_n$ - множство попарно несовместных событий, то есть $\forall i, j \ \P(A_i \vert A_j) = 0$. Если $\P(\bigcup \limits_{i = 1}^{n} A_i) = 1$, тогда набор $\set{A_i}_{i = 1}^{n}$ называется \textit{полной группой событий}. +\end{definition} + +Тогда если есть событие $B$ и полная группа событий $\set{A_i}_{i = 1}^{n}$, тогда $B = \bigcup \limits_{i = 1}^{n} B \cap A_i$ и +\[ + \P(B) = \sum \limits_{i = 1}^{n} \P(B \cap A_i) = \sum \limits_{i = 1}^{n} \P(B \vert A_i) \cdot \P(A_i) +\] \ No newline at end of file diff --git a/algo_pilot_16_edition/book/2_lecture.tex b/algo_pilot_16_edition/book/2_lecture.tex new file mode 100644 index 0000000..6b98c5c --- /dev/null +++ b/algo_pilot_16_edition/book/2_lecture.tex @@ -0,0 +1,207 @@ +\section{Больше теории вероятностей} + +Рассмотрим функцию $\xi$, определенную на вероятностном пространстве $\Omega$:$$\xi:\Omega\rightarrow \R$$ +Математическим ожиданием $\xi$ называется такая величина: +$$\E\xi=\sum_{\omega\in\Omega}\xi(\omega) \P(\omega)$$ + +\begin{example} + Пусть вы - опытный продавец мороженного. Вам нужно заранее забронировать место в парке развелечений, + поэтому вы хотите узнать, в какие дни стоит это делать. Вам известен прогноз погоды и то, сколько вы + зарабатываете за сутки в определенную погоду. \par + Вероятностное пространство событий: $\Omega = \set{\text{жара, облачно, дождь, ураган}}$. \par + $\xi(\text{жара}) = 100\$, \ \xi(\text{облачно}) = 50\$, \ \xi(\text{дождь}) = 10\$, \ \xi(\text{ураган}) = 1\$$. \par + Аренда места обходится в $50\$$ за сутки. \par + Пусть будет жарко с вероятностью $0.9$ и облачно с вероятностью $0.1$. Тогда: + \[ + \E\xi = 0,9 \cdot 100\$ + 0,1 \cdot 50\$ - 50\$= 45\$ + \] + Если все исходы равновероятны, то: + \[ + \E\xi = 100 \cdot 0.25 + 50 \cdot 0.25 + 10 \cdot 0.25 + 1 \cdot 0.25 = 50\$ + \] +\end{example} + +Введем определение индикаторной случайно величины. \par + +\begin{definition} + Индикаторная случайная величина $I_A$ события $A$ - величина, принимающая значение $1$, если событие $A$ произошло, и $0$ в обратном случае. \par + \[ + I_A = + \left \lbrace + \begin{array}{lc} + 1, & \P(A)\\ + 0, & 1-\P(A) + \end{array} + \right. + \] +\end{definition} + +Тогда $\E I_A = \P(A)$. \par +Заметим, что для любого $r \subset R$ верно, что $\P(\xi \in r) = \sum_{\xi(\omega) \in r} \P(\omega)$. \par +Мы уже знакомы с понятием «независимые события». Теперь мы хотим понять, какие случайные величины являются независимыми. \par + +\begin{definition} + Случайные величины $\xi$ и $\psi$ независимы, если для любых $r_1 \in N(\xi)$ и $r_2 \in N(\psi)$, где $N(\ldots)$ - область значений величины, верно: + \[ + \left \lbrace + \begin{array}{l} + A = \xi \in r_1\\ + B = \psi \in r_2 + \end{array} + \right. + \Rightarrow \P(A)\P(B) = \P(A \cap B) + \] +\end{definition} + +\begin{definition} + Случайные величины $\xi$ и $\psi$ независимы, если для $\forall x,y \in \R$, верно: + \[ + \left \lbrace + \begin{array}{l} + A = (\xi \equiv x) \\ + B = (\psi \equiv y) + \end{array} + \right. + \Rightarrow \P(A)\P(B) = \P(A \cap B) + \] +\end{definition} + +Докажем, что эти определения эквивалентны. + +\note{Я вообще не верю в то, что логика доказательства верна. Когда доказывается эквивалентность двух утверждений $A \Rightarrow B$ и $C \Rightarrow D$, то доказывается $A \Leftrightarrow C$.} + +\begin{proof} + Пусть $A_1 \ldots A_n$, где $n$ - число элементов в $r_1$. $A_i = (\xi = x_i), x_i \in r_1$. \par + \begin{align*} + & \P(A) = \P(A_1)+ \ldots +\P(A_n) + & \P(B) = \P(B_1)+...+\P(B_m) + \end{align*} + + \begin{align} + & (\P(A_1) + \P(A_2) + \ldots + \P(A_n))(\P(B_1) + \P(B_2) + \ldots + \P(B_m)) = \\ + = & \sum_{i=1}^{n}\sum_{j=1}^{m}\P(A_i)\P(B_j) = \sum_{i=1}^{n}\sum_{j=1}^{m}\P(A_i \cap B_j) = \P(A \cap B) + \end{align} +\end{proof} + +Теперь рассмотрим самое главное свойство случайной величины. Мы будем использовать это свойство на протяжении всего курса алгоритмов. \par + +\begin{theorem} +\[ + \E(\alpha\xi + \beta\psi) = \alpha \E\xi + \beta \E\psi +\] +\end{theorem} + +\begin{proof} + \begin{align*} + \E(\alpha\xi + \beta\psi) = & \sum_{\omega \in \Omega}(\alpha\xi(\omega) + \beta\psi(\omega))\P(\omega) = \\ + = & \alpha \sum \xi(\omega)\P(\omega) + \beta \sum \psi(\omega)\P(\omega) = \\ + = & \alpha \E\xi + \beta \E\psi + \end{align*} +\end{proof} + +\begin{example} + Найти математическое ожидание количества статичных точек($p_i = i$) в перестановке из $n$ элементов. + \[ + \E\xi = \E(I_1 + ... I_n) = \sum_{i=1}^{n}\E I_i = \sum_{i=1}^{n}\P(I_i) = \sum_{i=1}^{n}\frac{1}{n}= 1 + \] +\end{example} + +Мы теперь знаем, что $\E(\xi + \psi) = \E\xi + \E\psi$. Верно ли, что $\E(\xi \psi) = \E(\xi)\E(\psi)$? \par + +\begin{theorem} + Если $\xi$ и $\psi$ - независимые величины, то $\E(\xi \psi) = \E(\xi) \E(\psi)$. +\end{theorem} + +\begin{proof} + \begin{align*} + \E\xi = & \sum_{\omega \in \Omega} \xi(\omega)\P(\omega)=\sum_{x\in N(\xi)}x\P(\xi = x) \\ + \E(\xi \psi) = & \sum z(\xi \psi = z) = \sum_{x \in N(\xi)}\sum_{y \in N(\psi)} \P((\xi = x)\cap (\psi = y)) = \\ + = & \sum_{x}\sum_{y}xy\P(\xi = x)\P(\psi = y) = \sum_{x}x\P(\xi = x) \sum_{y}y\P(\psi = y) = \E(\xi) \E(\psi) + \end{align*} +\end{proof} + +\begin{definition} + Дисперсией величины $\xi$ называют такую величину $\D \xi$, что + \[ + \D\xi=\E(\xi - \E\xi)^2 = \E \xi^2 - (\E \xi)^2 + \] +\end{definition} + +\begin{theorem}{\rm Неравенство Маркова (без док-ва)} + \[ + \xi > 0, \ \P(\xi \geqslant{a}) \leqslant{\frac{\E\xi}{a}} + \] +\end{theorem} + +\begin{theorem}{\rm Неравенство Чебышёва (без дока-ва)} + \[ + \P(|\xi - \E\xi| \geqslant{a}) \leqslant{\frac{\D\xi}{a^2}} + \] +\end{theorem} + +\begin{example} + + Найти максимальную возрастающую подпоследовательность в случайной перестановке $a_1...a_n$, то есть найти $j_1,,j_k$ такие, что $a_{j_1} < a_{j_2} < ... < a_{j_k}$. + + \begin{algorithm} + \begin{algorithmic} + \Let{$cur$}{$-1$} + \For {$i:1 \to n$} + \If{$a_i > cur$} + \Let{$cur$}{$a_i$} + \EndIf + \EndFor + \end{algorithmic} + \end{algorithm} + +\end{example} + +\note{Что такое $A_k$?} + +Пусть величина $\xi$ -- длина максимальной возрастающей последовательности. Тогда +\[ + \E\xi = \E(I_1 +...+ I_n) = \sum \E I_k = \sum \P(A_k) = \sum_{k=1}^{n} \frac{1}{k} = \log n. +\] + + +\begin{example} + Дан взвешенный граф $G(V,E), w(e) \geq 0$. Найти максимальный разрез. (разрез в графе -- нетривиальное подмножество $A \subset V$ его вершин, величина разреза - сумма весов ребер, один конец которых лежит в $A$, другой - в $\overline{A}$). Тогда величина разреза это + \[ + w(A)=\sum \limits_{u \in A \\ v \in \not{A}} s(uv), + \] + + где $U_A$ - множество ребер, лежащих на разрезе, индуцированном множеством $A$. \par + + Решим задачу таким алгоримом: переберем все вершины, будем добавлять каждую из них в $A$ с + вероятностью $\frac{1}{2}$. Докажем, что математическое ожидание величины $w(A)$ это хотя бы половина оптимального ответа. \par + + Вероятность того, что ребро лежит на оптимальном разрезе - $\frac{1}{2}$, потому либо оба конца лежат в $A$ или $\overline{A}$, либо один из концов лежит в $A$, другой - в $\overline{A}$. \par + \[ + \E\xi = \sum \E I(e \in U_A)w(e) = \sum w(e)\P(e \in U_A) = \sum \frac{1}{2} w(e) = \frac{1}{2} \sum w(e) + \] +\end{example} + +\begin{example} + Приведем пример алгоритма построения случайного дерева. Пусть 1-я вершина - это корень. \par + + \begin{algorithm} + \begin{algorithmic} + \For {$i:2 \to n$} + \If{$a_i > cur$} + \Let{$\text{parent}(i)$}{$\text{rand}(1, i - 1)$} + \EndIf + \EndFor + \end{algorithmic} + \end{algorithm} + + Докажем, что $\forall u,v \ \E g(v,u)=O(\log n)$. + \begin{align*} + & \E g(v,u) \leqslant \E(d(v) + d(u)) = \E d(v) + \E d(u) \\ + & \E d(i)=\log i (i \geqslant{2},d(1)=0) \\ + & \E d(i)=1+\sum_{j=1..i-1} \E d(j) \frac{1}{i-1} \\ + & \exists c: Ed(i) \leqslant{c \log n} \\ + & \E d(i) \leqslant{ 1+ \frac{1}{i-1} \sum c \log i} = \\ + & = 1 + \frac{\sum_{j=1}^{\frac{i}{2}} c \log j}{i-1} + \frac{\sum_{j=\frac{i}{2}+1}^{i} c \log j}{i-1} \\ + & \E d(i) \leqslant{1+\frac{1}{i-1} \sum c\log (i-1) + \frac{1}{i-1} \sum c\log i} = 1 + \frac{1}{i-1} \sum c\log i + \end{align*} +\end{example} \ No newline at end of file diff --git a/algo_pilot_16_edition/book/3_lecture.tex b/algo_pilot_16_edition/book/3_lecture.tex new file mode 100644 index 0000000..71c0fbe --- /dev/null +++ b/algo_pilot_16_edition/book/3_lecture.tex @@ -0,0 +1,141 @@ +\section{Методы анализа сортировок за квадратное время} +\epigraph{Если мы скажем, что проходим на лекции бабл сорт, то нас засмеют, поэтому назовем нашу лекцию так.} +{Г.О. Евстропов} + +В процессе анализа алгоритма мы будем доказывать \textit{корректность} алгоритма и анализировать \textit{время его работы}. \par + +Существуют хотя бы три метода доказательства корректности алгоритма (нам их должно хватить): +\begin{enumerate} + \item по индукции; + \item от противного; + \item поиск инварианта. +\end{enumerate} + +\begin{definition} + «Задача о сортировке». Есть $n$ произвольных элементов $a_1, \ldots, a_n$. Хочется их упорядочить так, чтобы $a_{\pi(1)} \leq a_{\pi(2)} \leq \ldots \leq a_{\pi(n)}$. +\end{definition} + +\textbox{ + \medskip + \textbf{\large Лирическое отступление: RAM-модель} \par + В нашей RAM-подели будет: + \begin{itemize} + \item + \begin{tikzpicture} + \draw (0, 0) rectangle (0.3, 0.3); + \end{tikzpicture} + -- процессор. За единицу времени он умеет выполнять одно действие с целочисленными данными, а также запрос к одной ячейке пямяти. + + \item + \begin{tikzpicture} + \draw [step=0.3cm] (0, 0) grid (3, 0.3); + \end{tikzpicture} + -- память. Её всегда ассимпотически достаточно для любых действий (но не слишком много). Например, при $P(n)$ действий памяти будет примерно $c \cdot P(n)$. Кроме того, любая работа с куском памяти выполняется не быстрее, чем за длину этого куса. + \end{itemize} + + Что мы умеем хранить и делать в RAM-модели: + \begin{itemize} + \item целые числа; + \item вещественные числа; + \item $\pm, \ *, /, \%$ за $O(1)$; + \item все битовые операции выполняются за $O(1)$; + \item всякие $\sqrt{x}, \sin{x}, \cos{x}, \ldots$ мы тоже умеем вычислять за $O(1)$ (если противное не оговорено заранее). + \end{itemize} +} + +\newpage +\subsection{Сортировка пузырьком (bubble sort)} + + \begin{algorithm} + \caption{Bubble sort} + \begin{algorithmic} + \While{\Call{not\_sorted}{}} + \For{$i: 1 \to n - 1$} + \If{$a_i > a_{i+1}$} + \Call{swap}{$a_i, a_{i+1}$} + \EndIf + \EndFor + \EndWhile + \end{algorithmic} + \end{algorithm} + + Теперь нужно доказать корректность алгоритма. + \begin{proof_cor} + На каждом шаге количество инверсий уменьшается хотя бы на $1$, а значит за конечное число итераций алгоритм закончится. + \end{proof_cor} + + Оценим количество операций. Оно, очевидно, не превосходит количество инверсий, а их не более, чем $\frac{n(n+1)}{2}$. \par + +\subsection{Сортировка выбором} + \begin{algorithm} + \caption{Selection sort} + \begin{algorithmic} + \For{$i: n \to 1$} + \Let{p}{\Call{select\_max}}{$(1, i)$} + \State \Call{swap}{$a_p, a_i$} + \EndFor + \end{algorithmic} + \end{algorithm} + + \begin{algorithm} + \caption{Selection sort (recursive)} + \begin{algorithmic} + \Function{rec}{$a, n$} + \If{$n = 1$} \Return \EndIf + \Let{p}{\Call{select\_max}}{$1, i$} + \State \Call{swap}{$a_p, a_i$} + \State \Call{rec}{$a, n - 1$} + \EndFunction + \end{algorithmic} + \end{algorithm} + + \begin{proof_cor} + Докажем корректность индукцией по $n$. + + \begin{enumerate} + \item База. $n = 1$. Один элемент уже отсортирован. + \item Допустим, для какого-то $n$ алогоритм работает корректно, то есть сортировка работает для всех массивов длинны $n$. Рассмотрим массив из $n + 1$ элемента. Тогда на первой итерации алгоритма на место $a_{n+1}$ встанет максимальный элемент (то есть он встанет на своё место). Тогда после первой итерации в остальных $n$ элементах будут элементы меньше, чем $a_{n+1}$, а для них алогоритм работает корректно. + \end{enumerate} + \end{proof_cor} + + Теперь о времени работы. Докажем, что $t(n) \leq c_2 \cdot n^2$. + + \begin{proof_cor} + Действительно, выразим величину $t(n)$ рекурсивно через прыдудещий шаг. На $n$-том шаге алгоритм ищет максимальный элемент (за $c_1 \cdot n$ времени). Тогда + \[ + t(n) \leq c_1n + t(n-1). + \] + Воспользуемся индукцией по $n$. База очевидна, та что напишем переход: + \[ + t(n) \leq c_1n + c_2(n-1)^2 = c_1n + c_2n^2 - 2nc_2 + c_2. + \] + Возьмем $c_2 = c_1$ (нам же нужно выбрать $c_2$ такой, что...). + \note{Тут я не уверен.} + Тогда + \[ + t(n) \leq c_1n + c_1n^2 - 2nc_1 + c_1 = c_1n^2 + c_1 - c_1n \leq c_1n^2 = c_2n^2. + \] + \end{proof_cor} + +\subsection{Сортировка вставками} + + \textit{Инвариант.} На $i$-том шаге алгоритма префикс до $i-1$-го элемента отсортирован. + + \begin{algorithm} + \caption{Insertion sort} + \begin{algorithmic} + \For{$i:1 \to n$} + \Call{insert}{$a, i, a_i$} + \EndFor + \end{algorithmic} + \end{algorithm} + + \begin{proof_cor} + Очевидно, что на $n + 1$ шаге весь префикс будет отсортирован, а функция $insert$ вставит элемент $a_{n+1}$ на своё порядковое место внутри этого префикса. + \end{proof_cor} + + \begin{proof_time} + Всего выполняется $n$ внешних итераций. Функция $insert$ в худшем случае (при вставке элемента в самое начало) работает за $i$ итераций, где $i$ -- длина префикса. Таким образом получается $\frac{n(n+1)}{2}$ итераций, а значит $t(n) = O(n^2)$. + \end{proof_time} + +\subsection{Типы сортировок} diff --git a/algo_pilot_16_edition/book/book.fdb_latexmk b/algo_pilot_16_edition/book/book.fdb_latexmk new file mode 100644 index 0000000..542e83e --- /dev/null +++ b/algo_pilot_16_edition/book/book.fdb_latexmk @@ -0,0 +1,278 @@ +# Fdb version 3 +["pdflatex"] 1479645392 "book.tex" "book.pdf" "book" 1479645394 + "./book.out" 1479645393 1630 c4d04b0a753f3de211dbc367eba7c0c7 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx1200.tfm" 1434577602 3308 eee81981029f67083258db36df06e523 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx1440.tfm" 1435233831 3304 6a543c07045572737981351171e0505e "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx1728.tfm" 1434577628 3312 d199be9bd555944e2403193d58a0256a "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx2074.tfm" 1435790905 3316 0992aa03d0c75498a0b6fb905d9eaab6 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx2488.tfm" 1434577613 3304 10c1a71cb294f8a8339c46823bcc15f2 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lacc1095.tfm" 1456397585 3168 d8e0bf3b26d5da63646e71a1fc6cb52a "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lacc1200.tfm" 1457550250 3164 a3c854a704528ade5328a1ee68af6394 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lacc1728.tfm" 1447067311 3164 c00eed63ebc4217cc2c5e436215811af "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm0600.tfm" 1447068950 3248 7c0b9d76a2cd84ed06764a4c6eea5de4 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm0800.tfm" 1447068945 3240 04766e423166ba63b7fbbf132b8618cb "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1095.tfm" 1435766151 3264 ead613d557baebcc53cf028c9c92d927 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1200.tfm" 1434577597 3240 c2435f2b5cd66d4930bc29b8df87967e "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1440.tfm" 1435233827 3256 3daaa33cf35cf3f354983aa3214ecd7f "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1728.tfm" 1434577623 3252 92d08740ce00199d6cf9ff4aaada81d1 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm2074.tfm" 1444039475 3264 03c2b9e4787a40d3b9c197c38b93b558 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm2488.tfm" 1435766074 3264 102508a989355317d27912fb22a38399 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lati1095.tfm" 1435790920 3540 aa544087ee3edf9ee068cbdc0ae52760 "" + "/Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lati1200.tfm" 1434577633 3512 f3a56cfe95a159371df20f73d1eb107d "" + "/usr/local/texlive/2015/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t2a.enc" 1136849721 3141 82d5616418ed8d5de703b3951bedecb4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/map/fontname/texfonts.map" 1272929888 3287 e6b82fe08f5336d4d5ebc73fb1152e87 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1136768653 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm" 1136768653 1528 abec98dbc43e172678c11b3b9031252a "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr10.tfm" 1136768653 1296 45809c5a464d5f32c8f98ba97c1bb47f "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmss10.tfm" 1136768653 1316 b636689f1933f24d1294acdf6041daaa "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmss12.tfm" 1136768653 1324 37b971caf729d7edd9cbb9f9b0ea76eb "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmss8.tfm" 1136768653 1296 d77f431d10d47c8ea2cc18cf45346274 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/latex-fonts/lasy6.tfm" 1136768653 520 4889cce2180234b97cad636b6039c722 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/rsfs/rsfs10.tfm" 1229303445 688 37338d6ab346c2f1466b29e195316aa4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/rsfs/rsfs5.tfm" 1229303445 684 3a51bd4fd9600428d5264cf25f04bb9a "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb" 1248133631 30251 6afa5cb1d0204815a708a080681d4674 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb" 1248133631 36741 fa121aac0049305630cf160b86157ee4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi6.pfb" 1248133631 37166 8ab3487cbe3ab49ebce74c29ea2418db "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb" 1248133631 35469 70d41d2b9ea31d5d813066df7c99281c "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1248133631 32722 d7379af29a190c3f453aba36302ff5a9 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb" 1248133631 32734 69e00a6b65cedb993666e42eedb3d48f "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb" 1248133631 32726 0a1aea6fcd6468ee2cf64d891f5c43c8 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmss12.pfb" 1248133631 24393 3b7eb51a67a0a62aec5849271bdb9c2e "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb" 1248133631 32626 4f5c1b83753b1dd3a97d1b399a005b4b "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb" 1248133631 31764 459c573c03a4949a528c2cc7f557e217 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb" 1248133631 34694 ad62b13721ee8eda1dcc8993c8bd7041 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx1200.pfb" 1215737283 140176 d4962f948b4cc0adf4d3dde77a128c95 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb" 1215737283 135942 859a90cad7494a1e79c94baf546d7de5 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx1728.pfb" 1215737283 139826 9213617a7cb78635fc326b859c0b2273 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx2074.pfb" 1215737283 140194 627cc7f36c05b80e25d178974ccb3442 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx2488.pfb" 1215737283 135938 299ac3a69892db3b7674a8b2543b0a77 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfcc1095.pfb" 1215737283 118110 8476623e969cc771939ade7a737ae636 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfcc1200.pfb" 1215737283 108594 1a08a22405bc37650b977f219cc3597d "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfcc1728.pfb" 1215737283 107203 e671936e3a8639d41d1d76852217c874 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb" 1215737283 136101 f533469f523533d38317ab5729d00c8a "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb" 1215737283 131078 d96015a2fa5c350129e933ca070b2484 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfti1095.pfb" 1215737283 196446 8fbbe4b97b83e5182def6d29a44e57fb "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfti1200.pfb" 1215737283 198221 ca5aa71411090ef358a6cc78b7458365 "" + "/usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii" 1337017135 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf" 1367878877 6963 2e0cb3d93aa64508bdb0db58ae900d97 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/babel-russian/russianb.ldf" 1430862737 23839 e89907af14f3b927bf59befb5778ca33 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.def" 1411763270 49725 b40154b767b0073ee42b35911042b793 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.sty" 1411763270 13212 dc56c11a26f3ea97bcf005eeda274583 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty" 1303254447 8237 52810bdb4db2270e717422560a104aea "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty" 1338332114 189108 8b3553a56c83ff61acecb36b75d817e2 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty" 1338332114 70752 45fa392800e07da61fa13446ad46b34d "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty" 1303254447 7140 ece2cc23d9f20e1f53975ac167f42d3e "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty" 1335995445 6797 68c89f65e01894df882dd523d3fc0a8f "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty" 1335995445 8253 3bdedc8409aa5d290a2339be6f09af03 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty" 1335995445 18425 775b341047ce304520cc7c11ca41392e "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1288312291 1006 b103be0bfc8c1682ff1fa9760697a329 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1393459310 42678 ea82fd948b4303ce6a2c8e25d5e8f8aa "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1393459310 19287 b2041c22301def2360f03c004d16068d "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1393459310 6653 6c617c4a5106d9f40e3d70946ba4e0ac "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1393459310 7041 a891ad72049e17c4e366c40ca37b0ccb "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1393459310 4625 40c07e9f6f2f7c674704b3f2055560ce "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1203877327 2631 7eefa6cdbefd8d4e2bad7262cf1094cd "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1393459310 43477 81143b33d9ebafdeead07ede13372427 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1393459310 17436 8d99d4113be311daf23deff86991ee7d "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1393459310 20857 256da99fc70ea570aad1d50fdfd51464 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1393459310 9641 711f0edc22c180a5caf168b6e8970057 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1393459310 34516 658a71478d21df554bce9d9cd436203a "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1288312291 3052 e5672c657232fd63b0a9853b0746297c "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1393459310 16849 86fed972a2b3ad61208a6422e104bf26 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1393459310 21541 4cd19f8ff7dd74d5aa7d803a6397af84 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1393459310 17423 a0f09c822b83b65445bc3ac25542dcc6 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1393459310 8943 2e2495b057f8f0035b5568394d489963 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex" 1393459310 15934 b941bd3ae7b33179029513707d1f0ff6 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex" 1393459310 5484 4bb4a5cbbd05d6f17a261b59dbd014f1 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex" 1203727794 319 d246cee5ce1aaf2afe558acd4731d5ba "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex" 1288312291 1255 7940bad47e253420d587a4a875c7c06c "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex" 1203727794 443 6742ac279d940e87725265f9145ed090 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex" 1288312291 4034 0a8cd33cf30d262ec971380666acb2d0 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1288312291 11599 d694704a88e2f9007c996d3a6a4d629c "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1393459310 175287 31eb66e838dd5e10589736193a31943c "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex" 1288312291 8854 7be3c3b9eb0de90885a881085ce8e118 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex" 1288312291 7089 02ec01183269fb6991e0be82d034128a "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex" 1393459310 58362 484e8d91694457d194854193b6592518 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex" 1393459310 65978 3f49ea85b3e396e3560678d1a548baeb "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1393459310 32969 dbcfd5a7de6a0f7255c333ef60287d59 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex" 1393459310 14199 2158f2770835a26274ae2f9fcbd179d1 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1393459310 454 9e9e7c99f4da4f41698be21eaef4938e "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1393459310 13416 940ea6971d7a65dc440d3479939c66ae "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1393459310 91879 5b3cc8d94c47a5b742393a410f298724 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1393459310 9375 5adc70f722abd29fc250d59e0694b548 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1393459310 21406 80daebd1f9f6a174d8dc77c5bc931bf4 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1393459310 7820 5140d142921f39003e02ccedd072823a "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1288312291 3534 c7f28fbac13616513e513efe93b8569b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1393459310 3167 7c9394e79aac27db96a92f9b2792b858 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1393459310 9165 99b6966558714c44c0b5ee44ae261ffc "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1288312291 6964 d4b5e82dabddda1c728063bb9c8a22ba "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1288312291 2688 139c6abc86761a6190c2f4bef5d752be "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1393459310 91075 1c1d7a7e8f0f737f72aa8becf0b37136 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1393459310 33289 b041d55e91f7382603e2dca6f9ad188d "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1393459310 7099 f44d505bae6c7c2b933cdd63441db4b9 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex" 1393459310 71902 658cc1e13f73daec4225b8fc1c27600b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1393459310 20934 2328bd2e04520e1ab077ac4ee13b8935 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1393459310 15785 e0b14c447df00370d2023fd5c9813190 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1393459310 42336 b13cf09dc317c76a2b165a8501d871cf "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1288312291 978 15af626ebd3d4d790aac19170dac04f2 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1393459310 5437 d91f93ed61ecdc57e119849b2d784a0b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1393459310 11969 518d66d5b5e20471ba00709ef9c2b267 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1393459310 34488 3bab2022cdd1acab0cd383d8a0ad641b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1203877327 1983 b5994ebbcee17f1ba3d29bb1bd696fcf "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1393459310 7881 d459d6057e13d10ce7a227ae44b7295e "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1393459310 22211 d696ef78c12269178882d218b2cf191d "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1393459310 36194 e194ef4e0b396b531a3891feb4b1cc22 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1393459310 33377 af391d6ad1bfcbe2278e191f48e43ba8 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1393459310 2286 b5c392d27790ca52b8f8e510ef5044e0 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1393459310 6833 114eda2cf1d348e0e7e477a1a4dc1941 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1393459310 16384 3fa06861c9a3391a75df39466f49655f "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1393459310 4500 b148f531c7670d59c695787be06a508b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading.code.tex" 1364427911 22559 76257f115d85b663d7d24acad1c08d07 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex" 1422740226 3047 aa82404aec57311271f4991c44bd71dc "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.tex" 1312159636 21786 2b041bb5736e1a953aa34c45c10b82b4 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.tex" 1262481251 4288 b8d6247899b21e3bb66bb11b24d30f2c "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex" 1346285630 13625 52a72232796269a1b40ae1540446ef98 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructureext.code.tex" 1312159636 24390 a91050077f9411f2aef1d9170ea974df "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.tex" 1364427911 18861 7dc35832c8ccea3aa73cdcd75ec0a60b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex" 1422740226 75816 7bf4a1f6c39ae5fff1c5a142a2b72b66 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex" 1422740226 4917 c5b4c19ef2e74c491caa881a723244ab "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex" 1422740226 71189 65d7e88c1cd3fc885385f6011c926028 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex" 1422740226 95281 deb64eaa5afb5bc8691b148da6a9089e "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_trig_format.code.tex" 1422740226 12158 74e2ba9574dbbb34068d9a7fe9a9327e "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex" 1430688073 441094 07e1de9a0fe618aa341bd6bd806924e1 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex" 1422740226 22206 6837e8502adbd475dd0bb448d03ddba4 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex" 1422740226 12468 c7bf8a342a149a08e4d693258edc2751 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex" 1325285919 2419 026baafbf72a109e199ede6fbbfd9caa "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex" 1430688073 520 6b1e8d0aa2d55eff015749a7d05ebada "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex" 1422740226 123672 25c1800798def4215fe7e519f171da69 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex" 1430688073 345197 4dc481c0be8f6ef6c62bd40d06f8bced "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex" 1430688073 17766 b94add329456f1781dfdaa983db0d684 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex" 1422740226 113706 7a67968ce5b1a2aa2395ca105466d6d4 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex" 1422740226 111712 97ccd8dbc5faf0775602cbe62fb0c2e1 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex" 1422740226 22370 2db69038409dfe005e67410d74dee301 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex" 1407365279 82229 804faa87f2ff37428c8d2cb653eb4ca4 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading.pgfsys-pdftex.def" 1364427911 5877 aa302309c1cdddc36dd3a00cbd806cfe "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex" 1351287374 3095 c82d281b748902a65be2ccca97360b11 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex" 1430688073 23050 a369aa910ef860a3621fe0459faa335c "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex" 1346285630 26859 7a4ee9d206fb0a0daa0d3108445afb57 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex" 1380839021 23958 1b96260863091af1669c3a38b1c4c9af "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex" 1430688073 29698 698fa0611a5a3839fc76055b6dbf3367 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex" 1430688073 66400 9ac4062b8b51d0c83072ab6c88502478 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex" 1312159636 3286 c17079ba50483e1ac1721268ea016041 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/ulem/ulem.sty" 1338588421 23756 854c01b779030ff5b2aad88ba7a119f2 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/algorithmicx/algorithmicx.sty" 1160617237 26750 ce139c05a983e19ddca355b43e29c395 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/algorithmicx/algpseudocode.sty" 1160617237 3457 d9077efe6b74c5a094199256af8d7d9a "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/algorithms/algorithm.sty" 1251330371 3249 15763257e50278eef5db1952ccde229c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amscls/amsthm.sty" 1428861406 12225 3cca0d18522255979a1047206228b9d0 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/euscript.sty" 1359763108 1319 275cecae59b75cbd38ce73df76acdb23 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1362954379 2412 2d98314dc5be38f455f8890deeb2d091 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty" 1362954379 4357 ad30ad08920902fc9b38caf35a3b0496 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty" 1362954379 79178 b2e326c351e876df0e5e23df2e02441b "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty" 1362954379 4082 502152465aedb8f6a3c4b0b7c0fa8ae5 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty" 1362954379 2637 846ebe982d3549c7ede7ce135456f54a "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls" 1428932888 20708 96f8bca6e380179cada1d49716376167 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/fontenc.sty" 1428932888 4572 f29f75cfae3acaf4667f1979db655af9 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/ifthen.sty" 1428932888 5159 bb529586d444e85eb00179221b678119 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/inputenc.sty" 1428932888 5619 3f48adceb9004b3fefe24c2d2df7d98e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/omscmr.fd" 1428932888 2256 09a793cb810c26c97ed035dcd724a0d0 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/omsenc.dfu" 1428932888 2005 572b09e94d01e22ed7d4000c92b6e220 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/ot1enc.dfu" 1428932888 2757 273e079c3d3a9830c5b4fa2a4ce69c51 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/size12.clo" 1428932888 9190 a2c71ff21fa1cfc03c403f5e246966b5 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.dfu" 1428932888 7617 8f111f916836ef9e09db7ecbcd4e01d6 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/t2aenc.dfu" 1428932888 9385 a3f47466c31dc81ebce682f41ecef9be "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/utf8.def" 1428932888 6484 2098550b79b15e713b69d9c8845f4437 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cmap/cmap.sty" 1215522782 2883 427a7f7cb58418a0394dbd85c80668f6 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cmap/ot1.cmap" 1177721415 1207 4e0d96772f0d338847cbfb4eca683c81 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cmap/t2a.cmap" 1215522782 1872 8a484407d6912048284390d9f7606e28 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cyrillic/t2acmr.fd" 1428932888 2350 aea5ec15a9fc621f63498b8910478706 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cyrillic/t2aenc.def" 1428932888 12040 8e32bd761154bb49de9af8d0164b52dc "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/enumitem/enumitem.sty" 1317339792 42666 6fa770e3485520a6a5f2ea7d259c8f8d "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/epigraph/epigraph.sty" 1252025458 4493 37cd2a99f1ea97dde5b8561155682d0e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/fancybox/fancybox.sty" 1274111957 27261 5ae6156674330dc345adb79b6e5d8966 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1160175134 20521 e5d13d98d57bd53d4fed3aa61bd29c86 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty" 1284422013 40502 e003406220954b0716679d7928aedd8a "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty" 1428932888 14285 20d80486c4ae98139889d8789596c967 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty" 1428932888 8125 557ab9f1bfa80d369fb45a914aa8a3b4 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty" 1428932888 2594 d18d5e19aa8239cf867fa670c556d2e9 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty" 1428932888 3439 44bd4a1da7f27787173f2e99116b0a7f "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hpdftex.def" 1352416072 51837 247bd8424b3835ef78c236dc1e0b4aef "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty" 1352416072 231792 5fc9dc7dd667e773a766ecc63bba7f4b "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty" 1351899753 12847 25b617d63258c4f72870c883493a3cf8 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def" 1352416072 14005 155ac8fad2e5dd7c2cdd130fabd96633 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/puenc.def" 1352416072 122263 ec12fdd2044f1507e5ae92ee7a5bbfae "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/jknapltx/mathrsfs.sty" 1137110241 300 12fa6f636b617656f2810ee82cb05015 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/jknapltx/ursfs.fd" 1137110241 548 cc4e3557704bfed27c7002773fad6c90 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg" 1254097189 802 7b8c8d72c24d795ed7720e4dfd29bff3 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg" 1278958963 3563 d35e897cae3b8c6848f6677b73370b54 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg" 1254097189 235 6031e5765137be07eed51a510b2b8fb7 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mathtools/mathtools.sty" 1431377668 51635 f312f437548973968539dd17991cc321 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mathtools/mhsetup.sty" 1407448394 5175 696879833890ce832e12746d98d0e932 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oml.cmap" 1215649417 1866 c1c12138091b4a8edd4a24a940e6f792 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oms.cmap" 1215649417 2370 3b1f71b14b974f07cef532db09ae9ee0 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mmap/omx.cmap" 1215649417 3001 252c8ca42b06a22cb1a11c0e47790c6e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/ms/everyshi.sty" 1177890616 3878 6aa7c08ff2621006e0603349e40a30a8 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty" 1303254447 3834 707ef09f31d7d2ea47ba89974755dfe0 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty" 1303254447 12029 04d7fdf76e0464c23b5aa3a727952d7c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty" 1335995445 7075 bd0c34fbf1ae8fd1debd2a554e41b2d5 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty" 1335995445 22417 c74ff4af6a1aa2b65d1924020edbbe11 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1303254447 9581 1158efc648bc09d5064db5703c882159 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def" 1306616590 55368 3c8a0d99822330f2dfabc0dfb09ce897 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1393459310 1190 4e20f1d26da9f86ba6a50d7ad16c48d2 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1288312291 410 5bf12ea7330e5f12c445332a4fe9a263 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1203877327 21115 facf03b7dbe5ea2f5f1dce1ac84b5d05 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1203727794 1091 d9163d29def82ee90370c8a63667742c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1203877327 339 592cf35cba3d400082b8a9a5d0199d70 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1393459310 306 0796eafca5e159e6ec2167a6d22d81b1 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1393459310 443 0b2e781830192df35c0fd357cf13e26e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1393459310 348 8927fde343487e003b01a4c2ca34073b "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1203727794 274 4cad6e665cc93ac2ac979039a94fa1e1 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1203877327 325 2bcd023400636339210573e2b3ee298b "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pgfplots/pgfplots.sty" 1422740226 3905 950b56ce7b0663634a7d0012af60243f "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/t2/mathtext.sty" 1137110910 4343 49ccf6e6f0927f24f20b51a6aaa48261 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/titlesec/titlesec.sty" 1324083561 37083 54a2e11f0f208916a9976d9e4837d144 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/tools/array.sty" 1428932888 13285 001a28447062ce32b9b4a62965626fc4 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/tools/calc.sty" 1428932888 10214 78c09985255ed93018b1db2c4e2f6deb "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/tools/indentfirst.sty" 1428932888 1617 b2e489ccac971e76869c5a9dae5229f8 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/tools/verbatim.sty" 1428932888 7264 8720371c12792118e8ec06018cd2e9c6 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/was/icomma.sty" 1137111079 1018 df058db1896806f044e2233bb506d425 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty" 1169481954 55224 a43bab84e0ac5e6efcaf9a98bde73a94 "" + "/usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf" 1428852030 31983 18aeec08f48baa3cf3508d538dd5f459 "" + "/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1432479641 1764542 91654ba72bdb667e84ea24f076ae16d8 "" + "/usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt" 1432479681 3849859 39a7d258195bde2394e244961601fbc5 "" + "/usr/local/texlive/2015/texmf.cnf" 1432479636 577 0d611272082f3cdb8e80e09a3c69cf07 "" + "1_lecture.tex" 1479075197 3889 0d12c4bcf690bf63fdcbef261fe2b314 "" + "2_lecture.tex" 1479237238 9965 0077bebf8ec5d6f1e020591c96e2fa6c "" + "3_lecture.tex" 1479645138 7009 b4ac232931a86710dde5f084a60aa3d5 "" + "book.aux" 1479645393 3669 e639f193b9f99f6e6a5e5e829114b509 "" + "book.out" 1479645393 1630 c4d04b0a753f3de211dbc367eba7c0c7 "" + "book.tex" 1479624779 234 64b1fb884a8a3b6a4a5a4c090cfe28aa "" + "header_book.sty" 1479645388 7706 3e5549e841f49d3fcb371470b5e6d18d "" + (generated) + "book.aux" + "book.pdf" + "book.log" + "book.out" diff --git a/algo_pilot_16_edition/book/book.fls b/algo_pilot_16_edition/book/book.fls new file mode 100644 index 0000000..a6d18a7 --- /dev/null +++ b/algo_pilot_16_edition/book/book.fls @@ -0,0 +1,424 @@ +PWD /Users/glebnovikov/Google Drive/HSE AMI/2016-2017/lectures/algo_pilot_16_edition/book +INPUT /usr/local/texlive/2015/texmf.cnf +INPUT /usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf +INPUT /usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt +INPUT book.tex +OUTPUT book.log +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/size12.clo +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/size12.clo +INPUT /usr/local/texlive/2015/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT header_book.sty +INPUT header_book.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/t2/mathtext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/t2/mathtext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/ulem/ulem.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/ulem/ulem.sty +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/latex-fonts/lasy6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cyrillic/t2aenc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cyrillic/t2aenc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cyrillic/t2acmr.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cyrillic/t2acmr.fd +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1200.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/t2a.cmap +OUTPUT book.pdf +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/t2a.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/utf8.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/utf8.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ot1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ot1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/omsenc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/omsenc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t2aenc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t2aenc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel-russian/russianb.ldf +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel-russian/russianb.ldf +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/epigraph/epigraph.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/epigraph/epigraph.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancybox/fancybox.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancybox/fancybox.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mathtools/mathtools.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mathtools/mathtools.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/calc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mathtools/mhsetup.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mathtools/mhsetup.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amscls/amsthm.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amscls/amsthm.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/algorithmicx/algpseudocode.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/algorithmicx/algpseudocode.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ifthen.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/algorithmicx/algorithmicx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/algorithmicx/algorithmicx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/algorithms/algorithm.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/algorithms/algorithm.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/float/float.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/float/float.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/verbatim.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/verbatim.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/was/icomma.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/was/icomma.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/enumitem/enumitem.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/enumitem/enumitem.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/indentfirst.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/indentfirst.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/euscript.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/euscript.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/jknapltx/mathrsfs.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/jknapltx/mathrsfs.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgfplots/pgfplots.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgfplots/pgfplots.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/ms/everyshi.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgffor.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pgf/math/pgfmath.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/sys/pgfplotssysgeneric.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/libs/pgfplotslibrary.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryfpu.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_trig_format.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructureext.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsarray.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsmatrix.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsdeque.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsbinary.data.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.verb.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/libs/pgflibrarypgfplots.surfshading.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading.pgfsys-pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/sys/pgflibrarypgfplots.surfshading.pgfsys-pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/util/pgfplotscolor.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.scaling.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduledecorations.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathmorphing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathmorphing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarydecorations.pathreplacing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/decorations/pgflibrarydecorations.pathreplacing.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryplotmarks.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplotmarks.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarycalc.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.meta.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarypositioning.code.tex +INPUT book.aux +INPUT book.aux +OUTPUT book.aux +INPUT /usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT book.out +INPUT book.out +INPUT book.out +INPUT book.out +INPUT ./book.out +INPUT ./book.out +OUTPUT book.out +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm2488.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx2488.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1440.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1728.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lacc1728.tfm +INPUT 1_lecture.tex +INPUT 1_lecture.tex +INPUT /usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm2074.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx2074.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx1200.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm0800.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm0600.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/jknapltx/ursfs.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/jknapltx/ursfs.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/rsfs/rsfs10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/rsfs/rsfs10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/rsfs/rsfs5.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lati1200.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmss12.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmss8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmss8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/omscmr.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/omscmr.fd +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lati1095.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmss10.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/larm1095.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/rsfs/rsfs10.tfm +INPUT 2_lecture.tex +INPUT 2_lecture.tex +INPUT 3_lecture.tex +INPUT 3_lecture.tex +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lacc1095.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx1440.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/labx1728.tfm +INPUT /Users/glebnovikov/Library/texlive/2015/texmf-var/fonts/tfm/lh/lh-t2a/lacc1200.tfm +INPUT book.aux +INPUT ./book.out +INPUT ./book.out +INPUT /usr/local/texlive/2015/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t2a.enc +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi6.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmss12.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx1200.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx1728.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx2074.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfbx2488.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfcc1095.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfcc1200.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfcc1728.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfrm1200.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfrm1440.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfti1095.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/cm-super/sfti1200.pfb diff --git a/algo_pilot_16_edition/book/book.pdf b/algo_pilot_16_edition/book/book.pdf new file mode 100644 index 0000000..053a4bb Binary files /dev/null and b/algo_pilot_16_edition/book/book.pdf differ diff --git a/algo_pilot_16_edition/book/book.tex b/algo_pilot_16_edition/book/book.tex new file mode 100755 index 0000000..43ac0db --- /dev/null +++ b/algo_pilot_16_edition/book/book.tex @@ -0,0 +1,18 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header_book} + +\begin{document} +\titlepage +\thispagestyle{empty} +\pagestyle{fancy} + + +\smallskip + +\input{1_lecture} +\newpage +\input{2_lecture} +\newpage +\input{3_lecture} + +\end{document} \ No newline at end of file diff --git a/algo_pilot_16_edition/book/header_book.sty b/algo_pilot_16_edition/book/header_book.sty new file mode 100755 index 0000000..c657b28 --- /dev/null +++ b/algo_pilot_16_edition/book/header_book.sty @@ -0,0 +1,235 @@ +%% Работа с русским языком +\usepackage{cmap} % поиск в PDF +\usepackage{mathtext} % русские буквы в формулах +\usepackage{ulem} + +\usepackage[T2A]{fontenc} % кодировка +\usepackage[utf8]{inputenc} % кодировка исходного текста. НИКОГДА НЕ МЕНЯТЬ. +\usepackage[english,russian]{babel} % локализация и переносы +\usepackage{epigraph} % делать эпичные эпиграфы +\usepackage{fancybox,fancyhdr} % для колонтитулов + +%% Отступы между абзацами и в начале абзаца +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +%% Изменяем размер полей +\usepackage[top=0.8in, bottom=0.75in, left=0.625in, right=0.625in]{geometry} + +%% Изменяем размер отступов колонтитулов +\renewcommand{\headrulewidth}{1.8pt} +\renewcommand{\footrulewidth}{0.0pt} + +%% Графика +\usepackage[pdftex]{graphicx} +\graphicspath{{images/}} + +%% Различные пакеты для работы с математикой +\usepackage{mathtools} % Тот же amsmath, только с некоторыми поправками + +\usepackage{amssymb} % Математические символы +\usepackage{amsthm} % Пакет для написания теорем +\usepackage{amstext} +\usepackage{array} +\usepackage[noend]{algpseudocode} +\usepackage{algorithm} +\usepackage{algorithmicx} +\usepackage{verbatim} +\usepackage{amsfonts} +\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление +\usepackage{enumitem} % Для выравнивания itemize (\begin{itemize}[align=left]) +\usepackage{ifthen} +\usepackage{indentfirst} +\usepackage{epigraph} +\renewcommand{\epigraphsize}{\small} +\setlength{\epigraphwidth}{0.6\textwidth} + + +% Номера формул +\mathtoolsset{showonlyrefs=true} % Показывать номера только у тех формул, на которые есть \eqref{} в тексте. + +% Ссылки +\usepackage[urlcolor=blue]{hyperref} + +% Шрифты +\usepackage{euscript} % Шрифт Евклид +\usepackage{mathrsfs} % Красивый матшрифт + +% Свои команды\textbf{} +\DeclareMathOperator{\sgn}{\mathop{sgn}} + +% Перенос знаков в формулах (по Львовскому) +\newcommand*{\hm}[1]{#1\nobreak\discretionary{} +{\hbox{$\mathsurround=0pt #1$}}{}} + +% Графики +\usepackage{pgfplots} +%\pgfplotsset{compat=1.12} + +% Алгоритмы +\newcommand*\Let[2]{\State #1 $\gets$ #2} + +% Изменим формат \section и \subsection: +\usepackage{titlesec} +\titleformat{\section} +{\vspace{1cm}\centering\LARGE\bfseries} % Стиль заголовка +{} % префикс +{0pt} % Расстояние между префиксом и заголовком +{} % Как отображается префикс +\titleformat{\subsection} % Аналогично для \subsection +{\Large\bfseries} +{} +{0pt} +{} + + +%% Информация об авторах +%% Титульный лист +\renewcommand{\titlepage}{\begingroup + \hbox{ + \hspace*{0.12\textwidth} + \rule{1pt}{\textheight} + \hspace*{0.05\textwidth} + \parbox[b]{0.775\textwidth}{ + %{\includegraphics[width=\linewidth]{../images/velosiped.jpg}}\\[2\baselineskip] + {\noindent\Huge\bfseries Алгоритмы и + структуры данных}\\[\baselineskip] + {\large\textrm{Конспекты лекций}}\\[3\baselineskip] + {\Large\textsc{Лектор: Г.О. Евстропов}}\\[\baselineskip] + {Под редакцией Валерии Маликовой и Глеба Новикова}\\[6\baselineskip] + {\noindent НИУ ВШЭ, 2016-2017}\\[\baselineskip] + } + } + \endgroup +} + + + +%% Для колонтитула +\def\head{ +{\it \small НИУ ВШЭ $\bullet$ Факультет компьютерных наук $\bullet$ +Прикладная математика и информатика} +} + +%% Делаем верхний и нижний колонтитулы +\fancyhf{} +\fancyhead[L]{\ifthenelse{\isodd{\thepage}}{\head}{\thepage}} +\fancyhead[R]{\ifthenelse{\isodd{\thepage}}{\thepage}{\head}} + + +%% Функция для обнуление конкретного счётчика +\def\ob#1{\setcounter{#1}{0}} + +\newtheorem{oldlem}{Лемма}[section] +\newenvironment{lemma}[1][] + {\begin{oldlem}[#1]} + {\end{oldlem}} + +\newtheorem{oldprep}[oldlem]{Предложение} +\newenvironment{preposition}[1][] + {\begin{oldprep}[#1]\normalfont} + {\end{oldprep}} + +\newtheorem{oldtheor}[oldlem]{Теорема} +\newenvironment{theorem}[1][] + {\begin{oldtheor}[#1]} + {\end{oldtheor}} + +\newtheorem{oldcorol}[oldlem]{Следствие} +\newenvironment{corollary}[1][] + {\begin{oldcorol}[#1]\normalfont} + {\end{oldcorol}} + +\newtheorem{oldrem}[oldlem]{Замечание} +\newenvironment{remark}[1][] + {\begin{oldrem}[#1]\normalfont} + {\end{oldprem}} + +\newtheorem{olddefi}[oldlem]{Определение} +\newenvironment{definition}[1][] + {\begin{olddefi}[#1]\normalfont} + {\end{olddefi}} + +\newtheorem{oldstat}[oldlem]{Утверждение} +\newenvironment{statement}[1][] + {\begin{oldstat}[#1]} + {\end{oldstat}} + +\newtheorem{oldex}[oldlem]{Пример} +\newenvironment{example}[1][] + {\begin{oldex}[#1]\normalfont} + {\end{oldex}} + +\newtheorem{oldprop}[oldlem]{Свойство} +\newenvironment{property}[1][] + {\begin{oldprop}[#1]} + {\end{oldprop}} + +\newenvironment{proof_cor} + {\textit{Доказательство корректности.}} + {\par} + +\newenvironment{proof_time} + {\textit{Время работы.}} + {\par} + +\renewcommand{\Re}{\mathrm{Re\:}} +\renewcommand{\Im}{\mathrm{Im\:}} +\newcommand{\Arg}{\mathrm{Arg\:}} +\renewcommand{\arg}{\mathrm{arg\:}} +\newcommand{\Mat}{\mathrm{Mat}} +\newcommand{\id}{\mathrm{id}} +\newcommand{\isom}{\xrightarrow{\sim}} +\newcommand{\leftisom}{\xleftarrow{\sim}} +\newcommand{\Hom}{\mathrm{Hom}} +\newcommand{\Ker}{\mathrm{Ker}\:} +\newcommand{\rk}{\mathrm{rk}\:} +\newcommand{\diag}{\mathrm{diag}} +\newcommand{\ort}{\mathrm{ort}} +\newcommand{\pr}{\mathrm{pr}} +\newcommand{\vol}{\mathrm{vol\:}} +\newcommand{\limref}[2]{{#1}\negmedspace\mid_{#2}} +\newcommand{\eps}{\varepsilon} + +\renewcommand{\phi}{\varphi} % плохо, так как есть \phi в англ раскладке. +\newcommand{\e}{\mathrm{e}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} +\renewcommand{\P}{\mathbb{P}} +\renewcommand{\C}{\mathbb{C}} +\newcommand{\E}{\mathbb{E}} +\newcommand{\D}{\mathbb{D}} +\renewcommand{\O}{\mathcal{O}} +\newcommand{\NPclass}{\mathbf{NP}} +\newcommand{\coNPclass}{\mathbf{coNP}} +\newcommand{\NPCclass}{\mathbf{NPC}} +\newcommand{\SAT}{\mathsf{SAT}} +\newcommand{\set}[1]{\left \lbrace #1 \right \rbrace} +\renewcommand{\E}{\mathsf{E}} +\renewcommand{\D}{\Variance} +\renewcommand{\P}{\Prob} +\newcommand{\note}[1]{ +\ \\ +\#\#\# \\ +#1 \\ +\#\#\# \\} +\newcommand{\vvector}[1]{\begin{pmatrix}{#1}_1 \\\vdots\\{#1}_n\end{pmatrix}} +\renewcommand{\vector}[1]{({#1}_1, \ldots, {#1}_n)} +\newcommand{\textbox}[1]{ + \noindent\fbox{ + \parbox{\textwidth}{ + #1 + } + } +} + +\renewcommand{\textflush}{flushright} \renewcommand{\sourceflush}{flushright} + +\let\originalepigraph\epigraph +\renewcommand\epigraph[2]{\originalepigraph{\textit{#1}}{\textsc{#2}}} + +\newcommand{\Mod}{\ \text{mod} \ } + +\usetikzlibrary{calc,arrows.meta,positioning} diff --git a/algo_pilot_16_edition/book/hse_algo_pilot_01_[02.09.2016].tex b/algo_pilot_16_edition/book/hse_algo_pilot_01_[02.09.2016].tex new file mode 100755 index 0000000..8b0181c --- /dev/null +++ b/algo_pilot_16_edition/book/hse_algo_pilot_01_[02.09.2016].tex @@ -0,0 +1,250 @@ +% \documentclass[a4paper, 12pt]{article} +% \usepackage{header} + +% \begin{document} +% \pagestyle{fancy} + +\section{Программа. Организационные моменты} + +% Внимание: программа дополняется после каждой лекции. +% \begin{itemize} +% \item[1.] Матроиды. +% \item[2.] Быстрое преобразование Фурье. +% \item[3.] Алгоритм Карацубы, алгоритм Штрассена. +% \item[4.] Теоретико числовые алгоритмы. +% \item[5.] Шифрование, RSA, проверка на простоту, комбинаторные +% оптимизации. +% \item[6.] Матроиды, интересные леммы. +% \item[7.] Венгерский алгоритм. +% \item[8.] Сегментация изображений. +% \item[9.] $\Pclass$ и $\NPclass$ классы. $\NPclass$-трудные и $\NPclass$-полные +% задачи. Теорема Кука-Левина. +% \item[10.] Продолжение $\NPclass$ задач, сведения к 3-$\SAT$, различные классы +% задач. +% \end{itemize} + +Формула такая же, как и в прошлом году: + +$0.3\cdot O_{\text{контесты}} + 0.25 +\cdot O_{\text{семинарские листки}} + 0.15 \cdot O_{\text{кр}} + 0.3\cdot +O_{\text{экзамен}} + \text{Б}$. + + Округление вверх. + +\section{Лекция 1 от 02.09.2016. Матроиды} + +Пока поговорим немного о темах, не связанных с матроидами. + +У нас есть конечное множество $A$, которое в будущем мы будем называть +\textit{носителем}. Пусть $F \subset 2^{A}$, и $F$ мы будем называть +\textit{допустимыми} множествами. + +Также у нас есть весовая функция $c(w) \ \forall w \in A$. +Для каждого $B \in F$ мы определим \textit{стоимость} +множетсва, как $\sum\limits_{w \in B} c(w)$. Наша задача +заключается в том, чтобы найти максимальный вес из всех допустимых множеств. + +\begin{Examples}[Задача о рюкзаке] +У каждого предмета есть вес и стоимость. Мы хотим унести как можно больше +вещей максимальной стоимости с весом не более $k$. + +Вес не более $k$ нам задает ограничение, то есть множество $F$. +А максимизация унесенной суммы нам и задаёт задачу. +\end{Examples} + +\subsection{Матроид} + +Множество $F$ теперь будет всегда обозначаться как $I$. Также условимся, что +элементы отождествляются с одноэлементными множествами. + +Матроидом называется множество подмножеств множества $A$ таких, что выполняются +следующие 3 свойства (аксиомы): +\begin{itemize} + \item[{\bf 1.}] $\varnothing \in I$ + + \item[{\bf 2.}] $B \in I : \ \forall \ D \subset B \implies D \in I$ + + \item[{\bf 3.}] Если $B, D \in I$ и $|B| < |D| \implies \exists \ w \in D + \setminus B$ такой, что $B \cup w \in I$ +\end{itemize} + +Дальнейшее обозначение матроидов --- $\langle A, I\rangle$. + +\begin{Def} + Базой матроида называют множество всех таких элементов $B \in I$, что {\bf не} + существует $B'$, что $B \subset B', |B|<|B'|$ и $B' \in I$. Обозначение $\mathfrak{B}$. +\end{Def} + +\begin{Properties} + Все элементы из базы имеют одну и ту же мощность. И все элементы из $I$, имеющие + эту мощность, будут в базе. + + Доказательство очевидно из определения. +\end{Properties} + +\begin{Examples}[Универсальный матроид] + Это все подмножества $B$ множества $A$ такие, что + $|B| \leqslant k$ при $k \geqslant 0$. Все свойства проверяются + непосредственно. + + База такого матроида --- все множества + размера $k$. +\end{Examples} + +\begin{Examples}[Цветной матроид] + У элементов множества $A$ имеются цвета. Тогда $B \in I$, + если все элементы множества $B$ имеют разные цвета. + Свойства проверяются непосредственно, в 3 свойстве надо воспользоваться + принципом Дирихле. + + База такого матроида --- множества, где присутствуют все цвета. +\end{Examples} + +\begin{Examples}[Графовый матроид на $n$ вершинах] + $\langle E, I \rangle$. Множество ребер $T \in I$, если $T$ не содержит циклов. + +\rm{Докажем 3 свойство: + \begin{proof} + Пусть у нас есть $T_1$ и $T_2$ такие, что $|T_1| < |T_2|$. + Разобьём граф, построенный на $T_1$ на компоненты + связности. Так как ребер ровно $|T_1|$ на $n$ вершинах, то компонент связности + будет + $n - |T_1|$. В другом случае компонент связности будет $n - |T_2| < n - |T_1|$. + То есть во 2-ом графе будет меньше компонент связности, а значит по принципу + Дирихле найдётся ребро, которое соединяет две компоненты связности в первом графе. + + Эти рассуждения чем-то отдаленно напоминают алгоритм Краскала. + \end{proof}} + + \textit{Базой в таком матроиде являются все остовные леса.} +\end{Examples} + +\begin{Examples}[Матричный матроид] + Носителем здесь будут столбцы любой фиксированной матрицы. + $I$ --- множество всех подмножеств из линейно независимых + столбцов. Все свойства выводятся из линейной алгебры (третье из метода Гаусса, + если быть точным). +\end{Examples} + +\begin{Examples}[Трансверсальный матроид] + $G = \langle X, Y, E \rangle$ --- двудольный граф с долями $X, Y$. Матроид + будет $\langle X, I \rangle$ такой, что $B \in I$, если существует паросочетание + такое, что множество левых концов этого паросочетания совпадает с $B$. + + \rm{Докажем 3 свойство: + \begin{proof} + Пусть есть 2 паросочетания на $|B_1|$ и $|B_2|$ ($|B_1| < |B_2|$) вершин + левой доли. Тогда рассмотрим симметрическую разность этих паросочетаний. + Так как во 2-ом паросочетании ребер больше, то существует чередующаяся + цепь, а значит при замене ребер на этой чередующейся + цепи с новой добавленной вершиной (а она найдётся по + принципу Дирихле) получим паросочетание с ещё 1 добавленной вершиной. + \end{proof} + } + + \textit{Базой в таком матроиде будут вершины левой доли максимального паросочетания.} +\end{Examples} + +\subsection{Приводимость одной базы к другой} + +\begin{Lemma} + Пусть $B, D \in \mathfrak{B}$. Тогда существует последовательность $B = B_0, B_1, + \ldots,$ $B_k = D, B_i \in \mathfrak{B}$ такие, что $|B_i \ \triangle \ B_{i + 1}| = 2,$ где $\triangle$ + обозначает симметрическую разность множеств. +\end{Lemma} + +\begin{proof} + Будем действовать по шагам. Если текущее $B_i \neq D$, тогда возьмём + произвольный элемент + $w$ из $B_i \setminus D$. Тогда по 2-ому пункту определения матроида следует, + что $B_i \setminus w \in I$. Так как $|B_i \setminus w| < |D|$, то существует + $u \in D \setminus (B_i \setminus w)$ такой, что $(B_i \setminus w) \cup u \in I$. И теперь $B_{i + 1} + \gets (B_i \setminus w) \cup u$. + Мы сократили количество несовпадающих элементов с $D$ на 1, симметрическая + разность $B_i$ и $B_{i + 1}$ состоит из 2 элементов --- $w$ и $u$. +\end{proof} + +Наконец, мы подошли к основной теореме лекции --- жадный алгоритм или теорема +Радо-Эдмондса. + +\subsection{Жадный алгоритм на матроиде} + +Доказательство будет в несколько этапов. + +Для начала определимся с обозначениями. $M = \langle A, I \rangle, n = |A|, w_i$ +--- элементы множества $A$. +Решаем обычную задачу на максимизацию необходимого множества. + +\begin{Theorem}[Жадный алгоритм. Теорема Радо-Эдмондса] + Если отсортировать все элементы $A$ по невозрастанию стоимостей весовой функции: + $c_1 \geqslant c_2 \geqslant \ldots \geqslant c_n$, то такой алгоритм решает + исходную задачу о нахождении самого дорогого подмножества: + + \rm{ + \begin{algorithm} + \caption{Жадный алгоритм на матроиде.} + \begin{algorithmic} + \Let{$B$}{$\varnothing$} + \For {$c_i$} + \If{$B \cup w_i \in I$} + \Let{$B$}{$B \cup w_i$} + \EndIf + \EndFor + \end{algorithmic} + \end{algorithm} + } +\end{Theorem} + +\begin{proof} + Пусть $B_i$ --- множество, которое мы получим после $i$ шагов цикла нашего алгоритма. + Теперь поймём, что наш алгоритм в итоге получит какой-то элемент из базы. + Действительно, предположим, что это не так. Тогда существует множество из базы, которое его + накрывает: $\exists \ D \in \mathfrak{B}: B_n \subset D$ и $|B_n| < |D|$, так как + можно взять любой элемент из базы и добавлять в $B_n$ по 1 элементу из пункта + 3 определения матроида. + + Получаем, что у нас существует элемент $w_i \in D \setminus B_n$, который мы не взяли + нашим алгоритмом, но $B_{i - 1} \cup w_i \in I$, так как $B_{i - 1} \cup w_i \subset + B_n \cup w_i \subset D$, то есть это лежит в $I$ по пункту 2 определения матроида. + Значит мы должны были взять $w_i$, противоречие. + + Рассмотрим последовательность $d_i$ из нулей и единиц длины $n$ такую, что $d_i = 1$ только + в том случае, если мы взяли алгоритмом $i$-ый элемент. А оптимальное решение задачи + пусть будет $e_i$ --- тоже последовательность из 0 и 1. Последовательности будут + обозначаться $d_i$ и $e_i$ соответственно. + + Если на каком-то префиксе последовательности $d_i$ единиц стало меньше, чем в $e_i$, то + возьмём все элементы, которые помечены в последовательности $e_i$ единицами. + Пусть это множество будет $E$. Аналогично на этом префиксе последовательности + $d_i$ определим множество $D$. $|D| < |E|, D \in I, E \in I$, поэтому мы можем + дополнить $D$ каким-то элементом из $E$, которого не было в $D$. То есть на этом + префиксе у $d_i$ стоит 0 (пусть это будет место $i$), но заметим, что на $i$-ом + шаге мы обязаны были брать этот элемент, из-за рассуждений аналогичным рассуждению + про базу (2 абзаца выше). + + Получаем, что на каждом префиксе $d_i$ единиц не меньше, чем на этом же префиксе + последовательности $e_i$. Значит первая единица в $d_i$ встретится не позже, чем в + $e_i$, вторая единица в $d_i$ не позже, чем вторая в $e_i$ и т.д. по рассуждениям по + индукции. + +\end{proof} + +На лекции была теория про ранги. В доказательстве можно обойтись без неё, просто +приложу то, что сказал Глеб. Может быть понадобится в задачах. +\begin{Def} + \textbf{Рангом} множества $B \subseteq A$ (обозн. $r(B)$) называют максимальное + число $k$ такое, что $\exists \ C \subseteq B$ такое, что $|C| = k, C \in I$. +\end{Def} + Эта функция обладает таким свойством: для любого элемента $w \in A$ следует, + что $r(B \cup w) \leqslant r(B) + r(w)$. Давайте поймём, почему так: + + Если $r(B \cup w) = r(B)$, то всё хорошо, так как $r(w) \geqslant 0$. Если + $r(B \cup w) = r(B) + 1$ (других вариантов не бывает из определения), то тогда + $w \in I$, так как $C \subset (B\cup w)$, + что + $|C| = $ + + $r(B \cup w), w \in C$ (иначе $C$ годилось бы для $B$ и $r(B \cup w) = r(B)$), значит + $r(w) = 1$, так как $C \in I$, а $w \in C$. + +% \end{document} diff --git a/algo_pilot_16_edition/images/Airat.jpg b/algo_pilot_16_edition/images/Airat.jpg new file mode 100755 index 0000000..b27caec Binary files /dev/null and b/algo_pilot_16_edition/images/Airat.jpg differ diff --git a/algo_pilot_16_edition/images/Nebudem.jpg b/algo_pilot_16_edition/images/Nebudem.jpg new file mode 100755 index 0000000..3945179 Binary files /dev/null and b/algo_pilot_16_edition/images/Nebudem.jpg differ diff --git a/algo_pilot_16_edition/images/alpha.png b/algo_pilot_16_edition/images/alpha.png new file mode 100755 index 0000000..bd7d5cf Binary files /dev/null and b/algo_pilot_16_edition/images/alpha.png differ diff --git a/algo_pilot_16_edition/images/graph.png b/algo_pilot_16_edition/images/graph.png new file mode 100755 index 0000000..8453d55 Binary files /dev/null and b/algo_pilot_16_edition/images/graph.png differ diff --git a/algo_pilot_16_edition/images/velosiped.jpg b/algo_pilot_16_edition/images/velosiped.jpg new file mode 100755 index 0000000..f0fd8d3 Binary files /dev/null and b/algo_pilot_16_edition/images/velosiped.jpg differ diff --git a/algorithms-old/README.md b/algorithms-old/README.md new file mode 100644 index 0000000..e63ee87 --- /dev/null +++ b/algorithms-old/README.md @@ -0,0 +1,29 @@ +# Лекции по алгоритмам и структурам данных + +Лекция 1. Структура курса, правила выполнения домашних заданий. Рекурсивные алгоритмы: задача о Ханойской башне. Оценка времени работы рекурсивного алгоритма при помощи рекуррентного соотношения. Доказательство оптимальности рекурсивного алгоритма. + +Лекция 2. Сортировка вставкой и слиянием. Использование инварианта цикла при доказательстве корректности сортировки вставкой. Θ- и O-обозначения. Оценка сложности алгоритмов. + +Лекция 3. О-, o-, Ω-, ω-, Θ-обозначения. Быстрая сортировка, время работы в худшем, лучшем и среднем случаях. + +Лекция 4. Сортировка при помощи двоичного дерева поиска и ее связь с быстрой сортировкой. Примеры решения рекуррентных соотношений: решение с использованием дерева рекурсии и методом подстановки. Основная теорема. + +Лекция 5. Разбиение массива по опорному элементу на три части (элементы, меньшие, равные и большие опорного). Оптимальность сортировки слиянием. Выбор порядковой статистики за время O(n): рандомизированный и детерминированный алгоритмы. + +Лекция 6. Поиск ближайшей пары точек за время O(n log n). + +Лекция 7. Алгоритм Карацубы для умножения целых чисел. Алгоритм Штрассена для умножения матриц. + +Лекция 8. Быстрое возведение в степень по модулю. Динамическое программирование: выравнивание абзаца по ширине (рекурсивное решение с мемоизацией). + +Лекция 9. Динамическое программирование. Задача о планировании взвешенных интервалов: рекурсивное решение с мемоизацией и итеративное решение. Свойства задач, эффективно решаемых при помощи динамического программирования: наличие полиномиального числа подзадач, выразимость исходной задачи в терминах подзадач, сводимость больших подзадач к полиномиальному числу меньших подзадач. Выравнивание абзаца по ширине: итеративное решение. (Контест) + +Лекция 10. Вычисление редакционного расстояния и выравнивание последовательностей. + +Лекция 11. Графы: обход в глубину и в ширину, поиск компонент связности в неориентированных графах. + +Лекция 12. Способы представления графов: матрица смежности и списки смежности. Оценка сложности алгоритмов поиска в ширину и в глубину. + +Лекция 13. Топологическая сортировка за линейное время: алгоритмы, основанные на удалении вершин без входящих ребер (с доказательством корректности) и на поиске в глубину (без доказательства корректности). Вычисление компонент сильной связности (с незаконченным доказательством корректности). + +Лекция 14. Оценка сложности алгоритма поиска компонент связности в неориентированных графах. Алгоритм проверки сильной связности ориентированного графа. Вычисление компонент сильной связности в ориентированном графе (завершение доказательства корректности алгоритма). Поиск путей возведением в степень матрицы смежности графа, алгоритм Флойда – Уоршелла. diff --git a/algorithms-old/algorithms_01_[12.01.2016].pdf b/algorithms-old/algorithms_01_[12.01.2016].pdf new file mode 100644 index 0000000..81faaa1 Binary files /dev/null and b/algorithms-old/algorithms_01_[12.01.2016].pdf differ diff --git a/algorithms-old/algorithms_02_[14.01.2016].pdf b/algorithms-old/algorithms_02_[14.01.2016].pdf new file mode 100644 index 0000000..6ce6ef7 Binary files /dev/null and b/algorithms-old/algorithms_02_[14.01.2016].pdf differ diff --git a/algorithms-old/algorithms_03_[19.01.2016].pdf b/algorithms-old/algorithms_03_[19.01.2016].pdf new file mode 100644 index 0000000..4baae01 Binary files /dev/null and b/algorithms-old/algorithms_03_[19.01.2016].pdf differ diff --git a/algorithms-old/algorithms_04_[21.01.2016].pdf b/algorithms-old/algorithms_04_[21.01.2016].pdf new file mode 100644 index 0000000..fc64b23 Binary files /dev/null and b/algorithms-old/algorithms_04_[21.01.2016].pdf differ diff --git a/algorithms-old/algorithms_05_[26.01.2016].pdf b/algorithms-old/algorithms_05_[26.01.2016].pdf new file mode 100644 index 0000000..d942b1b Binary files /dev/null and b/algorithms-old/algorithms_05_[26.01.2016].pdf differ diff --git a/algorithms-old/algorithms_07_[02.02.2016].pdf b/algorithms-old/algorithms_07_[02.02.2016].pdf new file mode 100644 index 0000000..01bae44 Binary files /dev/null and b/algorithms-old/algorithms_07_[02.02.2016].pdf differ diff --git a/algorithms-old/algorithms_08_[04.02.2016].pdf b/algorithms-old/algorithms_08_[04.02.2016].pdf new file mode 100644 index 0000000..531bb99 Binary files /dev/null and b/algorithms-old/algorithms_08_[04.02.2016].pdf differ diff --git a/algorithms-old/algorithms_10_[11.02.2016].pdf b/algorithms-old/algorithms_10_[11.02.2016].pdf new file mode 100644 index 0000000..06103ab Binary files /dev/null and b/algorithms-old/algorithms_10_[11.02.2016].pdf differ diff --git a/algorithms-old/algorithms_19_[22.03.2016].pdf b/algorithms-old/algorithms_19_[22.03.2016].pdf new file mode 100644 index 0000000..9e05cb9 Binary files /dev/null and b/algorithms-old/algorithms_19_[22.03.2016].pdf differ diff --git a/algorithms-old/algorithms_all_lectures.pdf b/algorithms-old/algorithms_all_lectures.pdf new file mode 100644 index 0000000..22a762a Binary files /dev/null and b/algorithms-old/algorithms_all_lectures.pdf differ diff --git a/algorithms-old/mini-cormen/09_intervals.png b/algorithms-old/mini-cormen/09_intervals.png new file mode 100644 index 0000000..707bdb8 Binary files /dev/null and b/algorithms-old/mini-cormen/09_intervals.png differ diff --git a/algorithms-old/mini-cormen/main.tex b/algorithms-old/mini-cormen/main.tex new file mode 100644 index 0000000..c10dc95 --- /dev/null +++ b/algorithms-old/mini-cormen/main.tex @@ -0,0 +1,4436 @@ +% Формат документа и размер шрифта +\documentclass[a4paper,12pt]{article} + +\usepackage[T1,T2A]{fontenc} % Кодировки шрифтов +\usepackage[utf8]{inputenc} % Кодировка текста +\usepackage[english,russian]{babel} % Поддержка языков +\usepackage{cmap} % Поддержка поиска в тексте + +% Изменение границ страницы +\usepackage[margin=2cm]{geometry} + +\usepackage{indentfirst} % Красная строка в начале текста + +% Различные математические пакеты +\usepackage{mathtools} +\usepackage{amssymb} +\usepackage{amsthm} +\usepackage{amsfonts} +\usepackage{amstext} +\usepackage{icomma} +\usepackage{units} +\usepackage{array} +\usepackage{stackrel} + +% Пакеты для алгоритмов +\usepackage{algorithm} +\usepackage{algorithmicx} +\usepackage[noend]{algpseudocode} +\usepackage{listings} + +\renewcommand{\algorithmicrequire}{\textbf{Вход:}} +\renewcommand{\algorithmicensure}{\textbf{Выход:}} +\renewcommand{\algorithmiccomment}[1]{\hspace*{\fill}\{#1\}} +\floatname{algorithm}{Алгоритм} +\newcommand{\algname}[1]{\textsc{#1}} + +% Пакеты для работы с графикой +\usepackage{esvect} +\usepackage{graphicx} +\usepackage{tikz} +\usetikzlibrary{calc,matrix} +\usepackage{qtree} +\usepackage{pgfplots} +\pgfplotsset{compat=1.12} +\usepackage{forest} + +%% Прочие пакеты +\usepackage{titlesec} % Изменение формата заголовков +\usepackage[normalem]{ulem} % Для зачёркиваний +\usepackage[autocite=footnote]{biblatex} % Кавычки для цитат и прочее +\usepackage[makeroom]{cancel} % И снова зачёркивание (на этот раз косое) + +% Перенос знаков в формулах (по Львовскому) +\newcommand*{\hm}[1]{#1\nobreak\discretionary{}{\hbox{$\mathsurround=0pt #1$}}{}} + +\newtheorem*{on1n}{Задача} +\newtheorem*{on1n1}{Задача №1} +\newtheorem*{on1n2}{Задача №2} +\newtheorem*{on1n3}{Задача №3} +\newtheorem*{on1n4}{Задача №4} +\newtheorem*{on1n5}{Задача №5} +\newtheorem*{on1n6}{Задача №6} +\newtheorem*{on1n7}{Задача №7} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{theorem}{Теорема} +\newtheorem*{proposal}{Предложение} +\newtheorem*{notice}{Замечание} +\newtheorem*{example}{Пример} +\newtheorem*{statement}{Утверждение} +\newtheorem*{definition}{Определение} +\newtheorem*{consequence}{Следствие} +\newtheorem*{lemma}{Лемма} +\newtheorem*{pumping-lemma}{Лемма о накачке} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definitions}{\underline{Определения:} } +\newcommand{\definitionone}{\underline{Определение 1:} } +\newcommand{\definitiontwo}{\underline{Определение 2:} } + +\newcommand{\note}{\underline{Замечание:} } +\newcommand{\sign}{\underline{Обозначения:} } +\newcommand{\statements}{\underline{Утверждения:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} +\newcommand{\Cc}{\mathbb{C}} +\newcommand{\Cx}{\mathbb{C}} + +% Ссылки +\usepackage[colorlinks=true, linkcolor=blue]{hyperref} + +\title{\Huge{Алгоритмы и Структуры Данных \\ Мини-Кормен}} +\author{Вадим Гринберг \\ Алексей Хачиянц} +\date{} + +\begin{document} + +\begin{titlepage} + \begin{center} + + {\HugeАлгоритмы и Структуры Данных} + \\ \ + \\ \ + \\ \ + {\Huge \textbf{Мини-Кормен}} + \\ \ + \\ \ + + \begin{figure}[h] + \begin{center} + \begin{minipage}[h]{0.8\linewidth} + \includegraphics[height=18cm, width=\linewidth]{mini-kormen.jpg} + \end{minipage} + \end{center} + \end{figure} + \ \\ + + {\Large Вадим Гринберг} \\ + \ \\ + {\Large Алексей Хачиянц} \\ + +\end{center} +\end{titlepage} + +\tableofcontents + +\newpage + +\section{Рекурсивные алгоритмы: задача о Ханойской башне. Оценка времени работы рекурсивного алгоритма при помощи рекуррентного соотношения. Доказательство оптимальности рекурсивного алгоритма.} + +\subsection{Ханойские башни} +Рассмотрим классическую задачу, предложенную Эдуардом Люка в 1883 году. Есть три стержня, при этом на первый стержень нанизано 8 дисков. Нужно перенести все диски на другой стержень, соблюдая два правила: диски можно двигать только по одному и нельзя класть +диск большего радиуса на диск меньшего радиуса. Возможно ли это? + +Придуманная профессором Люка легенда гласит, что в Великом храме города Бенарес, под собором, отмечающим середину мира, находится бронзовый диск, на котором укреплены 3 алмазных стержня, высотой в один локоть и толщиной с пчелу. Давным-давно, в самом начале времён, монахи этого монастыря провинились перед богом Брахмой. Разгневанный Брахма воздвиг три высоких стержня и на один из них возложил 64 диска, сделанных из чистого золота. Причем так, что каждый меньший диск лежит на большем. + +Как только все 64 диска будут переложены со стержня, на который Брахма сложил их при создании мира, на другой стержень, башня вместе с храмом обратятся в пыль и под громовые раскаты погибнет мир. + +Интуиция подсказывает, что это возможно. Но каков тогда алгоритм и сколько операций ему необходимо? + +Чтобы переместить $n$ дисков с первого стержня на второй, можно сначала переместить $n - 1$ диск на третий стержень, перенести самый большой диск на второй стержень, а затем переместить $n - 1$ диск с третьего стержня на второй. Такое рекурсивное решение представлено в Алгоритме \ref{algo:hanoi}. + +\begin{algorithm}[H] + \caption{Рекурсивный алгоритм решения задачи о Ханойской башне} + \label{algo:hanoi} + \begin{algorithmic}[1] + \Require Число дисков $n$, начальный $i$, конечный $j$ и вспомогательный $k$ стержни. + \Ensure Последовательность пар $(x, y)$, соответствующих перемещению диска со стержня $x$ на стержень $y$, приводящая к перемещению $n$ верхних дисков со стержня $i$ на стержень $j$. + \Function{Hanoi3}{$n,i,j,k$} + \If{$n > 0$} + \State \textsc{Hanoi3}($n-1,i,j,k$) + \State move $i \to k$ + \State \textsc{Hanoi3}($n-1,k,j,i$) + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Покажем с помощью дерева операций, как алгоритм работает для трёх дисков: + +\begin{center} + \begin{forest} + for tree={ + parent anchor=south, + child anchor=north, + if n children=0{ + font=\itshape, + tier=terminal, + }{}, + } + [{H(3,1,2,3)} [{H(2,1,3,2)} [{H(1,1,2,3)} [$1 \to 2$]] + [$1 \to 3$] + [{H(1,2,3,1)} [$2 \to 3$]]] + [$1 \to 2$] + [{H(2,3,2,1)} [{H(1,3,1,2)} [$3 \to 1$]] + [$3 \to 2$] + [{H(1,1,2,3)} [$1 \to 2$]]]] + \end{forest} +\end{center} + +По сути, данный алгоритм обходит дерево в глубину, выполняя необходимые перестановки. + +\subsection{Оптимальность рекурсивного алгоритма и время его работы.} + +Докажем, что данный алгоритм является \textbf{оптимальным}, то есть нет алгоритма, который бы решал эту же задачу быстрее. + +Пусть \(T_n\)~--- минимальное количество операций, за которое можно перенести \(n\) дисков. Сразу же заметим, что для переноса 0 дисков действий вообще не нужно. Тогда \(T_0 = 0\). + +Показанный ранее алгоритм показывает, что \(T_n \leqslant 2T_{n - 1} + 1\text{ для } n > 0.\) + +Возникает логичный вопрос: а можно ли быстрее? Увы, но нет. Рано или поздно придётся перенести самый широкий диск. Но для этого необходимо поставить \(n - 1\) диск на один стержень. Тогда можно сделать вывод, что \(T_n \geqslant 2T_{n - 1} + 1\text{ для } n > 0.\) + +Отсюда получаем, что минимальное количество операций задаётся следующим \emph{рекуррентным соотношением}: + +\[T_n = \begin{cases} +2T_{n - 1} + 1, & n > 0 \\ +0, & n = 0 +\end{cases}\] + +Прекрасно. Мы знаем, что алгоритм \ref{algo:hanoi} наиболее оптимален и знаем рекуррентное соотношение, задающее количество операций. Но можно ли найти \emph{замкнутую} формулу~--- такую, что она сразу даст нужное значение? Да, можно. + +\begin{theorem} + \(T_n = 2^{n} - 1\) +\end{theorem} +\begin{proof} + Докажем это по индукции. База верна, так как $T_0 = 0 = 2^{0} - 1$. Теперь пусть предположение верно для \(n - 1\), то есть \(T_{n - 1} = 2^{n - 1} - 1\). Тогда \[T_{n} = 2T_{n - 1} + 1 = 2(2^{n - 1} - 1) + 1 = 2^n - 2 + 1 = 2^n - 1\qedhere\] +\end{proof} + +Теперь немного изменим задачу. +\subsection{Четыре стержня} + +Допустим, что у нас четыре стержня, два из которых --- вспомогательные. Обозначим +\[n_m = \sum_{i=1}^mi = \frac{m(m+1)}{2}.\] +Для простоты предположим, что изначально на первом стержне находится $n_m$ дисков. + +Чтобы переместить $n_m$ дисков с первого стержня на второй, можно сначала переместить $n_{m-1}$ дисков на четвертый стержень, затем переместить оставшиеся $m$ самых больших дисков на второй стержень, используя Алгоритм \ref{algo:hanoi} и третий стержень в качестве вспомогательного, и наконец переместить $n_{m-1}$ дисков с четвертого стержня на второй. Такое рекурсивное решение представлено в Алгоритме \ref{algo:hanoi4}. + +\begin{algorithm}[H] + \caption{Рекурсивный алгоритм решения задачи о Ханойской башне на 4-х стержнях} + \label{algo:hanoi4} + \begin{algorithmic}[1] + \Require Число дисков $n_m = m(m+1)/2$, начальный $i$, конечный $j$ и вспомогательные $k$ и $l$ стержни. + \Ensure Последовательность пар $(x, y)$, соответствующих перемещению диска со стержня $x$ на стержень $y$, приводящая к перемещению $n$ верхних дисков со стержня $i$ на стержень $j$. + \Function{Hanoi4}{$n_m,i,j,k,l$} + \If{$n > 0$} + \State \textsc{Hanoi4}($n-m,i,l,k,j$) + \State \textsc{Hanoi3}($m,i,j,k$) + \State \textsc{Hanoi4}($n-m,l,j,i,k$) + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Алгоритм \ref{algo:hanoi4} можно обобщить на случай произвольного числа дисков $n$, например, так: на верхнем уровне рекурсии выбрать $n_{m-1}$, ближайшее снизу к $n$, а вместо $m$ в вызове алгоритма \algname{Hanoi3} использовать $n - n_m$. + +Обозначим за $g(n_m)$ число шагов, требующихся Алгоритму \ref{algo:hanoi4} для решения задачи с $n_m$ дисками. Получаем следующее рекуррентное соотношение: +\[g(n_m) = \begin{cases} + 0, & n_m = 0; \\ + 2g(n_{m-1}) + 2^m - 1, & n > 0. + \end{cases}\] + +Докажем по индукции, что $g(n_m) = (m - 1)2^m + 1$ (эту оценку можно получить, проанализировав дерево рекурсии). +\begin{description} + \item[Базис:] $g(n_0) = 0 = -1 + 1 = (0 - 1) \cdot 2^0 + 1$. + \item[Шаг:] Предположим, что $g(n_{m-1}) = (m - 2)2^{m-1} + 1$. Тогда + \begin{align*} % requires amsmath; align* for no eq. number + g(n_m) = {}& 2g(n_{m-1}) + 2^m - 1 = \\ + = {}& 2((m - 2)2^{m-1} + 1) + 2^m - 1 = \\ + = {}& (m - 2)2^m + 2 + 2^m - 1 = \\ + = {}& (m - 1)2^m + 1. + \end{align*} +\end{description} + +Таким образом, число шагов асимптотически зависит от числа входных дисков $n$ как $\Theta(\sqrt{n}2^{\sqrt{2n}})$.\footnote{Смысл этого утверждения уточним на следующих лекциях.} Можно ли переместить диски быстрее --- открытый вопрос. + +Как можно обобщить Алгоритм \ref{algo:hanoi4} на случай произвольного числа стержней? Сработает ли такой вариант? + +\begin{algorithm}[H] + \caption{Рекурсивный алгоритм решения задачи о Ханойской башне, общий случай} + \label{algo:hanoik} + \begin{algorithmic}[1] + \Require Число дисков $n_m = m(m+1)/2$, начальный $i$, конечный $j$ и множество вспомогательных $P$ стержней. + \Ensure Последовательность пар $(x, y)$, соответствующих перемещению диска со стержня $x$ на стержень $y$, приводящая к перемещению $n$ верхних дисков со стержня $i$ на стержень $j$. + \Function{Hanoi}{$n,i,j,P$} + \If{$n > 0$} + \State choose $p \in P$ + \State $R \mathrel{:=} P \setminus p$ + \If{$R = \varnothing$} + \State \textsc{Hanoi3}($n,i,j,p$) + \Else + \State \textsc{Hanoi}($n-m,i,p,R \cup \{j\}$) + \State \textsc{Hanoi}($m,i,j,R$) + \State \textsc{Hanoi}($n-m,p,j,R \cup \{i\}$) + \EndIf + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} +\newpage +\section{\(O\)-, \(o\)-, \(\Omega\)-, \(\omega\)-, \(\Theta\)- обозначения. Оценка сложности алгоритмов.} + +\subsection{Асимптотические обозначения} + +Введем следующие обозначения: + +\[\Theta(g(n)) = \left\{ f(n)\mid \exists c_1>0, c_2>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant c_1g(n)\leqslant f(n) \leqslant c_2g(n) \right\},\] + +$\Theta$ --- \emph{асимптотическое} $=$. Например, $2n = \Theta(n)$. По определению, $c_1n \leqslant 2n \leqslant c_2n$. Тогда $c_1 = 1, c_2 = 2$. + +\[O(g(n)) = \left\{ f(n)\mid \exists c_2>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant f(n) \leqslant c_2g(n) \right\}\] + +$O$ --- \emph{асимптотическое} $\leqslant$. Например, по этому определению $n = O(n \log{n})$, так как при достаточно больших $n_0$ $\log n_0 > 1$. Тогда $c_2 = 1$. + +\[\Omega(g(n)) = \left\{ f(n)\mid \exists c_1>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant c_1g(n)\leqslant f(n) \right\}\] + +$\Omega$ --- \emph{асимптотическое} $\geqslant$. Например, $n \log n = \Omega(n \log n)$ и $n \log n = \Omega(n)$. В обоих случаях подходит $c_1 = 1$. + +\[o(g(n)) = \left\{ f(n)\mid \forall c_2>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant f(n) \leqslant c_2g(n) \right\}\] + +$o$ --- \emph{асимптотическое} $<$. Например, $n = o(n \log n)$. Покажем это. Пусть $n < c_2 n \log n \iff 1 < c_2 \log n \iff n > 2^{1/c_2}$. Тогда $n_0 = [2^{1/c_2} + 1]$ + +\[\omega(g(n)) = \left\{ f(n)\mid \forall c_1>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant c_1g(n)\leqslant f(n) \right\}\] + +$\omega$ --- \emph{асимптотическое} $>$. Например, нельзя сказать, что $n \log n = \omega(n \log n)$. Но можно сказать, что $n \log n = \omega(n)$. + +Когда мы пишем такую нотацию, мы подразумеваем функции, а не числа. Если же указывать функции явно, то это можно сделать с помощью $\lambda$-нотации: + +\[\lambda n.n \in o(\lambda n.n \log_2 n)\] + +\textbf{Примечание:} данная нотация очень похожа на лямбда-функции в Python: +\[\verb|lambda x: x * x| \iff \lambda x. x^2\] + +Заметим, что в логарифмах можно свободно менять основание: $\log_c n = \frac {\log_2 n}{\log_2 c}$. Именно поэтому не пишут основание логарифма. +\newpage +\section{Сортировка вставкой и слиянием. Использование инварианта цикла при доказательстве корректности сортировки вставкой} + +\subsection{Задача сортировки} +Одна из классических задач мира алгоритмов, встречающаяся на практике повсеместно~--- \emph{задача сортировки}. Поставим её формально. + +\textbf{Вход:} последовательность из \(n\) чисел \([a_{1}, a_{2}, \ldots, a_{n}]\). + +\textbf{Выход:} последовательность из \(n\) чисел \([a'_{1}, a'_{2}, \ldots, a'_{n}]\) такая, что \(a'_{1} \leqslant a'_{2} \leqslant \ldots \leqslant a'_{n}\). + +Вообще говоря, на вход может подаваться последовательность, состоящая из элементов любого линейно упорядоченного множества. + +\subsection{Сортировка вставкой} +Рассмотрим алгоритм \emph{сортировки вставками}: + +\begin{algorithm}[H] + \caption{Алгоритм сортировки вставками} + \label{algo:insertion-sort} + \begin{algorithmic}[1] + \Require Массив $a[1..n]$ из $n$ чисел. + \Ensure Массив $a$ становится отсортированным по возрастанию. + \Function{Insertion-Sort}{$A$} + \For{\(j \mathrel{:=} 2\) \textbf{to} \(A.length\)}\Comment{вставка \(A[j]\) в отсортированный массив \(A[1..j - 1]\)} + \State \(key \mathrel{:=} A[j]\) + \State \(i \mathrel{:=} j - 1\) + \While{\(i > 0\) \textbf{and} \(A[i] > key\)} + \State \(A[i + 1] \mathrel{:=} A[i]\) + \State \(i \mathrel{:=} i - 1\) + \EndWhile + \State \(A[i + 1] \mathrel{:=} key\) + \EndFor + \EndFunction + \end{algorithmic} +\end{algorithm} + +По сути, мы поочередно добавляем каждый $i + 1$-ый элемент в отсортированную подпоследовательность из первых $i$ элементов так, чтобы последовательность оставалась отсортированной. + +\subsection{Корректность алгоритма сортировки вставками.} +Возникает логичный вопрос~--- а можем ли мы сказать, что этот алгоритм делает именно то, что нам нужно? Другими словами, \emph{корректен} ли он? Оказывается, что да. Докажем это. + +Для этого стоит рассмотреть так называемый \emph{инвариант цикла}~--- нечто, что не изменяется при переходе на следующую итерацию цикла. В данном случае он будет таков: на \(j\)-й итерации цикла первые \(i - 1\) элементов массива будут упорядочены. + +Далее нужно рассмотреть три свойства инварианта цикла: +\begin{itemize} + \item \textbf{Инициализация:} Инвариант цикла выполняется на первой итерации; + + \item \textbf{Переход:} Инвариант сохраняется при переходе на следующую итерацию; + + \item \textbf{Завершение:} При окончании цикла инвариант даёт какое-то ценное свойство полученного массива. + \end{itemize} + Можно сказать, что первые два свойства доказывают корректность инварианта. Приступим: + \begin{itemize} + \item \textbf{Инициализация:} На первой итерации цикла элемент вставляется в массив из одного элемента. Но он, очевидно, отсортирован. Тогда инвариант цикла выполняется для первой итерации. + + \item \textbf{Переход:} Пусть массив \([a_1, \ldots, a_{j - 1}]\) уже отсортирован. В теле цикла делается следующее: до тех пор, пока \(a_{j}\) меньше стоящего перед ним элемента, они меняются местами. По сути, элемент просто вставляется на нужное место. Тогда инвариант выполняется при переходе на следующую итерацию. Следовательно, инвариант корректен. + + \item \textbf{Завершение:} Цикл завершается тогда, когда \(j = n + 1\). Заметим, что это будет итерация под номером \(n\). Но тогда (согласно инварианту цикла) первые \(n\) элементов массива, то есть весь массив, будут упорядочены. Тогда в конце массив окажется отсортированным. Тем самым мы доказали, что алгоритм корректен. + \end{itemize} + +\subsection{Время работы сортировки вставками.} +Хорошо, он корректен. Но насколько быстро он работает? Достаточно очевидны три факта: +\begin{itemize} + \item Скорость работы зависит от входных данных; + \item Чем больше элементов, тем дольше будет работать алгоритм; + \item Если алгоритм уже отсортирован, то он будет работать быстрее. + \end{itemize} + Обычно время работы рассматривают в трёх случаях~--- в худшем, в лучшем и в среднем. Хотя оценка в лучшем случае не несёт особо ценной информации, так как всегда можно модифицировать алгоритм так, что на некоторых наборах данных он будет работать очень быстро. + + Для оценки времени работы введём асимптотическую оценку \(\Theta\): + \[\Theta(g(n)) = \{f(n)\mid\exists\,c_1, c_2 > 0: \forall n\geqslant n_0 \implies 0 \leqslant c_1g(n) \leqslant f(n) \leqslant c_2g(n)\}\] + + Рассмотрим следующий пример. Пусть \(f(n) = 3n^2 + 2n + 6\). Тогда \(f(n) \in \Theta(n^2)\). Хотя правильней писать так, но на практике все пишут, что \(f(n) = \Theta(n^2)\). + + Стоит обратить внимание, что асимтотическая оценка показывает рост функции. Но не стоит забывать про константы~--- может выйти так, что для достаточно маленьких \(n\) функция из \(\Theta(n^3)\) работает быстрее, чем функция из \(\Theta(n)\): + \begin{center} + \begin{tikzpicture} + \begin{axis} + \addplot [domain=0:5, samples=101,unbounded coords=jump]{x+30} node[below,pos=0.9] {$x + 30$}; + \addplot [domain=0:5, samples=101,unbounded coords=jump]{0.2 * x^3} node[below,pos=0.85] {$\quad \frac{x^3}{5}$}; + \end{axis} + \end{tikzpicture} + \end{center} + + Вернёмся к оценке времени работы алгоритма. Пусть его скорость работы равна \(T(n)\). + + Рассмотрим худший случай. Когда он достигается? Когда приходится делать максимальное число перестановок. Тогда на \(i\)-й итерации совершается \(\Theta(i)\) операций. Следовательно, \[T(n) = \sum_{k = 0}^{n} \Theta(k) = \Theta(n^2).\] + + В среднем случае все исходы равновероятны. Тогда в среднем будет выполняться половина всех возможных перестановок. А это \(\Theta(n^2)\). + + В лучшем случае не совершается ни одной перестановки. Это означает, что массив уже отсортирован. Тогда алгоритм работает за \(\Theta(n)\) (так как он просто проходится по массиву). + +\subsection{Сортировка слиянием} +Рассмотрим другой алгоритм --- \emph{сортировку слиянием}. + +\begin{algorithm}[H] + \caption{Алгоритм сортировки слиянием} + \label{algo:merge-sort} + \begin{algorithmic}[1] + \Require Массив $a[1..n]$ из $n$ чисел. + \Ensure Отсортированный по возрастанию массив, содержащий в точности все элементы входного массива $a$. + \Function{Merge-Sort}{$A$} + \State \(n \mathrel{:=} A.\)length + \If{\(n > 1\)} + \State \(B_1 \mathrel{:=} \textsc{Merge-Sort}\left(A\left[1: \lfloor n/2 \rfloor\right]\right)\) + \State \(B_2 \mathrel{:=} \textsc{Merge-Sort}\left(A\left[\lfloor n/2 \rfloor + 1 : n\right]\right)\) + \State \(A \mathrel{:=} \textsc{Merge}(B_1, B_2)\) \Comment{сливаем два отсортированных массива в один} + \EndIf + \State return \(A\) + \EndFunction + \end{algorithmic} +\end{algorithm} + +В Алгоритме \ref{algo:merge-sort} мы делим массив на две (почти) равные части и сортируем каждую из них рекурсивно. +Функция \algname{Merge}, описанная в алгоритме \ref{algo:merge}, за линейное время <<сливает>> два отсортированных подмассива в один большой отсортированный массив. В качестве упражнения докажите корректность \algname{Merge}. Из этого будет следовать корректность сортировки вставками. +\begin{algorithm}[H] + \caption{Алгоритм слияния двух отсортированных массивов} + \label{algo:merge} + \begin{algorithmic}[1] + \Require Отсортированные массивы \(a = [a_1, a_2, \ldots, a_m]\) и \(b = [b_1, b_2, \ldots, b_m]\). + \Ensure Отсортированный массив \(c = [c_1, c_2, \ldots, c_{m + n}]\), состоящий из элементов \(a\) и \(b\). + \Function{Merge}{$a, b$} + \While{\(a \neq \varnothing\) \textbf{and} \(b \neq \varnothing\)} + \If{\(a[1] < b[1]\)} + \State append \(a[1]\) to \(c\) + \State delete \(a[1]\) + \Else + \State append \(b[1]\) to \(c\) + \State delete \(b[1]\) + \EndIf + \EndWhile + \If{\(b = \varnothing\)} + \State append \(a\) to \(c\) + \Else + \State append \(b\) to \(c\) + \EndIf + \State return c + \EndFunction + \end{algorithmic} +\end{algorithm} + +Этот алгоритм <<сортировки слиянием>> иллюстрирует подход <<разделяй и властвуй>>: данные делят на части, для каждой из них решают задачу рекурсивно, а затем решают задачу для исходных данных, используя полученные решения подзадач. + +\subsection*{Время работы сортировки слиянием} +Время работы сортировки слиянием удовлетворяет рекуррентному соотношению: +\begin{displaymath} +T(n) = \left\{ +\begin{array}{ll} +\Theta(1), & \textrm{если }n = 1;\\ +2T(n / 2) + \Theta(n), & \textrm{если }n > 1. +\end{array} +\right. +\end{displaymath} +Действительно, алгоритм решает задачу рекурсивно для двух подмассивов размера (примерно) $n/2$, а затем за время $\Theta(n)$ <<сливает>> результаты. + +Часто в рекуррентном соотношении базовый случай опускают, подразумевая, что $T(n) = \Theta(1)$ для малых $n$. + + +Проанализировав дерево рекурсии, можно увидеть, что на каждом из его $\Theta(\log n)$ уровней выполняется $cn$ операций, где $c$ --- некоторая константа (общая для всех уровней). Таким образом, время работы сортировки слиянием --- $\Theta(n \log n)$. +\newpage +\section{Быстрая сортировка, время работы в худшем, лучшем и среднем случаях.} + +\subsection{Алгоритм быстрой сортировки.} + +Быстрая сортировка, подобно сортировке слиянием, применяет парадигму ``разделяй и властвуй''. Ниже описан процесс сортировки подмассива \(A[p..r]\), состоящий, как и все алгоритмы с использованием декомпозиции, из трех этапов. + +\begin{description} + \item[Разделение.] Массив \(A[p..r]\) разбивается на два (возможно, пустых) подмассива \(A[p..q - 1]\) и \(A[q + 1..r]\), таких, что каждый элемент \(A[p..q - 1]\) меньше или равен \(A[q]\), который, в свою очередь, не превышает любой элемент подмассива \(A[q + 1..r]\). Индекс \(q\) вычисляется в ходе процедуры разбиения. + + \item[Властвование.] Подмассивы \(A[p..q - 1]\) и \(A[q + 1..r]\) сортируются с помощью рекурсивного вызова процедуры быстрой сортировки. + + \item[Комбинирование.] Поскольку подмассивы сортируются на месте, для их объединения не требуются никакие действия: весь массив \(A[p..r]\) оказывается + отсортированным. +\end{description} + +Быстрая сортировка реализуется следующей процедурой: + +\begin{algorithm}[H] + \caption{Алгоритм быстрой сортировки} + \label{algo:quick-sort} + \begin{algorithmic}[1] + \Require Массив \(A[p..r]\). + \Ensure Отсортированный массив \(A[p..r]\). + \Function{QuickSort}($A, p, r$) + \If{\(p < r\)} + \State \(q = \algname{Partition}(A, p, r)\) + \State \algname{QuickSort}\((A, p, q - 1)\) + \State \algname{QuickSort}\((A, q + 1, r)\) + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Вызов процедуры \textsc{QuickSort}\((A, 1, |A|)\) отсортирует весь массив \(A\). + +\subsection{Разбиение массива.} + +Главной частью алгоритма быстрой сортировки является процедура \algname{Partition}, изменяющая порядок элементов подмассива \(A[p..r]\) без привлечения дополнительной памяти. + +\begin{algorithm}[H] + \caption{Алгоритм разбиения массива по опорному элементу.} + \label{algo:partition} + \begin{algorithmic}[1] + \Require Массив $A[p..q]$ из $q - p + 1$ чисел, $1 \leq p \leq q \leq |A|$. + \Ensure Массив $A[p..q]$ переупорядочивается относительно опорного элемента $x = A[p]$ таким образом, что все элементы, меньшие $x$, оказываются слева от $x$, а все элементы, большие $x$~--- справа от $x$; алгоритм возвращает индекс элемента $x$ в переупорядоченном массиве. + \State \(x = A[r]\) + \State \(i = p - 1\) + \For{\(j = p\) \textbf{to} \(r - 1\)} + \If{\(A[j] \leqslant x\)} + \State \(i = i + 1\) + \State swap\((A[i], A[j])\) + \EndIf + \EndFor + \State swap\((A[i + 1], A[r])\) + \State return \(i + 1\) + \end{algorithmic} +\end{algorithm} + +Рассмотрим работу алгоритма на примере массива $\{6, 3, 8, 7, 5 ,1\}$: +\begin{enumerate} + \item $j = 1$. Так как $6 > 3$, то запускается тело цикла. Тогда $i = 1$ и 3 остаётся на месте. + + \item $j = 2$. Так как $6 < 8$, то ничего не изменяется. + + \item $j = 3$. Так как $6 < 7$, то ничего не изменяется. + + \item $j = 4$. Так как $6 > 5$, то запускается тело цикла. Тогда $i = 2$ и числа 5 и 8 меняются местами. + \[\begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & \textbf{8} & 7 & \textbf{5} & 1 \\ + \hline + \end{array} + \longrightarrow + \begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & \textbf{5} & 7 & \textbf{8} & 1 \\ + \hline + \end{array}\] + + \item $j = 5$. Так как $6 > 1$, то запускается тело цикла. Тогда $i = 3$ и 7 и 1 меняются местами. + + \[\begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & 5 & \textbf{7} & 8 & \textbf{1} \\ + \hline + \end{array} + \longrightarrow + \begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & 5 & \textbf{1} & 8 & \textbf{7} \\ + \hline + \end{array}\] + + \item Последний шаг --- переставить опорный элемент на место $i$: + + \[\begin{array}{|c|c|c|c|c|c|} + \hline \textbf{6} & 3 & 5 & \textbf{1} & 8 & 7 \\ + \hline + \end{array} + \longrightarrow + \begin{array}{|c|c|c|c|c|c|} + \hline \textbf{1} & 3 & 5 & \textbf{6} & 8 & 7 \\ + \hline + \end{array}\] +\end{enumerate} + +Эта процедура всегда выбирает элемент \(x = A[r]\) в качестве опорного. Разбиение подмассива \(A[p..r]\) будет выполняться относительно этого элемента. В начале выполнения процедуры массив разделяется на четыре области (они могут быть пустыми). В начале каждой итерации цикла \textbf{for} в строках 3-6 каждая область удовлетворяет определенным свойствам, которые можно сформулировать в виде инварианта цикла: + +В начале каждой итерации цикла в строках 3-6 для любого индекса \(k\) массива справедливо следующее: +\begin{enumerate} + \item Если \(p \leqslant k \leqslant i\), то \(A[k] \leqslant x\). + \item Если \(i + 1 \leqslant k \leqslant j - 1\), то \(A[k] > x\). + \item Если \(k = r\), то \(A[k] = x\). +\end{enumerate} + +Индексы между \(j\) и \(r - 1\) не подпадают ни под один из трех перечисленных случаев, и значения соответствующих им элементов не имеют определенной связи с опорным элементом \(x\). + +\begin{theorem} + Алгоритм разбиения массива по опорному элементу корректен. +\end{theorem} +\begin{proof} + Докажем, что выполняются три основных свойства. + + \textbf{Инициализация.} Перед первой итерацией цикла \(i = p - 1\) и \(j = p\). Между элементами с индексами \(i\) и \(j\) нет никаких элементов, как нет их и между элементами с индексами \(i + 1\) и \(j - 1\), поэтому первые два условия + инварианта цикла тривиально выполняются. Присваивание в строке 1 удовлетворяет третьему условию. + + \textbf{Сохранение.} Нужно рассмотреть два случая, выбор + одного из которых определяется проверкой в строке 4. + \begin{itemize} + \item Пусть \(A[j] > x\). Тогда единственное действие, которое выполняется в этом случае в цикле,~--- это увеличение на единицу значения \(j\). При + увеличении значения \(j\) условие 2 выполняется для элемента \(A[j - 1]\), а все остальные элементы остаются неизменными. + \item Пусть \(A[j] \leqslant x\). В этом случае увеличивается значение \(i\), элементы \(A[i]\) и \(A[j]\) меняются местами, после чего на единицу увеличивается значение \(j\). В результате перестановки получаем \(A[ ш] \leqslant x\), и условие 1 выполняется. Аналогично + получаем \(A[j - 1] > x\) поскольку элемент, который был переставлен в позицию элемента \(A[j - 1]\), согласно инварианту цикла больше \(x\). + \end{itemize} + + \textbf{Завершение.} По завершении работы алгоритма \(j = r\). Поэтому каждый элемент массива является членом одного из трех множеств, описанных в инварианте цикла. Таким образом, все элементы массива разбиты на три множества: величина которых не превышает \(x\), превышающие \(x\) и одноэлементное множество, состоящее из элемента \(x\). +\end{proof} + +\subsection{Сложность алгоритма быстрой сортировки.} + +Так как \algname{Partition}\((A, p, q)\) содержит один проход по массиву, то время работы процедуры \algname{Partition} над подмассивом \(A[p..q]\) равно \(\Theta(n)\), +где \(n = p - q + 1\). + +Теперь рассмотрим массив длины \(n\) и оценим худшее и лучшее время работы алгоритма быстрой сортировки на нём. + +В \textbf{худшем случае}, когда массив дли изначально упорядочен, на каждом шаге разбиения одна из частей оказывается пустой. Время работы алгоритма в этом случае описывается рекуррентным соотношением \[T(n) = T(n-1) + \Theta(n)\] +Легко видеть, что в данном случае \(T(n) = \Theta(n^2)\). + +В \textbf{лучшем случае} на каждом шаге разбиения выбирается медиана разбиваемого подмассива. Тогда справедливо соотношение +\[T(n) = 2T\left(\frac{n}{2}\right) + \Theta(n)\] +То же самое соотношение описывает сложность сортировки слиянием. Ранее было доказано, что сортировка слияниями работает за \(\Theta(n \log n)\). Тогда \(T(n) = \Theta(n\log n)\). + + +\subsection{Средний случай} +Предположим, что все элементы массива различны и рассмотрим рандомизированный алгоритм быстрой сортировки, в котором при разбиении подмассива в качестве опорного элемента выбирается элемент со случайным индексом в этом подмассиве. Для удобства анализа модифицируем алгоритм так, что разбиение будет повторяться до тех пор, пока не окажется, что индекс опорного элемента после разбиения подмассива $a[p..q]$ находится в отрезке $[p + \frac{1}{4}n, q - \frac{1}{4}n]$, где $n = q - p + 1$ --- длина разбиваемого подмассива. + +Математическое ожидание числа попыток разбиения равно 2, так как вероятность выбрать подходящий опорный элемент за одну попытку равна $1/2$. Поэтому время работы модифицированной процедуры \algname{Partition} в среднем вдвое больше времени работы исходной процедуры и асимптотически равно $\Theta(n)$. + +В процессе быстрой сортировки массива из $n$ элементов мы решаем различные подзадачи, требующие отсортировать массивы меньших размеров. Назовем \emph{$j$-подзадачей} подзадачу, в которой требуется отсортировать массив, чей размер лежит в границах $\left(\left(\frac{3}{4}\right)^{j+1} n, \left(\frac{3}{4}\right)^{j} n\right]$. + +На решение одной $j$-подзадачи за вычетом рекурсивного решения ее подзадач меньшего размера в среднем требуется время $O\left(\left(\frac{3}{4}\right)^jn\right)$, так как процедура \algname{Partition} в среднем занимает линейное время, а фаза объединения решений подзадач меньшего размера тривиальна. Различные $j$-подзадачи не пересекаются и не вкладываются друг в друга, а значит общее число $j$-подзадач $\le \left(\frac{4}{3}\right)^{j+1}$. Таким образом, из-за линейности математического ожидания общее время, уходящее на все $j$-подзадачи, в среднем равно $O(n)$. Максимальное значение $j$ не превышает $\log_{\frac{4}{3}}n$. Поэтому время работы всего алгоритма в среднем случае --- $O(n\log n)$. + +Можно показать, что эта оценка справедлива и для алгоритма быстрой сортировки со случайным выбором опорного элемента, в котором результаты <<неудачного>> разбиения не отменяются. +\newpage + +\section{Сортировка при помощи двоичного дерева поиска и ее связь с быстрой сортировкой. Примеры решения рекуррентных соотношений: решение с использованием дерева рекурсии и методом подстановки. Основная теорема.} + +\subsection{Сортировка при помощи двоичного дерева поиска и её связь с быстрой сортировкой.} +Для начала введём понятие двоичного дерева поиска. + +\textbf{Двоичное дерево поиска}~--- это бинарное дерево, удовлетворяющее следующему свойству: \emph{пусть \(x\) представляет собой узел в бинарном дереве. Если \(y\) является узлом в левом поддереве \(x\), то \(x.key \geqslant y.key\). Если же \(y\) является узлом в правом поддереве \(x\), то \(y.key \geqslant x.key\).} Из этого свойства следует, что при обходе дерева слева направо будут перечислены все элементы дерева в возрастающем порядке. + +Рассмотрим алгоритм сортировки с помощью двоичного дерева поиска. Он состоит в том, что создаётся пустое двоичное дерево поиска, в которое постепенно добавляются элементы массива. Можно доказать, что операция вставки в дерево работает за \(O(h)\), где \(h\)~--- высота дерева. Тогда получаем, что такой алгоритм будет работать за \(O(nh)\). В случае \textbf{сбалансированного дерева} \(h = O(\log n)\). + +Теперь рассмотрим связь между бинарными деревьями поиска и алгоритмом быстрой сортировки. Вспомним, что результатом работы алгоритма разбиения массива \ref{algo:partition} будет массив, в котором все элементы, не большие опорного, будут левее него, а те, которые больше~--- справа. Тогда можно сказать, что этот алгоритм ``правит'' дерево, составленное из элементов массива так, чтобы для опорного элемента выполнялось условие бинарного дерева поиска. + +\subsection{Примеры решения различных рекуррентных соотношений.} + +\subsubsection{Пример 1.} + +Рассмотрим следующее \textbf{рекуррентное соотношение}: +\[T(n) \leq 2T(n/2) + cn\] +По умолчанию полагается, что \(T(1) = O(1)\). Построим дерево рекурсии для данного соотношения. + +\begin{tikzpicture}[level/.style={sibling distance=60mm/#1}] +\node [circle,draw] (z){$n$} +child {node [circle,draw] (a) {$\frac{n}{2}$} + child {node [circle,draw] (b) {$\frac{n}{2^2}$} + child {node {$\vdots$} + child {node [circle,draw] (d) {$\frac{n}{2^k}$}} + child {node [circle,draw] (e) {$\frac{n}{2^k}$}} + } + child {node {$\vdots$}} + } + child {node [circle,draw] (g) {$\frac{n}{2^2}$} + child {node {$\vdots$}} + child {node {$\vdots$}} + } +} +child {node [circle,draw] (j) {$\frac{n}{2}$} + child {node [circle,draw] (k) {$\frac{n}{2^2}$} + child {node {$\vdots$}} + child {node {$\vdots$}} + } + child {node [circle,draw] (l) {$\frac{n}{2^2}$} + child {node {$\vdots$}} + child {node (c){$\vdots$} + child {node [circle,draw] (o) {$\frac{n}{2^k}$}} + child {node [circle,draw] (p) {$\frac{n}{2^k}$} + child [grow=right] {node (q) {$=$} edge from parent[draw=none] + child [grow=right] {node (q) {$O_{k = \lg n}(n)$} edge from parent[draw=none] + child [grow=up] {node (r) {$\vdots$} edge from parent[draw=none] + child [grow=up] {node (s) {$O_2(n)$} edge from parent[draw=none] + child [grow=up] {node (t) {$O_1(n)$} edge from parent[draw=none] + child [grow=up] {node (u) {$O_0(n)$} edge from parent[draw=none]} + } + } + } + child [grow=down] {node (v) {$O(n \cdot \lg n)$}edge from parent[draw=none]} + } + } + } + } + } +}; +\path (a) -- (j) node [midway] {+}; +\path (b) -- (g) node [midway] {+}; +\path (k) -- (l) node [midway] {+}; +\path (k) -- (g) node [midway] {+}; +\path (d) -- (e) node [midway] {+}; +\path (o) -- (p) node [midway] {+}; +\path (o) -- (e) node (x) [midway] {$\cdots$} +child [grow=down] { + node (y) {$O\left(\displaystyle\sum_{i = 0}^k 2^i \cdot \frac{n}{2^i}\right)$} + edge from parent[draw=none] +}; +\path (q) -- (r) node [midway] {+}; +\path (s) -- (r) node [midway] {+}; +\path (s) -- (t) node [midway] {+}; +\path (s) -- (l) node [midway] {=}; +\path (t) -- (u) node [midway] {+}; +\path (z) -- (u) node [midway] {=}; +\path (j) -- (t) node [midway] {=}; +\path (y) -- (x) node [midway] {$\Downarrow$}; +\path (v) -- (y) +node (w) [midway] {$O\left(\displaystyle\sum_{i = 0}^k n\right) = O(k \cdot n)$}; +\path (q) -- (v) node [midway] {=}; +\path (e) -- (x) node [midway] {+}; +\path (o) -- (x) node [midway] {+}; +\path (y) -- (w) node [midway] {$=$}; +\path (v) -- (w) node [midway] {$\Leftrightarrow$}; +\path (r) -- (c) node [midway] {$\cdots$}; +\end{tikzpicture} + +Теперд докажем с помощью \textbf{метода подстановки}, что \(T(n) \leq cn\log_2n\): +\begin{description} + \item[Базис.] $T(2) \leq c \leq c \cdot 2\log_22.$ + \item[Шаг.] Пусть утверждение доказано для всех $m \leq n$. Тогда \[T(n) \leq 2T(n/2) + cn \leq 2c(n/2)\log_2(n/2) + cn =\] + \[= cn(\log_2n - 1) + cn = cn\log_2n.\] +\end{description} + +Докажем, что $T(n) \leq kn \log_b n$ для некоторых констант $k$ и $b$ с помощью метода \textbf{частичной подстановки}. Если это так, то +\[T(n) \leq 2T(n/2) + cn \leq 2k(n/2)\log_b(n/2) + cn.\] + +Кажется удобным выбрать $b = 2$. Тогда +\[T(n) \leq 2k(n/2)(\log_2n - 1) + cn = kn\log_2n - kn + cn \leq kn\log_2 n\] +при $k \geq c$. + +\subsubsection{Пример 2.} + +Теперь рассмотрим следующее рекуррентное соотношение: \[F(n) \leqslant F(n/2) + cn\] +Построим дерево рекурсии для данного соотношения. Легко заметить, что оно будет иметь вид \(cn \to cn/2 \to cn/4 \to \ldots \to c\). На $i$-ом уровне~--- одна подзадача размера $n / 2^i$, требующая $cn / 2^i$ времени (не считая времени, уходящего на рекурсивные вызовы). Всего уровней~--- $\log_2 n$. Общее время: +\[F(n) \leq \sum_{i=0}^{\log_2n - 1}\frac{cn}{2^i} = cn\sum_{i=0}^{\log_2n - 1}\frac{1}{2^i} \leq cn \sum_{i=0}^{\infty}\frac{1}{2^i} = 2cn = O(n).\] + +Докажем, что $F(n) \leq kn^d$ для некоторых констант $k$ и $d$ методом частичной подстановки. Если это так, то +\[F(n) \leq F(n/2) + cn \leq k(n/2)^d + cn = \frac{k}{2^d}n^d + cn.\] + +Кажется удобным выбрать $d = 1$. Тогда \(F(n) \leq \frac{kn}{2} + cn = kn\) при $k = 2c$. + +Проверим, что базисное условие тоже выполняется: $F(2) \leq c \leq 2c \cdot 2$. + +\subsubsection{Пример 3.} +Рассмотрим следующее рекуррентное соотношение: +\[T(n) \leq aT(n/2) + cn\] +Попробуем доказать, что $T(n) \leq kn^d$ для некоторых констант $k$ и $d$. Если это так, то +\[T(n) \leq aT(n/2) + cn \leq ak(n/2)^d + cn = \frac{a}{2^d}kn^d + cn.\] + +Кажется удобным выбрать $d = \log_2 a$ так, что $a / 2^d = 1$. Однако чтобы избавиться от $cn$ в правой части вышеприведенного равенства, усилим гипотезу индукции. + +Докажем, что $T(n) \leq kn^d - \ell n$ для $d = \log_2a$ и некоторых констант $k$ и $\ell$. Если это так, то +\[T(n) \leq aT(n/2) + cn \leq a(k(n/2)^d - \ell(n/2)) + cn =\] +\[= \frac{a}{2^d}kn^d - \frac{a\ell}{2}n + cn = kn^d - (\frac{a\ell}{2} - c)n = kn^d - \ell n\] +при $a\ell/2 - c = \ell$, т.е. при $\ell = 2c / (a - 2)$. + +Базис: $T(2) \leq 2 \leq k \cdot 2^d - 2\ell$ при подходящем $k$. + +Так как $\ell = 2c / (a - 2)$, доказательство применимо только к случаю $a > 2$. В этом случае $T(n) = O(n^{\log_2a})$. + +\subsubsection{Пример 4.} +Рассмотрим следующее рекуррентное соотношение: +\[T(n) \leq 2T(n/2) + cn^2\] + +Рассмотрим дерево рекурсии для данного соотношения. На $i$-ом уровне --- $2^i$ подзадач размера $n / 2^i$, каждая из которых требует $c(n/2^i)^2$ времени (не считая времени, уходящего на рекурсивные вызовы). Один уровень требует $2^ic(n / 2^i)^2 = cn^2 / 2^i$ времени. Всего уровней --- $\log_2 n$. Общее время: +\[T(n) \leq \sum_{i=0}^{\log_2n - 1}\frac{cn^2}{2^i} = cn^2\sum_{i=0}^{\log_2n - 1}\frac{1}{2^i} \leq 2cn^2 = O(n^2).\] + +Докажем, что $T(n) \leq kn^d$ для некоторых констант $k$ и $d$ методом частичной подстановки. Если это так, то +\[T(n) \leq 2T(n/2) + cn^2 \leq 2k(n/2)^d + cn^2 = \frac{k}{2^{d-1}}n^d + cn^2.\] + +Кажется удобным выбрать $d = 2$. Тогда +\[T(n) \leq \frac{k}{2}n^2 + cn^2 = kn^2\] +при $k = 2c$. + +Базис: $T(2) \leq c \leq 2c \cdot 2^2$. + +\subsection{Основная теорема о рекуррентных соотношениях. Доказательство основной теоремы.} +\begin{theorem} + + Пусть \(a > 1\) и \(b > 1\)~--- константы, \(f(n)\)~--- функция, а \(T(n)\) определена на множестве неотрицательных целых чисел с помощью рекуррентного соотношения \[T(n) = aT(n/b) + f(n),\] где \(n/b\) интерпретируется либо как \(\lfloor n/b \rfloor\), либо как \(\lceil n/b\rceil\). Тогда Т(п) имеет следующие асимптотические границы. + \begin{enumerate} + \item Если \(f(n) = O(n^{\log_b a - \varepsilon})\) для некоторой константы \(\varepsilon > 0\), то \(T(n) = \Theta(n^{\log_b a})\). + \item Если \(f(n) = \Theta(n^{\log_b a})\), то \(T(n) = \Theta(n^{\log_b a}\lg n)\). + \item Если \(f(n) = \Omega(n^{\log_b a - \varepsilon})\) для некоторой константы \(\varepsilon > 0\) и \(af(n/b) \leqslant cf(n)\) для некоторой константы \(c < 1\) и всех достаточно больших \(n\), то \(T(n) = \Theta(f(n))\). + \end{enumerate} +\end{theorem} +\begin{proof} + Доказательство этой теоремы будет разбито на две части. + + В первой части анализируется данное соотношение только для точных степеней числа \(b\). Анализ проводится с помощью доказательства двух лемм. В первой из них + решение основного рекуррентного соотношения сводится к вычислению выражения, содержащего суммирование. Во второй лемме определяются границы этой суммы. В третьей лемме с помощью первых двух доказывается версия основной + теоремы для случая, когда \(n\)~--- точная степень \(b\). + + \begin{lemma} + Пусть \(a \geqslant 1\) и \(b > 1\)~--- константы, а \(f(n)\)~--- неотрицательная функция, определённая для точных степеней \(b\). Определим функцию \(T(n)\) на этом же множестве следующим образом: + \[T(n) = \begin{cases} + \Theta(1), & n = 1 \\ + aT(n/b) + f(n), & n = b^i, i > 1 + \end{cases}\] + Тогда \[T(n) = \Theta(n^{\log_b a}) + \sum_{j = 0}^{\log_b n - 1}a^j f(n/b^j)\] + \end{lemma} + \begin{proof} + Рассмотрим дерево рекурсии для данного рекуррентного соотношения. Корень дерева имеет стоимость \(f(n)\), и у него \(a\) дочерних ветвей, стоимость каждой из которых равна \(f(n/b)\). (В ходе этих рассуждений, особенно для + визуального представления дерева рекурсии, удобно считать число а целым, хотя это и не следует из каких-либо математических соотношений.) Каждая из этих + дочерних ветвей, в свою очередь, также имеет \(a\) дочерних ветвей (таким образом, получается, что на втором уровне дерева имеется \(a^2\) узлов), время выполнения каждой из которых равно \(f(n/b^2)\). Обобщая эти рассуждения, можно сказать, что на \(j\)-м уровне находится \(a^j\) узлов, стоимость каждого из которых равна \(f(n/b^j)\). Стоимость каждого листа равна \(T(1) = \Theta(1)\), и все листья находятся на глубине \(\log_b n\), поскольку \(n/b^{\log_b n} = 1\). Всего же у дерева \(a^{\log_b n} = n^{\log_b a}\) листьев. + \end{proof} + \begin{lemma} + Пусть \(a \geqslant 1\) и \(b > 1\)~--- константы, а \(f(n)\)~--- неотрицательная функция, определённая для точных степеней \(b\). Определим функцию \(g(n)\) на этом же множестве следующим образом: + \[g(n) = \sum_{j = 0}^{\log_b n - 1}a^j f(n/b^j)\] + Тогда её можно асимптотически оценить следующим образом: + \begin{enumerate} + \item Если \(f(n) = O(n^{\log_b a - \varepsilon})\) для некоторой константы \(\varepsilon > 0\), то \(g(n) = O(n^{\log_b a})\). + \item Если \(f(n) = \Theta(n^{\log_b a})\), то \(g(n) = \Theta(n^{\log_b a}\lg n)\). + \item Если \(f(n) = \Omega(n^{\log_b a - \varepsilon})\) для некоторой константы \(\varepsilon > 0\) и \(af(n/b) \leqslant cf(n)\) для некоторой константы \(c < 1\) и всех достаточно больших \(n\), то \(g(n) = \Theta(f(n))\). + \end{enumerate} + \end{lemma} + \begin{proof} + Рассмотрим первый случай. Тогда получаем, что \[g(n) = O\left(\sum_{j = 0}^{\log_b n - 1}a^j \left(\frac{n}{b^j}\right)^{\log_b a - \varepsilon}\right).\] + Оценим данную сумму в \(O\)-обозначениях: + \begin{multline*} + \sum_{j = 0}^{\log_b n - 1}a^j \left(\frac{n}{b^j}\right)^{\log_b a - \varepsilon} = n^{\log_b a - \varepsilon} \sum_{j = 0}^{\log_b n - 1} \left(\frac{ab^{\varepsilon}}{b^{\log_b a}}\right)^j = n^{\log_b a - \varepsilon} \sum_{j = 0}^{\log_b n - 1} \left(b^{\varepsilon}\right)^j = \\ = n^{\log_b a - \varepsilon} \frac{b^{\varepsilon \log_b n} - 1}{b^{\varepsilon} - 1} + = n^{\log_b a - \varepsilon} \frac{n^{\varepsilon} - 1}{b^{\varepsilon} - 1} + \end{multline*} + Так как \(b\)~--- константа, то последнее выражение можно представить в виде \(n^{\log_b a - \varepsilon}O(n^{\varepsilon}) = O(n^{\log_b a})\). + + Теперь рассмотрим второй случай. Согласно нему, \[g(n) = \Theta\left(\sum_{j = 0}^{\log_b n - 1}a^j \left(\frac{n}{b^j}\right)^{\log_b a}\right).\]Опять же, распишем сумму: + \[\sum_{j = 0}^{\log_b n - 1}a^j \left(\frac{n}{b^j}\right)^{\log_b a} = n^{\log_b a} \sum_{j = 0}^{\log_b n - 1}\left(\frac{a}{b^{\log_b a}}\right)^{j} = n^{\log_b a} \sum_{j = 0}^{\log_b n - 1} 1 = n^{\log_b a} \log_b n\] + Отсюда получаем желаемое. + + Далее, случай 3 доказывается аналогично. Поскольку \(f(n)\) фигурирует в определении функции \(g(n)\) и все члены \(g(n)\) неотрицательны, можно заключить, что для точных степеней \(b\) справедливо соотношение \(g(n) = \Omega(f(n))\). Согласно нашему предположению из формулировки леммы, для некоторой константы \(c > 1\) и всех достаточно больших \(n\) выполняется неравенство \(af(n/b) \leqslant cf(n)\). Повторив итерацию \(j\) раз, получаем, что \(a^{j}f(n/b^j) \leqslant c^jf(n)\) в предположении, что итерируемые значения достаточно велики. Поскольку последнее (и наименьшее) такое значение равно \(n/b^{j - 1}\), хватит предположения о том, что оно достаточно велико. + + Подстановка в уравнение и упрощение приводят к геометрической прогрессии, зависящей только от \(c\). Эта прогрессия убывающая, поэтому её можно ограничить сверху некоторым выражением, которое зависит только от \(c\), т.е. константой. Тогда \(g(n) = O(f(n)) \implies g(n) = \Theta(f(n))\). + \end{proof} + Дальнейшее доказательство сводится к рассмотрению трёх случаев с использованием этих лемм. + + На данный момент теорема доказана только для степеней числа \(b\). Но выполняется ли она дла любого \(n\)? Сейчас мы докажем, что да, выполняется. + + Чтобы завершить доказательство основной теоремы, необходимо обобщить проведенный ранее анализ на случай, когда рекуррентное соотношение определено не только для точных степеней числа \(b\), но и для всех целых чисел. Получить + нижнюю границу для выражения + \[T(n) = aT(\lceil n/b \rceil) + f(n)\] + и верхнюю границу для + \[T(n) = aT(\lfloor n/b \rfloor) + f(n)\] + не составляет труда, поскольку в первом случае для получения нужного результата можно использовать неравенство \(\lceil n/b \rceil \geqslant n/b\), а во втором~--- неравенство \(\lfloor n/b \rfloor \leqslant n/b\). Чтобы получить нижнюю границу второго рекуррентного + соотношения, необходимо применить те же методы, что и при нахождении верхней границы для первого рекуррентного соотношения, поэтому здесь будет показан поиск только последней. + Сперва введём последовательность \(n_i\) следующим образом: + \[n_i = \begin{cases} + n, & i = 0 \\ + \lceil n_{i - 1}/b \rceil, & i > 0 + \end{cases}\] + Дерево рекурсии, представленное для случая точной степени, модифицируется следующим образом: на каждом уровне \(n/b^i\) меняется на \(n_i\). Теперь определим \(k\) такое, что \(n_k\)~--- константа. Для этого воспользуемся неравенством \(\lceil x \rceil \leqslant x + 1\): + \[\begin{array}{c} + n_0 \leqslant n, \\ + n_1 \leqslant \dfrac{n}{b} + 1, \\ + n_2 \leqslant \dfrac{n}{b^2} + \dfrac{1}{b} + 1, \\ + \vdots + \end{array}\] + Тогда получаем (с применением суммы убывающей геометрической прогрессии), что + \[n_j < \frac{n}{b^j} + \frac{b}{b - 1}\] + Пусть \(j = \lfloor \log_b n \rfloor\). Тогда + \[n_j < \frac{n}{b^j} + \frac{b}{b - 1} < \frac{n}{b^{\log_b n - 1}} + \frac{b}{b - 1} = \frac{1}{1/b} + \frac{b}{b - 1} = O(1)\] + Тогда можно пользоваться аналогом формулы из первой леммы: + \[T(n) = \Theta(n^{\log_b a}) + \sum_{j = 0}^{\lfloor \log_b n \rfloor\ - 1}a^j f(n_j)\] + Докажем, что для данной суммы выполняются те же условия, что и для случая с целой степенью. Начнем со случая 3. Если \(af(n/b) \leqslant cf(n)\) для \(n > b + \frac{b}{b - 1}\), + где \(c < 1\)~--- константа, то \(a^jf(n_jj) \leqslant c^jf(n)\) . Следовательно, сумму в можно вычислять, как в лемме 4.3. + + В случае 2 имеем \(f(n) = \Theta(n^{\log_b a})\). + Если мы сможем показать, что \(f(n_j) = \Theta(n^{\log_b a}/a_j) = \Theta((n/b_j)^{\log_b a})\), то + доказательство случая 2 леммы 4.3 будет завершено. Заметим, что из \(j \leqslant \lfloor \log_b n \rfloor\) + следует \(b^j/n \leqslant 1\). Наличие границы \(f(n) = O(n^{\log_b a})\) подразумевает, что + существует такая константа \(c > 0\), что для всех достаточно больших \(n\) выполняется + \begin{multline*} + f(n_j) \leqslant c\left(\frac{n}{b^j} + \frac{b}{b - 1}\right)^{\log_b a} = c\frac{n^{\log_b a}}{a^j}\left(1 + \frac{b^{j + 1}}{n(b -1)}\right)^{\log_b a} \leqslant c\frac{n^{\log_b a}}{a^j}\left(1 + \frac{b}{b -1}\right)^{\log_b a} = \\ = O\left(\frac{n^{\log_b a}}{a^j}\right) + \end{multline*} + поскольку \(c(1 + b/(b - 1))^{\log_b a}\) представляет собой константу. Таким образом, случай 2 доказан. Доказательство случая 1 почти идентично. Ключевым моментом является доказательство границы \(f(n_j) = O((n/b_j)^{\log_b a - \varepsilon})\), которое аналогично соответствующему доказательству случая 2, хотя алгебраические выкладки при + этом оказываются несколько более сложными. + + Итак, мы доказали соблюдение верхних границ в основной теореме для всех целых \(n\). Соблюдение нижних границ доказывается аналогично. +\end{proof} + +\newpage +\section{Разбиение массива по опорному элементу на три части (элементы, меньшие опорного, равные опорному и большие опорного). Оптимальность сортировки слиянием. Выбор порядковой статистики за время O(n): рандомизированный и детерминированный алгоритмы.} + +\subsection{Быстрая сортировка. Продолжение} +Говоря об алгоритме быстрой сортировки (\textsc{QSort}), мы рассматривали только случаи, когда все элементы различны. Однако это далеко не всегда так. Если в входном массиве есть равные элементы, то алгоритм может застопориться. Для того, чтобы избежать этого, изменим алгоритм \textsc{Partition}. Попытаемся преобразовывать массив таким образом, чтобы в левой части стояли элементы строго меньшие опорного, в правой --- строго большие, а в середине --- равные ему: +\[\begin{array}{|c|c|c|c|c|} + \hline + \phantom{x} & \dots & x & \dots & \phantom{x} \\ + \hline +\end{array} +\longrightarrow +\begin{array}{|c|c|c|} + \hline + x\\ + \hline +\end{array}\] + +Обозначим за опорный элемент последний. Будем проходиться по массиву от начала до конца, выставляя элементы в нужном порядке (? — ещё не просмотренные элементы): +\[\begin{array}{lllll} + \hline + \multicolumn{1}{|c|}{x} & \multicolumn{1}{|c|}{ ? } & \multicolumn{1}{|c|}{=x} & \multicolumn{1}{|c|}{x}\\ + \hline + [1, i) & [i, j) & [j, k) & [k, n) & n +\end{array}\] + +\begin{algorithm} +\caption{Модифицированный алгоритм \textsc{Partition}} +\begin{algorithmic}[1] +\Function{Partition}{$a$} +\State $i \mathrel{:=} 1$ +\State $j \mathrel{:=} 1$ +\State $k \mathrel{:=} n - 1$ +\While{$j < k$} + \If{$a[j] = a[n]$} + \State $k \mathrel{:=} k - 1$ + \State $a[j], a[k] \mathrel{:=} a[k], a[j]$ + \Else \If{$a[j] < a[n]$} + \State $a[i], a[j] \mathrel{:=} a[j], a[i]$ + \State $j \mathrel{:=} j + 1$ + \State $i \mathrel{:=} i + 1$ + \Else + \State $j \mathrel{:=} j + 1$ + \EndIf + \EndIf +\EndWhile +\EndFunction +\end{algorithmic} +\end{algorithm} + +Заметим, что $j = k$ (так как алгоритм не закончит работу до тех пор, пока это не станет верно). Тогда на выходе получится массив вида: + +\[\begin{array}{lll} + \hline + \multicolumn{1}{|c|}{x} & \multicolumn{1}{|c|}{=x}\\ + \hline + [1, i) & [i, j) & [k, n] +\end{array}\] + +Остаётся только переставить части массива: + +\begin{algorithm} +\begin{algorithmic}[1] +\State $j \mathrel{:=} n$ +\While{$i < k$ and $j \geqslant k$} + \State $a[i], a[j] \mathrel{:=} a[j], a[i]$ + \State $i \mathrel{:=} i + 1$ + \State $j \mathrel{:=} j - 1$ +\EndWhile +\end{algorithmic} +\end{algorithm} + +\ + +\textbf{В:} Самая быстрая из наших сортировок --- $O(n \log n)$. А можно ли быстрее? + +\textbf{О:} На основе только сравнений --- нет. + +Использовать разобранные нами сортировки можно на любых сущностях, для которых определена операция сравнения. + +Предположим теперь, что мы сортируем натуральные числа, не превосходящие некоторого числа $C$. + +Создадим массив $b$ размера $C$, заполненный нулями. Будем проходить по исходному массиву $a$ и на каждом шаге будем добавлять 1 к соответствующему элементу массива $b$: +\[b[a[i]] \mathrel{:=} b[a[i]] + 1\] +Потом, проходя по получившемуся массиву $b$, будем восстанавливать исходный массив уже в отсортированном виде. + +Такая сортировка будет работать за $O(n)$, однако, она не универсальна. + +Вернёмся к универсальным сортировкам. Рассмотрим дерево для массива $a = [6, 5, 2]$: + +\begin{center} +\begin{forest} +for tree={ + %parent anchor=south, + %child anchor=north, + if n children=0{ + font=\itshape, + %tier=terminal, + }{}, +} +[{$\mathbf{a[1] < a[2]}$} + [{$a[1] < a[3]$} + [{$a[2] < a[3]$} + [{$(6, 5, 2)$} + ] + [{$(5, 6, 2)$} + ] + ] + [{$(2, 6, 5)$} + ] + ] + [{$\mathbf{a[2] < a[3]}$} + [{$a[1] < a[3]$} + [{$(5, 6, 2)$} + ] + [{$(5, 2, 6)$} + ] + ] + [{$\mathbf{(2, 6, 5)}$} + ] + ] +] +\end{forest} +\end{center} + +Подобное дерево можно составить для любого детерминированного\footnote{Детерминированный алгоритм — алгоритмический процесс, который выдаёт предопределённый результат для заданных входных данных. Например, \textsc{QSort}, выбирающий опорный элемент случайным образом, не является детерминированным.} алгоритма сортировки, зафиксировав $n$. Сложность алгоритма будет являться высота $h$ дерева. Посчитаем это $h$: +\begin{itemize} + \item[$\blacktriangleright$] Так как алгоритм должен работать на любой перестановке из $n$ элементов, то у дерева не может быть меньше, чем $n!$ листов. + \item[$\blacktriangleright$] Так как сравнение --- бинарная операция, то у каждой вершины не более двух потомков. Тогда в дереве не может быть больше, чем $2^h$ листьев. + \item[$\blacktriangleright$] Тогда $2^h \geqslant n! \iff h \geqslant \log_2 n!$. + Заметим, что: + \[n! = 1 \cdot 2 \cdot \ldots \cdot \left\lfloor\frac{n}{2}\right\rfloor \cdot \underbrace{ \left(\left\lfloor\frac{n}{2}\right\rfloor + 1\right) \cdot \ldots (n - 1) \cdot n}_\text{каждый из $\frac{n}{2}$ элементов не меньше $\frac{n}{2}$} \geqslant \left(\frac{n}{2}\right)^{\frac{n}{2}} \] + Тогда $h \geqslant \log_2 \left(\frac{n}{2}\right)^{\frac{n}{2}} = \frac{n}{2} \log_2 \frac{n}{2} = \Omega(n \log n)$. Из этого следует, что отсортировать произвольный массив с помощью только сравнений меньше, чем за $\Omega(n \log n)$ операций, невозможно. +\end{itemize} + +\subsection{Поиск медианы} + +Медиана --- такой элемент массива, что не меньше половины элементов меньше неё, и не меньше половины --- больше. + +Для отсортированного массива размера $n$ медиана будет находиться под номером $\dfrac{n + 1}{2}$ для нечётных $n$ и $\dfrac{n}{2}$ для чётных $n$. +Пример: для массива (8, 1, 3, 5, 6, 9) медианой будет являться~5. + +Как же найти медиану? +Очевидно, что можно отсортировать и взять средний --- $\Theta(n)$. + +А можно ли найти медиану ли за линейное время? +Можно. +Напишем алгоритм, находящий элемент, стоящий на k-ом месте в массиве, получающемся из входного после сортировки. +Это называется поиском $k$-ой порядковой статистики. +Составим этот алгоритм, немного модифицировав QSort: + +\begin{algorithm} +\caption{Поиск $k$-ой порядковой статистики} +\begin{algorithmic}[1] +\Function{Select}{$a, k$} + \State choose pivot $a[p]$ + \State $i \mathrel{:=} \textsc{Partition}(a, p)$ + \If{$i \mathrel{:=} k$} + \State return $a[i]$ + \EndIf + \If{$i > k$} + \State return $\textsc{Select}(a[1 \ldots i - 1], k)$ + \Else + \State return $\textsc{Select}(a[i + 1 \ldots n], k - i)$ + \EndIf +\EndFunction +\end{algorithmic} +\end{algorithm} + +Как и в быстрой сортировке, неправильно выбранный опорный элемент портит скорость до $n^2$. Будем выбирать опорный элемент случайным образом. Попробуем посчитать время работы в среднем случае. + +$j$-подзадача размера $n'$. $\left( \frac{3}{4} \right)^{j+1}n < n' \leqslant \left( \frac{3}{4} \right)^{j}n$ + +Как и в QSort, в среднем мы потратим две попытки на переход к следующему $j$. + +Максимальное $j$ --- $O(\log_\frac{4}{3} n)$ + +$T(n) \leqslant \sum\limits_{j=0}^{\log_{\frac{4}{3}}n} 2\cdot c\cdot \left( \frac{3}{4} \right)^jn = 2cn\sum\limits_{j=0}^{\log_{\frac{4}{3}}n}\left( \frac{3}{4} \right)^j \leqslant 2cn$ + +Время работы алгоритма в худшем случае всё ещё $O(n^2)$. +Худший случай — когда на каждом шаге мы отщеплем всего один элемент. +Для достижения лучшего случая, на каждом шаге нужно выбирать в качестве опорного элемента медиану. + +\subsection{Медиана медиан} +Попробуем несколько модифицировать наш алгоритм. +Разобьём входной массив на группы по 5 элементов. +Отсортируем каждую такую группу. +Так как размер каждой группы зафиксирован, время сортировки не зависит от $n$. +Зависит только количество сортировок. +Возьмём медиану в каждой группе и применим алгоритм нахождения медианы к получившемуся массиву медиан. +Выберем её в качестве опорного элемента. + +\begin{algorithm} +\caption{Поиск $k$-ой порядковой статистики 2} +\begin{algorithmic}[1] +\Function{Select}{$a, k$} + \State Divide a into groups of 5 + \State Choose medians $m_1,\ldots m_\frac{n}{5}$ + \State $x = \textsc{Select}([m_1,\ldots, m_\frac{n}{5}], \frac{n}{10})$ + \State choose $x$ as pivot $a[p]$ + \State $i \mathrel{:=} \textsc{Partition}(a, p)$ + \If{$i \mathrel{:=} k$} + \State return $a[i]$ + \EndIf + \If{$i > k$} + \State return $\textsc{Select}(a[1 \ldots i - 1], k)$ + \Else + \State return $\textsc{Select}(a[i + 1 \ldots n], k - i)$ + \EndIf +\EndFunction +\end{algorithmic} +\end{algorithm} + +$T(n) \leqslant cn + T\left(\frac{n}{5}\right) + T\left( \frac{7}{10}n \right)$ + +$T(n) \leqslant ln$ для некоторого $l$ + +$T(n) \leqslant cn + T(\frac{n}{5}) + T(\frac{7}{10}) \leqslant cn + \frac{ln}{5} + \frac{7}{10}ln$ +\newpage +\section{Поиск ближайшей пары точек за время O(n log n).} + +Во множестве точек на прямой, заданных своими координатами, требуется найти пару точек, находящихся на наименьшем евклидовом расстоянии друг от друга. Эту задачу можно решить за время $O(n\log n)$, отсортировав точки по координатам за время $O(n\log n)$ и найдя ближайшие точки среди соседних за время $O(n)$. + +Усложним задачу: точки находятся на плоскости и заданы двумя своими координатами (предположим, что у всех точек различные координаты $x$ и различные координаты $y$). Создадим два массива точек: в массиве $P_x$ все исходные точки упорядочены по координате $x$, а в массиве $P_y$ --- по координате $y$. Далее используем стратегию <<разделяй и властвуй>>. + +Пусть $x^*$ --- медианная координата $x$. Разделим множество точек пополам на множества $L$ и $R$, поместив в первое множество точки с координатой $x$, не превышающей $x^*$, а во второе --- все остальные. Используя $P_x$ и $P_y$, можно за линейное время вычислить упорядочения $L$ и $R$ по обеим координатам, получив списки $L_x, L_y, R_x$ и $R_y$. В каждой половине рекурсивно найдем по паре ближайших точек. + +Пусть $\delta$ --- минимальное из расстояний между найденными парами точек в каждой половине. Искомая пара точек может совпадать с одной из найденных пар, но может и состоять из точек, принадлежащих разным половинам (одна точка --- в $L$, другая --- в $R$). В последнем случае расстояние между искомой парой точек не больше $\delta$. + +Рассмотрим полосу ширины $2\delta$ с центром по прямой $x = x^*$. Очевидно, что точки из разных половин, находящиеся на расстоянии не более $\delta$ друг от друга, должны находиться в этой полосе. Одним проходом по $P_y$ сформируем массив $S_y$ точек этой полосы, упорядоченный по координате $y$. Разобьем полосу на квадраты со стороной $\frac{\delta}{2}$. Две точки не могут попасть в один квадрат, так как каждый квадрат целиком находится в левой или правой половине плоскости, а расстояние между точками из одной половины не может быть меньше $\delta$. Если же две точки разделены по вертикали тремя горизонтальными рядами квадратов, то расстояние между ними превышает $\delta$. Следовательно, пары точек, находящихся друг от друга на расстоянии не больше $\delta$, стоит искать среди точек, разделенных не более чем двумя рядами квадратов. В упорядоченном по координате $y$ списке $S_y$ между такими точками может быть не более 14 других точек, так как один горизонтальный ряд содержит четыре квадрата, а в одном квадрате --- не более одной точки. Поэтому точки, находящиеся на расстоянии не более $\delta$, можно найти, просмотрев 15 соседних точек для каждой точки из $S_y$. На самом деле, можно обойтись просмотром и меньшего числа соседей, но важно, что это число константно, а значит, найти искомую пару можно за время, линейное от размера $S_y$. + +Псевдокод приведен в Алгоритме \ref{algo:pair}. Расстояние между точками $p$ и $q$ обозначается как $d(p, q)$. + +\begin{algorithm}[H] + \caption{\algname{ClosestPair}($P$)} + \label{algo:pair} + \begin{algorithmic} + \Require Массив точек $P = [(x_1, y_1), \dots, (x_n, y_n)]$, где $x_i \neq x_j$ и $y_i \neq y_j$ при $i \neq j$. + \Ensure Точки $(x_i, y_i)$ и $(x_j, y_j)$, $i \neq j$, находящиеся на минимальном евклидовом расстоянии друг от друга среди всех точек $P$. + \State + \State $P_x :=$ sort $P$ by $x$ + \State $P_y :=$ sort $P$ by $y$ + \State \Return \algname{ClosestPairRec}($P_x, P_y$)\Comment{см. Алгоритм \ref{algo:pair-rec}} + \end{algorithmic} +\end{algorithm} + +\begin{algorithm}[H] + \caption{\algname{ClosestPairRec}($P_x, P_y$)} + \label{algo:pair-rec} + \begin{algorithmic} + \Require Массив точек $P = [(x_1, y_1), \dots, (x_n, y_n)]$, где $x_i \neq x_j$ и $y_i \neq y_j$ при $i \neq j$, упорядоченный по $x$ в $P_x$ и по $y$ --- в $P_y$. + \Ensure Точки $(x_i, y_i)$ и $(x_j, y_j)$, $i \neq j$, находящиеся на минимальном евклидовом расстоянии друг от друга среди всех точек $P$. + \State + \If{$P_x \leq 3$} + \State compute all (at most three) pairwise distances + \Return the closest pair + \EndIf + \State + \State $(x^*, y^*) := P_x[\lfloor\frac{n+1}{2}\rfloor]$\Comment{медианная точка $P_x$} + \State $L_x := P_x[1..\lfloor\frac{n+1}{2}\rfloor]$\Comment{первая половина $P_x$} + \State $R_x := P_x[(\lfloor\frac{n+1}{2}\rfloor + 1)..n\rfloor]$\Comment{вторая половина $P_x$} + \State $L_y := [(x, y) \in P_y \mid x \leq x^*]$ + \State $R_y := [(x, y) \in P_y \mid x > x^*]$ + \State + \State $(p_1, p_2) := \algname{ClosestPairRec}(L_x, L_y)$ + \State $(r_1, r_2) := \algname{ClosestPairRec}(R_x, R_y)$ + \If{$d(r_1, r_2) < d(p_1, p_2)$} + \State $p_1, p_2 := r_1, r_2$ + \EndIf + \State + \State $S_y := [(x, y) \in P_y \mid |x - x^*| < d(p_1, p_2)]$\Comment{точки из полосы шириной $2\delta$} + \State + \For{$i := 1$ \textbf{to} $|S_y| - 1$} + \For{$j := i + 1$ \textbf{to} $\min\{i + 15, |S_y|\}$} + \If{$d(S_y[i], S_y[j]) < d(p_1, p_2)$} + \State $p_1, p_2 := S_y[i], S_y[j]$ + \EndIf + \EndFor + \EndFor + \State + \Return $p_1, p_2$ + \end{algorithmic} +\end{algorithm} + +Оценим время работы этого алгоритма: +$$T(n) = O(n\log n) + T_{\algname{ClosestPairRec}}(n),$$ +где +$$T_{\algname{ClosestPairRec}}(n) = 2 T\left(\frac{n}{2}\right) + O(n) = O(n\log n).$$ +\newpage +\section{Алгоритм Карацубы для умножения целых чисел. Алгоритм Штрассена для умножения матриц.} + +\subsection{Умножение чисел. Алгоритм Карацубы} + +Пусть \(x = \overline{x_1 x_2 \ldots x_n}\) и \(y = \overline{y_1 y_2 \ldots y_n}\). Распишем их умножение в столбик: +\begin{center} + \[ + \renewcommand{\arraystretch}{0.8} + \arraycolsep=1pt + \begin{array}{r} + \times\begin{array}{rrrr} + x_1 & x_2 & \ldots & x_n \\ + y_1 & y_2 & \ldots & y_n \\ + \hline + \end{array} + \\ + +\begin{array}{rrrrrrr} + & & & z_{11} & z_{12} & \ldots & z_{1n} \\ + & & z_{21} & z_{22} & \ldots & z_{2n} & \\ + & \hdotsfor{4} & & \\ + z_{n1} & z_{n2} & \ldots & z_{nn} & & & \\ + \hline + \end{array} + \\ + \begin{array}{rrrrrrrr} + z_{11} & z_{12} & \dots & \dots & \dots & \dots & z_{2n} & z_{2n+1} \\ + \end{array} + \end{array}\] +\end{center} + + +Какова сложность такого умножения? Всего \(n\) строк. На получение каждой строки тратится \(O(n)\) операций. Тогда сложность этого алгоритма --- \(nO(n) = O(n^2)\). Теперь вопрос: \emph{а можно ли быстрее?} Один из величайших математиков XX века, А.Н. Колмогоров, считал, что это невозможно. + +Попробуем воспользоваться стратегией <<Разделяй и властвуй>>. Разобьём числа в разрядной записи пополам. Тогда +\[\begin{array}{c} +\times \begin{cases} +x = 10^{n/2}a + b\\ +y = 10^{n/2}c + d\\ +\end{cases} \\ +\Downarrow\\ +xy = 10^{n}ac + 10^{n/2}(ad+bc)+bd +\end{array}\] + +Как видно, получается 4 умножения чисел размера \(\frac{n}{2}\). Так как сложение имеет сложность \(\Omega(n)\), то + +\[T(n) = 4T\left( \frac{n}{2} \right) + \Theta(n)\] + +Чему равно \(T(n)\)? Воспользуемся основной теоремой. Напомним: в общем виде неравенство +имеет вид: + +\[T(n) \leqslant aT\left( \frac{n}{b} \right) + cn^d\] + +В нашем случае \(a = 4, b = 2, d = 1\). Заметим, что \(4 > 2^1 \implies a > b^d\). Тогда \(T(n) = O(n^{\log_2 4}) = O(n^2)\). + +Как видно, it’s not very effective. Хотелось бы свести число умножений на каждом этапе к +трём, так как это понизит сложность до \(O(n^{\log_2 3}) \approx O(n^{1.58})\)Но как? + +Вернёмся к началу. Разложим \((a + b)(c + d)\) + +\[(a+b)(c+d) = ac+(ad+bc) + bd \implies ad + bc = (a + b)(c + d) - ac - bd\] + +Подставим это в начальное выражение для \(xy\): + +\[xy = 10^{n}ac + 10^{n/2}((a + b)(c + d) - ac - bd)+bd\] + +Отсюда видно, что достаточно посчитать три числа размера \(\frac{n}{2}\): \((a + b)(c + d), ac\) и \(bd\). Тогда: + +\[T(n) = 3T\left( \frac{n}{2} \right) + \Theta(n) \implies T(n) = O(n^{\log_2 3})\] + +Полученный алгоритм называется \emph{алгоритмом Карацубы}. +На данный момент доказано, что для любого $\varepsilon > 0$ существует алгоритм, который совершает умножение двух чисел с сложностью \(O(n^{1 + \varepsilon})\). Также стоит упомянуть \emph{алгоритм Шёнхаге-Штрассена}, работающий за \(O(n \log n \log \log n)\) + +\subsection{Перемножение матриц. Алгоритм Штрассена} + +Пусть у нас есть квадратные матрицы +\[A = \begin{pmatrix} +a_{11} & a_{12} & \ldots & a_{1n} \\ +a_{21} & a_{22} & \ldots & a_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +a_{n1} & a_{n2} & \ldots & a_{nn} \\ +\end{pmatrix} +\text{и } +B = \begin{pmatrix} +b_{11} & b_{12} & \ldots & b_{1n} \\ +b_{21} & b_{22} & \ldots & b_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +b_{n1} & b_{n2} & \ldots & b_{nn} \\ +\end{pmatrix}\] + +Сколько операций нужно для умножения матриц? Умножим их по определению. Матрицу +\(C = AB\) заполним следующим образом: +\[c_{ij} = \sum\limits_{k = 1}^{n} a_{ik}b_{kj}\] + +Всего в матрице \(n^2\) элементов. На получение каждого элемента уходит \(O(n)\) операций (умножение за константное время и сложение \(n\) элементов). Тогда умножение требует \(n^2O(n) = O(n^3)\) +операций. + +А можно ли быстрее? Попробуем применить стратегию «Разделяй и властвуй». Представим +матрицы \(A\) и \(B\) в виде: + +\[A = \begin{pmatrix} +A_{11} & A_{12}\\ +A_{21} & A_{22} +\end{pmatrix} +\text{и } +B = \begin{pmatrix} +B_{11} & B_{12}\\ +B_{21} & B_{22} +\end{pmatrix}\] +где каждая матрица имеет размер \(\frac{n}{2}\). Тогда матрица \(C\) будет иметь вид: +\[C = \begin{pmatrix} +A_{11}B_{11}+A_{12}B_{21} & A_{11}B_{12}+A_{12}B_{22}\\ +A_{21}B_{11}+A_{22}B_{21} & A_{21}B_{12}+A_{22}B_{22} +\end{pmatrix}\] + Как видно, получаем 8 перемножений матриц порядка \(\frac{n}{2}\). Тогда + +\[T(n) = 8T\left( \frac{n}{2} \right) + O(n^2)\] + +По основной теореме получаем, что $T(n) = O\left(n^{\log_{2} 8}\right) = O(n^{3})$. + +Можно ли уменьшить число умножений до 7? \emph{Алгоритм Штрассена} утверждает, что можно. Он предлагает ввести следующие матрицы (даже не спрашивайте, как до них дошли): + +\[\begin{cases} + M_1 = (A_{11} + A_{22})(B_{11} + B_{22}); \\ + M_2 = (A_{21} + A_{22})B_{11}; \\ + M_3 = A_{11}(B_{12} - B_{22}); \\ + M_4 = A_{22}(B_{21} + B_{11}); \\ + M_5 = (A_{11} + A_{12})B_{22}; \\ + M_6 = (A_{21} - A_{11})(B_{11} + B_{12}); \\ + M_7 = (A_{12} - A_{22})(B_{21} + B_{22}); \\ +\end{cases}\] +Тогда +\[\begin{cases} + C_1 &= M_1+M_4-M_5+M_7; \\ + C_2 &= M_3+M_5; \\ + C_3 &= M_2+M_4; \\ + C_4 &= M_1-M_2+M_5+M_6; \\ +\end{cases}\] + +Можно проверить что всё верно (оставим это как \sout{наказание} упражнение читателю). Сложность алгоритма: + +\[T(n) = 7T\left( \frac{n}{2} \right) + O(n^2) \implies T(n) = O\left(n^{\log_{2} 7} \right)\] + +На данный момент один из самых быстрых алгоритмов имеет сложность \(\approx O(n^{2.3})\) (\emph{ал- +горитм Виноградова}). Но этот алгоритм быстрее только в теории — из-за астрономически +огромной константы. +\newpage +\section{Быстрое возведение в степень по модулю. Динамическое программирование: выравнивание абзаца по ширине (рекурсивное решение с меморизацией).} + +\subsection{Быстрое возведение в степень} +Пусть \(x = \overline{x_1 \ldots x_n}\), \(y = \overline{y_1 \ldots y_n}\). Можно ли за полиномиальное время возвести число $x$ в степень $y$? + +Тупо умножать $x$ на себя $y$ совершенно неоптимально --- несложно показать, что сложность алгоритма будет $O(2^n)$ (где $n$ --- число цифр в числе). При этом само число $x^y$ содержит \(10^{n}n\) цифр. Получается, что один только размер результата экспоненциален, то есть полиномиальной сложности не хватит даже на вывод результата. + +А если по модулю (т.е. результатом будет \(x^y \pmod{p}\) для некоторого указанного \(p\))? Прямое умножение всё равно достаточно медленно. Можно ли быстрее? Оказывается, что да. + +\begin{algorithm} + \caption{Быстрое возведение в степень} + \begin{algorithmic}[1] + \Function{Power}{$x, y, p$}\Comment{алгоритм считает \(x^y \pmod{p}\)} + \If{\(y = 0\)} + \State return 1 + \EndIf + \State \(t \mathrel{:=} \textsc{Power}\left(x, \lfloor\frac{y}{2}\rfloor, p \right)\) + \If{\(y \equiv 0 \pmod{2}\)} + \State return \(t^2\) + \Else + \State return \(xt^2\) + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Легко понять, что глубина рекурсии для данного алгоритма равна $O(\log y) = O(n)$. + +Покажем, как он работает на примере \(x = 4, y = 33\): \[x^{33} = x(x^{16})^{2} = x((x^{8})^2)^2 = x(((x^4)^2)^2)^2 = x((((x^2)^2)^2)^2)^2 \]. +Как видно, для возведения числа в 33-ю степень достаточно 7 умножений. + +\subsection{Обратная задача} + +Пусть нам известны числа $x,\ z,\ p$, каждое по $n$ цифр. Можно ли за полиномиальное время найти число $y$ такое, что $x^y = z \pmod{p}$. + +Сказать сложно --- с одной стороны, такой алгоритм ещё не смогли придумать. С другой стороны, не могут доказать того, что его нет. Это всё, вообще говоря, висит на известной проблеме $\mathrm{P} \mathrel{\overset{?}{=}} \mathrm{NP}$ и подробнее мы об этом поговорим ближе к концу курса. + +\subsection{Обработка текста} +Предположим, у нас есть $n$ слов, и эти слова мы хотим разместить на странице (порядок, разумеется, не меняя --- это же, в конце концов, текст). При этом, шрифт моноширинный, а ширина строки ограничена. Что мы хотим --- разместить текст так, чтобы он был выровнен по обоим краям. При этом хотелось бы, чтобы пробелы были примерно одинаковы по ширине. + +Введём такую ??? (меру? хз): $\varepsilon(i, j) = L-\sum\limits_{t=i}^j|w_t|-(j-i)$ --- число дополнительных пробелов в строке с $i$-го по $j$-ое слово. + +Также введём $c(i, j)$ --- стоимость размещения. + +\[ + c(i, j) = \begin{cases} + +\infty, \varepsilon(i, j) < 0\\ + \left( \frac{\varepsilon(i, j)}{j-i} \right)^3, \varepsilon(i, j) \geqslant 0\\ + \end{cases} +\] + +И как это решать? Можно попробовать жадным алгоритмом --- просто ``впихивать'' слова в строку, пока влезают. Он тут не работает, так как он вообще не учитывает стоимость. + +Попробуем наш извечный ``разделяй и властвуй''. Базовый случай --- слова помещаются в одну строку, а если не помещаются --- переносим и повторяем. Но тут тоже не учитывается стоимость, так что вряд ли будет сильно лучше. + +Вход: $w_1, \ldots, w_n; c(i, j)$. + +Выход: $j_0, \ldots, j_{l+1}$, такие что $j_0 = 1,\ j_{l+1} = n,\ \sum c(j_i, j_{i+1})$ минимальна. + +Сколько всего таких наборов? Мест, где в принципе может оказаться разрып строки --- $n-1$, в каждом можно поставить или не поставить --- итого $2^{n-1}$ разбиений. + +Пусть $OPT(j)$ --- стоимость оптимального размещения слов с $j$-ого по $n$-ное. Наша задача --- вычислить $OPT(1)$. А как? + +\[ + OPT(1) = \min\limits_{i\leqslant n}\{c(1, i)+OPT(i+1)\} +\] + +\begin{lstlisting} +OPT(j): + if j = n+1 then return 0 + f:= +inf + for i:= j to n do + f:= min(f, c(i, j)+OPT(i+1)) +\end{lstlisting} + +$(*)\ \mathrm{OPT}(3) =\begin{cases} + 0, & j>n\\ + \min\limits_{i = j\ldots n}\left\{ c(j, i) + \mathrm{OPT}(3)(i+1) \right\}, & \text{иначе} +\end{cases}$ + +А сложность? Построив дерево, заметим, что $\mathrm{OPT}(3)$ вычисляется два раза; $\mathrm{OPT}(4)$ -- три раза и так далее. + +Будем сохранять результаты: + +\begin{algorithmic} + \Function{OPT\_cache}{$t$} + \If{\(M[j] \neq \textrm{NULL}\)} + \Else + \State \(M[j] \mathrel{:=} \textsc{OPT}(j)\) + \EndIf + \State return \(M[j]\) + \EndFunction +\end{algorithmic} + +Такая методика называется \emph{динамическим программированием}. + +Основная идея --- каждая задача зависит от полиномиального числа других задач. +\newpage +\section{Динамическое программирование. Задача о планировании взвешенных интервалов: рекурсивное решение с мемоизацией и итеративное решение. Свойства задач, эффективно решаемых при помощи динамического программирования: наличие полиномиального числа подзадач, выразимость исходной задачи в терминах подзадач, сводимость больших подзадач к полиномиальному числу меньших подзадач. Выравнивание абзаца по ширине: итеративное решение.} + +\subsection{Продажа земли} + +Предположим, что у нас есть участок земли у берега и мы хотим его продать. +При этом у нас есть несколько покупателей и каждый из них готов отдать некоторую сумму за некоторый фрагмент участка. +Как максимизировать выгоду? + +Формализуем: у нас есть $n$ предложений и каждое характеризуется тремя числами — началом $s$, концом $f$ и весом $w$. +Таким образом, вход выглядит так: + +$s_1, \ldots, s_n$ --- начала + +$f_1, \ldots, f_n$ --- концы + +$w_1, \ldots, w_n$ --- веса\\ + +Пример: + +\includegraphics[width=5cm]{09_intervals.png}\\ + +На выходе мы хотим получить максимальную сумму весов непересекающихся интервалов: + +\[ +\max\limits_{T\subseteq \left\{ 1,\ldots, n \right\}} \sum\limits_{i\in T}w_i +\] +\[ +T: \forall i 0\)} + \If{\(OPT[i - 1] > w_i + OPT[p(i)]\)} + \State \(i = i - 1\) + \Else + \State \(T = T \cup {i}\) + \State \(i = p(i)\) + \EndIf + \EndWhile + \State return \(p(i)\) + \EndFunction + \end{algorithmic} +\end{algorithm} + +\subsection{В общем о динамическом программировании} +Чем оно отличается от ``Разделяй и властвуй''? А тем, что задачи могут пересекаться. Ведь при использовании классического ``разделяй и властвуй'' мы бы получили экспоненциальное решение. + +Для эффективного использования этого принципа необходимы следующие условия: +\begin{itemize} + \item Небольшое число задач; например, полиномиальное; + \item Возможность их упорядочить и выразить решения следующих через предыдущие. +\end{itemize} + +\subsection{Задача с прошлой лекции --- выравнивание текста} + +Дано:\\ +$w_1,\ldots, w_n$ --- длины слов. + +$c(i, j)$ --- штраф за размещение $w_i,\ldots, w_j$ на одной строке.\\ + +Преобразуем наше рекурсивное решение в итеративное. + +OPT$(i)$ --- оптимальное размещение $w_i, \ldots, w_n$. + +OPT(i) = $\min\limits_{i\leqslant j\leqslant n} \left\{ c(i, j)+ \mathrm{OPT}(j+1) \right)\}$.\\ + +Запишем итеративный алгоритм для этой формулы. +Так как $i$-ая задача зависит от задач с большим индексом, будем заполнять массив с конца. + +\begin{algorithm} + \caption{Выравнивание текста} + \begin{algorithmic} + \Function{ComputeOpt}{$w_1, \ldots, w_n$} + \State \(best = [0] \times n\) + \State \(OPT = [+\infty] \times (n + 1)\) + \State $OPT[n + 1] = 0$ + \For{\(i \mathrel{:=} n\) \textbf{downto} 1} + \For{\(j \mathrel{:=} i\) \textbf{to} n} + \If{\(c(i, j) + OPT[j + 1] \leqslant OPT[i]\)} + \State \(OPT[i] = c(i, j) + OPT[j + 1]\) + \State \(best[i] = j\) + \EndIf + \EndFor + \EndFor + \State return $OPT[i]$ + \EndFunction + \end{algorithmic} +\end{algorithm} + +Как видно, в данном алгоритме решение строится по ходу, потому что в данном случае это допустимо. + +\newpage +\section{Вычисление редакционного расстояния и выравнивание последовательностей.} + +\emph{Редакционное расстояние} $d(s, t)$ между двумя строками $s$ и $t$ --- минимальное число вставок, удалений и замен символов, позволяющих преобразовать $s$ в $t$. Расстояние между двумя строками можно задать при помощи \emph{выравнивания}. Например: + +\begin{center} +\begin{tabular}{ccccccccccccccc} + и&с&к&у&с&с&т&в&&&е&н&н&ы&й\\ + и&н&&&&&т&е&л&л&е&к&т +\end{tabular} +\end{center} + +Если $|s| = |t| = n$, то число возможных выравниваний не меньше $2^n$. Действительно, выравнивание можно задать подмножеством символов строки $s$, подлежащих замене, и подмножеством символов строки $t$, используемых при замене. Очевидно, что число возможных выравниваний равно \[\sum_{j=0}^n \binom{n}{j}^2.\] +Выравнивание можно задать и иначе, указав $k$ символов строки $s$, подлежащих замене, и $n - k$ символов строки $t$, которые должны быть вставлены. Тогда получим, что число выравниваний равно\[\binom{2n}{n}.\] + +Решить задачу нахождения оптимального выравнивания можно, разбив строку $s$ на две подстроки $s_1$ и $s_2$, вычислив разбиение строки $t$ на подстроки $t_1$ и $t_2$, соответствующее оптимальному выравниванию, и решив задачу выравнивания для $s_1$ и $t_1$ и отдельно для $s_2$ и $t_2$. + +Есть три возможности для выравнивания первых символов $s$ и $t$: +\begin{enumerate} + \item $s_1 = s[0], s_2 = s[1:], t_1 = \epsilon, t_2 = t$, + \item $s_1 = \epsilon, s_2 = s, t_1 = t[0], t_2 = t[1:]$, + \item $s_1 = s[0], s_2 = s[1:], t_1 = t[0], t_2 = t[1:]$, +\end{enumerate} +где $\epsilon$ --- пустая строка. +Эти три выравнивания задают следующие расстояния между $s$ и $t$: +\begin{enumerate} + \item $d(s[1:], t) + 1$, + \item $d(s, t[1:]) + 1$, + \item $d(s[1:], t[1:]) + (s[0] \neq t[0])$, +\end{enumerate} +где значением $(s[0] \neq t[0])$ является 1, если $s[0] \neq t[0]$, и 0 в противном случае. Тогда +\[d(s, t) = \min\{d(s[1:], t) + 1, d(s, t[1:]) + 1, d(s[1:], t[1:]) + (s[0] \neq t[0])\}.\] + +Приведенная формула дает простой рекурсивный алгоритм, вычисляющий $d(s, t)$, но чтобы гарантировать полиномиальное время работы, необходимо запоминать решения подзадач, возникающих на различных уровнях рекурсии. Если $|s| = |t| = n$, число таких подзадач равно $O(n^2)$: строка длины $n$ может быть разбита на две подстроки $n + 1$ способом. + +\newpage +\section{Графы: обход в глубину и в ширину, поиск компонент связности в неориентированных графах.} + +\subsection{Поиск в ширину.} + +Пусть задан граф $G = (V,\ E)$ и выделена \textbf{исходная вершина} $s$. Алгоритм поиска в ширину систематически обходит все рёбра $G$ для открытия всех вершин, достижимых из $s$, вычисляя при этом расстояние (минимальное количество рёбер) от $s$ до каждой достижимой из $s$ вершины. + +Поиск в ширину имеет такое название потому, что в процессе обхода мы идём вширь, то есть, перед тем, как приступить к поиску вершин на расстоянии $k + 1$, выполняется обход всех вершин на расстоянии $k$. + +На вход алгоритма подаётся заданный граф (невзвешенный), и номер стартовой вершины $s$. Граф может быть как ориентированным, так и неориентированным, для алгоритма это не важно. + +Сам алгоритм можно понимать как процесс "открывания" графа: на нулевом шаге открываем только вершину $s$. На каждом следующем шаге открываем всех соседей открытой вершины соседей; т.е. за одну итерацию алгоритма происходит расширение "кольца открытий" в ширину на единицу. + +Более строго это можно представить следующим образом. Создадим очередь $q$, в которую будут помещаться горящие вершины, а также заведём булевский массив $discovered[]$, в котором для каждой вершины будем отмечать, горит она уже или нет (или иными словами, была ли она посещена). + +Изначально в очередь помещается только вершина $s$, и $discovered[s] = true$, а для всех остальных вершин $discovered[] = false$. Затем алгоритм представляет собой цикл: пока очередь не пуста, достать из её головы одну вершину, просмотреть все рёбра, исходящие из этой вершины, и если какие-то из просмотренных вершин ещё не горят, то поджечь их и поместить в конец очереди. + +В итоге, когда очередь опустеет, обход в ширину обойдёт все достижимые из $s$ вершины, причём до каждой дойдёт кратчайшим путём. Также можно посчитать длины кратчайших путей (для чего просто надо завести массив длин путей $distance[]$), и компактно сохранить информацию, достаточную для восстановления всех этих кратчайших путей (для этого надо завести массив "предков" $parent[]$, в котором для каждой вершины хранить номер вершины, по которой мы попали в эту вершину). + +Псевдокод: + +\begin{algorithm} + \caption{\algname{BFS}($(V, E), s$)} + \begin{algorithmic} + \Require Граф $(V, E)$ и вершина $s \in V$. + \Ensure Массив $distance$, где $distance[i]$ содержит расстояние от $s$ до $i$, и массив $parent$, в котором для каждой вершины хранить номер вершины, по которой мы попали в эту вершину. + \For {$v \in V$} + \State $discovered[v] := \textbf{False}$ + \State $distance[v] = \infty$ + \State $parent[v] = -1$ + \EndFor + \State $discovered[s] := \textbf{True}$ + \State $distance[s] = 0$ + \State $Q := [s]$ + \While{$Q\ \textbf{is not empty}$} + \State $u = extract(Q)$ + \State $discovered[u] = true$ + \For{$v\ :\ (u,\ v) \in E$} + \If{$\textbf{not}\ discovered[v]$} + \State $discovered[v] = true$ + \State $enqueue(v,\ Q)$ + \State $distance[v] = distance[u] + 1$ + \State $parent[v] = u$ + \EndIf + \EndFor + \EndWhile + \State + \Return $distance,\ parent$ + \end{algorithmic} +\end{algorithm} + +\paragraph{Корректность} + +\begin{theorem} + Выполнено следующее: + \begin{enumerate} + \item В очереди поиска в ширину расстояние вершин до s монотонно неубывает. + \item Алгоритм поиска в ширину в невзвешенном графе находит длины кратчайших путей до всех достижимых вершин. + \end{enumerate} +\end{theorem} +\begin{proof} +\begin{enumerate} + \item Докажем это утверждение индукцией по числу выполненных алгоритмом шагов. + \begin{itemize} + \item База: изначально очередь содержит только одну вершину $s$ с расстоянием 0, утверждение верно. + \item Переход: пусть после $l$-ого шага алгоритма очередь содержит $p$ вершин с расстоянием $k$ и $q$ вершин с расстоянием $k + 1$. Тогда на $l+1$-ом шаге мы извлечем из очереди одну вершину и добавим в нее все непосещенные($r$ вершин), связанные с ней; расстояние до них, очевидно, будет равно $k + 1$. У нас останется $p - 1$ (возможно, 0) вершин с расстоянием $k$ и $q + r$ вершин с расстоянием $k + 1$, что соответствует нашему инварианту. + \end{itemize} + \item Допустим, что второе утверждение не выполнено. Выберем из вершин, для которых кратчайшие пути от $s$ найдены некорректно, ту, настоящее расстояние до которой минимально. Пусть это вершина $u$, и она имеет своим предком в дереве обхода в ширину $v$, а предок в кратчайшем пути до $u$ — вершина $w$. + + Так как $w$ — предок $u$ в кратчайшем пути, то $\rho(s,\ u) = \rho(s,\ w) + 1 > \rho(s,\ w)$, и расстояние до $w$ найдено верно, $\rho(s,\ w) = distance[w]$. Значит, $\rho(s,\ u) = distance[w] + 1$. + + Так как $v$ — предок $u$ в дереве обхода в ширину, то $distance[u] = distance[v] + 1$. + + Расстояние до $u$ найдено некорректно, поэтому $\rho(s,\ u) < distance[u]$. Подставляя сюда два последних равенства, получаем $distance[w] + 1 < distance[v] + 1$, то есть, $distance[w] < distance[v]$. Из ранее доказанной леммы следует, что в этом случае вершина $w$ попала в очередь и была обработана раньше, чем $v$. Но она соединена с $u$, значит, $v$ не может быть предком $u$ в дереве обхода в ширину, мы пришли к противоречию, следовательно, найденные расстояния до всех вершин являются кратчайшими. +\end{enumerate} +\end{proof} +\paragraph{Применение} +\begin{itemize} + \item Поиск кратчайшего пути в невзвешенном графе. + \item Поиск компонент связности в графе за $O(n+m)$. Для этого мы просто запускаем обход в ширину от каждой вершины, за исключением вершин, оставшихся посещёнными ($discovered=true$) после предыдущих запусков. Таким образом, мы выполняем обычный запуск в ширину от каждой вершины, но не обнуляем каждый раз массив $discovered[]$, за счёт чего мы каждый раз будем обходить новую компоненту связности, а суммарное время работы алгоритма составит по-прежнему $O(n+m)$ (такие несколько запусков обхода на графе без обнуления массива $used$ называются серией обходов в ширину). + \item Нахождения решения какой-либо задачи (игры) с наименьшим числом ходов, если каждое состояние системы можно представить вершиной графа, а переходы из одного состояния в другое — рёбрами графа. Классический пример — игра, где робот двигается по полю, при этом он может передвигать ящики, находящиеся на этом же поле, и требуется за наименьшее число ходов передвинуть ящики в требуемые позиции. Решается это обходом в ширину по графу, где состоянием (вершиной) является набор координат: координаты робота, и координаты всех коробок. + \item Нахождение кратчайшего пути в 0-1-графе (т.е. графе взвешенном, но с весами равными только 0 либо 1): достаточно немного модифицировать поиск в ширину: если текущее ребро нулевого веса, и происходит улучшение расстояния до какой-то вершины, то эту вершину добавляем не в конец, а в начало очереди. + \item Нахождение кратчайшего цикла в ориентированном невзвешенном графе: производим поиск в ширину из каждой вершины; как только в процессе обхода мы пытаемся пойти из текущей вершины по какому-то ребру в уже посещённую вершину, то это означает, что мы нашли кратчайший цикл, и останавливаем обход в ширину; среди всех таких найденных циклов (по одному от каждого запуска обхода) выбираем кратчайший. + \item Найти все рёбра, лежащие на каком-либо кратчайшем пути между заданной парой вершин $(a,\ b)$. Для этого надо запустить 2 поиска в ширину: из $a$, и из $b$. Обозначим через $distance_a[]$ массив кратчайших расстояний, полученный в результате первого обхода, а через $distance_b[]$ — в результате второго обхода. Теперь для любого ребра $(u,\ v)$ легко проверить, лежит ли он на каком-либо кратчайшем пути: критерием будет условие $distance_a[u] + 1 + distance_b[v] = distance_a[b]$. +\end{itemize} + +\subsection{Поиск в глубину} + +Стратегия поиска в глубину заключается в том, чтобы идти вглубь графа насколько это возможно. При выполнении поиска в глубину он исследует все рёбра, выходящие из вершины, открытой последней, и покидает вершину, только когда не остаётся неисследованных рёбер -- происходит откат в вершину, из которой была окрыта данная вершина $v$. Этот процесс продолжается до тех пор, пока не будут открыты все вершины, достижимые из исходной. Если при этом остаются неоткрытые вершшины, то одна из них выбирается в качестве новой исходной и поиск повторяется уже из неё. Этот процесс повторяется до тех пор, пока не будут окрыты все вершины. + +Псевдокод: + +\begin{algorithm} + \caption{\algname{DFS}($(V, E),\ now,\ discovered[]$)} + \label{algo:dfs} + \begin{algorithmic} + \Require Граф $(V, E)$ и вершина $now \in V$. + \Ensure Алгоритм может возвращать всё, что нужно -- высоту поддерева, длину пути, количество потомков в поддереве и т.п. + \State + \State $discovered[now] = \textbf{True}$ + \For{$(now,\ v) \in E}$\Comment{идём по всем соседям вершины} + \If{\textbf{not}\ $discovered[v]$} + \State DFS($(V,\ E),\ v,\ discovered$) + \State \Comment{Далее можно делать дополнительные махинации} + \EndIf + \EndFor + \State + \Return \Comment{Что необходимо.} + \end{algorithmic} +\end{algorithm} + +\paragraph{Корректность} + +Поиск в глубину попросту обходит все вершины графа. Он не может зайти в уже посещённые вершины ($discovered$), значит, обойдёт каждую вершину конкретной компоненты ровно 1 раз. Алгоритм будет когда-то завершён, так как все вершины будут посещены, и в худшем случае потребуется $O(|V|)$ запусков $DFS$. + +\paragraph{Применение} + +\begin{itemize} + \item Поиск любого пути в графе. + \item Поиск лексикографически первого пути в графе. + \item Проверка, является ли одна вершина дерева предком другой: + В начале и конце итерации поиска в глубину будет запоминать "время" захода и выхода в каждой вершине. Теперь за $O(1)$ можно найти ответ: вершина $i$ является предком вершины $j$ тогда и только тогда, когда $start_i < start_j$ и $end_i > end_j$. + \item Задача LCA (наименьший общий предок). + \item Топологическая сортировка: + Запускаем серию поисков в глубину, чтобы обойти все вершины графа. Отсортируем вершины по времени выхода по убыванию - это и будет ответом. + \item Проверка графа на ацикличность и нахождение цикла + \item Поиск компонент сильной связности: + Сначала делаем топологическую сортировку, потом транспонируем граф и проводим снова серию поисков в глубину в порядке, определяемом топологической сортировкой. Каждое дерево поиска - сильносвязная компонента. + \item Поиск мостов: + Сначала превращаем граф в ориентированный, делая серию поисков в глубину, и ориентируя каждое ребро так, как мы пытались по нему пройти. Затем находим сильносвязные компоненты. Мостами являются те рёбра, концы которых принадлежат разным сильносвязным компонентам. +\end{itemize} + +\subsection{Компоненты связности} + +Для поиска компонент связности, вообще говоря, можно использовать любой алгоритм обхода графа: +\newpage +\section{Оценка сложности алгоритмов поиска в ширину и в глубину.} + +\subsection{Сложность поиска в ширину} +Вариант обхода графа в ширину из вершины $s$ приведен ниже. + +\begin{algorithm} + \caption{\algname{BFS}($(V, E), s$)} + \begin{algorithmic} + \Require Граф $(V, E)$ и вершина $s \in V$. + \Ensure Массив $distance$, где $distance[i]$ содержит расстояние от $s$ до $i$, и массив $parent$, в котором для каждой вершины хранить номер вершины, по которой мы попали в эту вершину. + \For {$v \in V$} + \State $discovered[v] := \textbf{False}$ + \State $distance[v] = \infty$ + \State $parent[v] = -1$ + \EndFor + \State $discovered[s] := \textbf{True}$ + \State $distance[s] = 0$ + \State $Q := [s]$ + \While{$Q\ \textbf{is not empty}$} + \State $u = extract(Q)$ + \State $discovered[u] = true$ + \For{$v\ :\ (u,\ v) \in E$} + \If{$\textbf{not}\ discovered[v]$} + \State $discovered[v] = true$ + \State $enqueue(v,\ Q)$ + \State $distance[v] = distance[u] + 1$ + \State $parent[v] = u$ + \EndIf + \EndFor + \EndWhile + \State + \Return $distance,\ parent$ + \end{algorithmic} +\end{algorithm} + +Если граф представлен в виде матрицы смежности, обход в ширину занимает время $\Theta(n^2)$, так как на перебор соседей одной вершины уходит время $\Theta(n)$. Однако при использовании списков смежности на обход соседей вершины $u$ требуется время $\Theta(deg(u))$, а на обход соседей всех вершин --- время $\Theta(m)$. В этом случае общее время работы алгоритма --- $\Theta(m + n)$. + + +Вызывая \algname{BFS}($(V, E), s$), мы обходим только вершины, достижимые из $s$. Обойти весь граф можно, последовательно вызывая алгоритм для всех еще не <<обнаруженных>> вершин графа, при каждом следующем запуске используя предыдущий массив $discovered$. Время обхода всего графа при использовании списков смежности --- $\Theta(m + n)$. + +При практической реализации этого алгоритма вместо множеств $L[i]$ лучше использовать очередь для хранения уже обнаруженных вершин, соседи которых еще не просмотрены. + +\subsection{Сложность поиска в глубину} +Вариант обхода графа в глубину из вершины $s$ (в цикле -- $now$) приведен ниже. Время работы цикла равно числу итераций в циклах $\textbf{for}$. Поскольку каждая вершина будет рассмотрена не более чем один раз -- $O(|V|)$, но при этом граф проверит все инцидентные рёбра для каждой из попавших в $\textbf{for}$ непосещённых вершин -- $O(|E|)$. Тогда сложность поиска в глубину --- $O(|V| + |E|)$. + +\begin{algorithm} + \caption{\algname{DFS}($(V, E),\ now,\ discovered[]$)} + \label{algo:dfs} + \begin{algorithmic} + \Require Граф $(V, E)$ и вершина $now \in V$. + \Ensure Алгоритм может возвращать всё, что нужно -- высоту поддерева, длину пути, количество потомков в поддереве и т.п. + \State + \State $discovered[now] = \textbf{True}$ + \For{$(now,\ v) \in E}$\Comment{идём по всем соседям вершины} + \If{\textbf{not}\ $discovered[v]$} + \State DFS($(V,\ E),\ v,\ discovered$) + \State \Comment{Далее можно делать дополнительные махинации} + \EndIf + \EndFor + \State + \Return \Comment{Что необходимо.} + \end{algorithmic} +\end{algorithm} + +\newpage +\section{Способы представления графов: матрица смежности и списки смежности.} + +\subsection{Матрица смежности} + +Представление графа $G = (V,\ E)$ с помощью \textbf{матрицы смежности} предполагает, что вершины занумерованы в некотором порядке числами $1,\ 2,\ldots,\ |V|$. В таком случае представление графа с использованием матрицы представляет собой матрицу $A = (a_{ij})$ размера $|V| \times |V|$, такую, что +\[a_{ij} = \begin{cases}1,\ (i,\ j) \in E \\ 0,\ (i,\ j)\notin E\end{cases}\] +Если в графе разрешены кратные ребра, то значение $a_{ij}$ равно количеству ребер из $i$ в $j$. + +Матрицы смежности легко адаптировать для \textbf{взвешенных графов} -- графов, с каждым ребром которого связан определённый \textbf{вес}, определяемый весовой функцией $w : E \to \R$. + +Пусть $G = (V,\ E)$ -- взвешенный граф с весовой функцией $w$. Тогда будем хранить вес $w(u,\ v)$ каждого ребра $(u,\ v)\in E$ в строке $u$ и столбце $v$ матрицы смежности. + +В графе с весами на ребрах значение $a_{ij}$ равно весу ребра из $i$ в $j$. Если граф неориентированный, его матрица смежности симметрична. Если в графе нет петель, на диагонали стоят нули. + +Матрица смежности всегда занимает $\Theta(|V|^2)$ памяти. + +\subsection{Списки смежности} + +Имеется граф $G = (V,\ E)$. Представление графа в виде \textbf{списка смежности} использует массив $Adj$ из $|V|$ списков, по одному для каждой вершины графа. Для каждой вершины $u \in V$ список $Adj[u]$ содержит все вершины $v$ такие, что $(u,\ v) \in E$, то есть, $Adj[u]$ состоит из всех смежных с $u$ вершин (можно хранить как сами номера вершин, так и указатели на них). Вершины хранятся в произвольном порядке. + +Если граф ориантированный, то сумма длин всех списков смежности равна $|E|$, поскольку ребру $(u,\ v)$ однозначно соответствует элемент $v$ в списке $Adj[u]$. Если $G$ -- неориентированный граф, то сумма длин всех списков смежности равна $2|E|$, поскольку ребро $(u,\ v)$, будучи неориентированным, появляется в списке $Adj[u]$ как $v$ и в списке $Adj[v]$ как $u$. Однако, как для ориентированных, так и для неориентирванных, представляение в виде списков смежности требует объём памяти, равный $\Theta(V + E)$. + +Списки смежности легко адаптировать для \textbf{взвешенных графов} -- графов, с каждым ребром которого связан определённый \textbf{вес}, определяемый весовой функцией $w : E \to \R$. + +Пусть $G = (V,\ E)$ -- взвешенный граф с весовой функцией $w$. Тогда будем хранить вес $w(u,\ v)$ каждого ребра $(u,\ v)\in E$ вместе с вершиной $v$ в списке смежности $Adj[u]$. + +Недостаток данного метода хранения графов заключается в том, что приходится долго определять, есть ли ребро $(u,\ v)$ в графе -- приходится пробегаться по массиву $Adj[u]$. Данная проблема, однако, решается путём составления матрицы смежности. + +\subsection{Асимптотика} + +Проверку на то, существует ли ребро из вершины $i$ в вершину $j$, в матрице смежности можно осуществить за $O(1)$, а в списках смежности --- за $O(deg(i))$, где $deg(i)$ --- степень вершины $i$. + +Граф называют \emph{плотным}, если $|E| = \Theta(|V^2|)$, и \emph{разреженным}, если $|E| = \Theta(|V|)$. Возможны промежуточные варианты. + +С другой стороны, перебор соседей вершины $i$ в матрице смежности требует время $\Theta(|V|)$, а в списках смежности --- $\Theta(deg(i))$, что обычно существенно меньше $\Theta(|V|)$ в случае разреженного графа. + +\newpage +\section{Топологическая сортировка за линейное время: алгоритмы, основанные на удалении вершин без входящих ребер и на поиске в глубину. } + +\textbf{Топологическая сортировка} ориентированного ациклического графа $G = (V,\ E)$ представляет собой такое линейное упорядочение всех его вершин, что если граф $G$ содержит ребро $(u,\ v)$, то $u$ при таком упорядочении располагается до $v$ (в случае цикла такая сортировка невозможна). + +Псевдокод: + +\begin{algorithm} + \caption{\algname{Topsort}($(V, E)$)} + \begin{algorithmic} + \Require Граф $(V, E)$ . + \Ensure Связный список вершин $sorted[]$, в котором содержатся топологически отсортированные вершины графа. + \State + \State $sorted = []$ + \State $discovered = [\textbf{False}]$ + \For{$u \in V$} + \Function{DFS}{$G,\ u,\ discovered$} + \State $discovered[u] = \textbf{True}$ + \For{$(u,\ v) \in E}$\Comment{идём по всем соседям вершины} + \If{\textbf{not}\ $discovered[v]$} + \State DFS($(V,\ E),\ v,\ discovered$) + \EndIf + \EndFor + \State помещаем $u$ в начало списка $sorted[]$ + \EndFunction + \EndFor + \State + \Return $sorted$ + \end{algorithmic} +\end{algorithm} + +Заметим, что топологическая сортировка выполняется за время $O(V + E)$, так как $DFS$ занимает именно это время, а вставка каждой вершины в $sorted$ занимает лишь константное время. + +\paragraph{Корректность} + +\begin{fulllemma} +Ориентированный граф $G$ является ациклическим тогда и только тогда, когда поиск в глубину в $G$ не находит в нём обратных рёбер. +\end{fulllemma} +\begin{proof} +\begin{itemize} + \item $\Longrightarrow$ + + Предположим, что есть обратное ребро $(u,\ v)$. Тогда вершина $v$ является "предком" $u$ по обходу в глубину. Но тогда в графе $G$ имеется путь от $v$ к $u$, и обратное ребро $(u,\ v)$ завершает цикл. + + \item $\Longleftarrow$ + + Пусть имеется цикл $c$. Покажем, что $DFS$ найдёт обратное ребро. Пусть $v$ -- первая вершина, открытая в $c$, и пусть $(u,\ v)$ -- предыдущее ребро в $c$. Тогда, когда, в момент открытия $v$, вершины $c$ образуют путь из ещё не открытых вершин от $v$ к $u$. Но тогда $u$ станет "потомком" $v$ по обходу в глубину. Значит, $(u,\ v)$ -- обратное ребро. +\end{itemize} +\end{proof} +\begin{theorem} + Алгоритм $Topsort$ выполняет топологическую сортировку переданного ей ориентированного ациклического графа. +\end{theorem} +\begin{proof} + Предположим, что над данным ориентированным ациклическим графом $G = (V,\ E)$ выполняется процедура $DFS$, которая по мере выхода помещает вершину в начало $sorted$. Достаточно показать, что если для произвольной пары вершин $u,\ v \in V$ имеется ребро $(u,\ v)$, то вершина $v$ будет помещена в $sorted$ раньше, чем $u$. + + Рассмотрим произвольное ребро $(u,\ v)$, исследуемое $DFS$. Для непосещённой вершины $v$ вершина $u$ не может являться "потомком" (то есть, при рассмотрении $v$ в $DFS$ мы не наткнёмся на ребро $(v,\ u)$) -- противоречие лемме выше -- значит, $v$ либо уже была посещена, либо она не посещена, но не имеет $u$ своим потомком. В первом случае $v$ уже помещено в $sorted$, во втором случае $v$ становится потомком $u$ и помешается в $sorted$. Так как в это время мы работаем с вершиной $u$, она ещё не будет помещена в $sorted$. Но тогда она поместится в $sorted$ только после того, как туда попадёт $v$, в любом случае. +\end{proof} + +\newpage +\section{Вычисление компонент сильной связности. Алгоритм проверки сильной связности ориентированного графа.} + +Проверка сильной связности в ориентированном графе. Очевидно, это сложнее, потому что, если мы рассмотрим граф из двух вершин и одного ребра, то из одной DFS до другой доберётся, а в обратную сторону --- уже нет. + +\begin{lstlisting} +DFS(G, s, 1) +if exists u in V: u is not marked then + return false +return DFS(Grev, s, 2) +\end{lstlisting} + +Если $G = (V, E)$, то $G^{rev} = (V, E^{rev})$ + +Вот как мы определяем $DFS$, кстати: + +\begin{lstlisting} +DFS(G, s, i) + mark s with i + for (s, v) in E do + if v is not marked + DFS(G, v, i) + t := t+1 + f[s] = t +\end{lstlisting} + +Поиск компонент сильной связности: + +\begin{lstlisting} +Explore(Grev) +unmark all +Explore(G) // for v in V v poryadke ubyvuaniya f[v] +\end{lstlisting} + +Пусть $C_1$ и $C_2$ --- две компоненты сильной связности; $i\in C_1,\ j\in C_2,\ (i,j)\in E$. Тогда $\max\limits_{u\in C_1} f[u] < \max\limits_{v\in C_2} f[v]$ + +Каждый вызов DFS внутри Explore(G) обходит некоторую компоненту сильной связности. + +S --- множество вершин, обойдённых в Explore(G). + +Базис: $S = \varnothing$. +Шаг: Пусть $S = C_1 \cup\ldots\cup C_k$, где $C_i$ --- компоненты сильной связности. + +Пусть $C_v$ --- к.с.с., содержащая $v$ и $S_v$ --- множество вершин, обойдённых в DFS(G, v, i). Тогда $C_v \subseteq S_v$; $u\not\in C_v \implies \forall w \in C_u: f[v] < f[w]$. +\newpage +\section{Оценка сложности алгоритма поиска компонент связности в неориентированных графах. Поиск путей возведением в степень матрицы смежности графа} + +\subsection{Поиск компонент связности в неориентированном графе} +(третий аргумент DFS --- то, чем помечаются вершины) +\begin{lstlisting} +i := 1 +for v in V do + if v is not marked then + DFS(G, v, i) + i := i + 1 +\end{lstlisting} + +Сколько времени, если в графе $m$ вершин и $n$ рёбер? $O(m_n)$. Почему? Потому что в DFS мы проходим по каждому ребру в компоненте связности не более двух раз. + +А для ориентированного графа? + + + +\subsection{Матрицы смежности} +Пусть $A$ --- матрица смежности $G$; тогда $(A^t)_{ij}$ --- число путей из $i$ в $j$ длины $t$. + +Существует ли путь из $i$ в $j$? Возведём $E+A$ в степень $n-1$ и проверим, что $ij$-ый элемент больше нуля. Используя быстрое возведение в степень можно обойтись $\lceil\log_2n\rceil$ перемножениями матриц. + +\begin{lstlisting} +B := E + A +for x := 1 to log2 n do + b_ij := \Lor (b_ik\land b_kj) +\end{lstlisting} + +\newpage +\section{Алгоритм Флойда – Уоршелла: формулировка в терминах динамического программирования, оценка сложности, оптимизация по памяти, обнаружение циклов с отрицательным весом, восстановление кратчайших путей. Алгоритм Беллмана – Форда для графов без циклов с отрицательным весом.} + +\subsection{Кратчайшие пути} +\begin{description} + \item[Дано:] ориентированный граф $G = (V, E)$, где $V = \{1, \dots, n\}$, с весами $w_{ij}\in\mathbb R$, $(i, j) \in E$, и две вершины $s, t \in V$. + \item[Найти:] кратчайший путь из $s$ в $t$ в графе $G$, т.е. путь $s = i_0, i_1, \ldots, i_k = t$ с минимальной стоимостью (суммой весов на ребрах): + \[w_{i_0i_1} + w_{i_1i_2} + \dots + w_{i_{k-1}i_k},\] + если путь из $s$ в $t$ существует. +\end{description} + +Предполагаем, что в графе нет циклов с отрицательной стоимостью. + +Длину кратчайшего пути из $s$ в $t$ будем называть \emph{расстоянием} от $s$ до $t$, и будем считать расстояние от $s$ до $t$ равным $+\infty$, если пути из $s$ в $t$ не существует. + +Сформулируем два свойства кратчайших путей: +\begin{enumerate} + \item Фрагмент $i_j, i_{j+1}, \dots, i_{j+\ell}$ кратчайшего пути $s = i_0, i_1, \ldots, i_k = t$ из $s$ в $t$ является кратчайшим путем из $i_j$ в $i_{j+\ell}$. + \item Если в графе нет циклов с отрицательной стоимостью, то любой кратчайший путь содержит не более $n$ вершин и не более $n - 1$ ребер. +\end{enumerate} + + +\subsection{Алгоритм Флойда -- Уоршелла} +Обозначим за $FW(i, j, k)$ минимальную стоимость пути из $i$ и $j$ с использованием промежуточных вершин из $V_k = \{v_1, \ldots, v_k\}$. Тогда +\[FW(i, j, 0) = + \begin{cases} + 0, & \text{если }i = j;\\ + w_{ij}, & \text{если }i \neq j\text{ и }(i, j) \in E;\\ + +\infty, & \text{если }i \neq j\text{ и }(i, j) \not\in E;\\ + \end{cases} +\] +и для $k > 0$: +\[FW(i, j, k) = \min\{FW(i, j, k-1), \quad FW(i, k, k-1) + FW(k, j, k - 1)\}.\] + +Алгоритм \ref{algo:fw} Флойда -- Уоршелла, основанный на этом рекуррентном соотношении, вычисляет расстояния между всеми парами вершин в заданном графе за время $O(n^3)$. + +\begin{algorithm} + \caption{\algname{Floyd--Warshall}($(V, E), w_{ij}$)} + \label{algo:fw} + \begin{algorithmic}%[1] + \Require Граф $(V, E)$, $V = \{1, \dots, n\}$ и веса $w_{ij} \in \mathbb{R}$ ребер $(i, j) \in E$. В графе нет циклов с отрицательной стоимостью. + \Ensure Матрица $B$, где $B[i, j]$ --- расстояние от $i$ до $j$ в графе $(V, E)$. + \State + \For{$i := 1$ \textbf{to} $n$} + \For{$j := 1$ \textbf{to} $n$} + \If{$i = j$} + \State $B[i, j, 0] := 0$ + \ElsIf{$(i, j) \in E$} + \State $B[i, j, 0] := w_{ij}$ + \Else + \State $B[i, j, 0] := +\infty$ + \EndIf + \EndFor + \EndFor + \State + \For{$k := 1$ \textbf{to} $n$} + \For{$i := 1$ \textbf{to} $n$} + \For{$j := 1$ \textbf{to} $n$} + \If{$B[i, j, k-1] > B[i, k, k-1] + B[k, j, k-1]$} + \State $B[i, j, k] := B[i, k, k-1] + B[k, j, k-1]$ + \EndIf + \EndFor + \EndFor + \EndFor + \State + \Return $B$ + \end{algorithmic} +\end{algorithm} + +Необязательно хранить в памяти трехмерную матрицу --- можно обойтись двумерной матрицей и обновлять ее следующим образом: +\begin{center} + \begin{algorithmic}%[1] + \If{$B[i, j] > B[i, k] + B[k, j]$} + \State $B[i, j] := B[i, k] + B[k, j]$ + \EndIf + \end{algorithmic} +\end{center} +Чтобы иметь возможность восстановить кратчайшие пути, можно использовать дополнительную двумерную матрицу $C$ и хранить в ячейке $C[i, j]$ максимальную промежуточную вершину кратчайшего пути из $i$ в $j$. Ячейки матрицы $C$ можно инициализировать нулями и обновлять следующим образом: +\begin{center} + \begin{algorithmic}%[1] + \If{$B[i, j] > B[i, k] + B[k, j]$} + \State $B[i, j] := B[i, k] + B[k, j]$ + \State $C[i, j] := k$ + \EndIf + \end{algorithmic} +\end{center} +Тогда восстановить кратчайший путь между вершинами $s$ и $t$ можно при помощи Алгоритма \ref{algo:reconstruct}. +\begin{algorithm} + \caption{\algname{Compute Path}($C, s, t$)} + \label{algo:reconstruct} + \begin{algorithmic}%[1] + \Require Матрица $C$, где $C[i, j]$ --- максимальная промежуточная вершина кратчайшего пути из $i$ в $j$, и две вершины $s$ и $t$. + \Ensure Кратчайший путь из $s$ в $t$ за исключением вершин $s$ и $t$. + \State + \State $k: = C[s, t]$ + \If{$k = 0$} + \Return [] + \EndIf + \Return \algname{Compute Path}($C, s, k$) + [$k$] + \algname{Compute Path}($C, k, t$) + \end{algorithmic} +\end{algorithm} + +Как быть, если заранее неизвестно, содержит ли граф циклы с отрицательной стоимостью? Можно доказать, что в графе есть такой цикл в том и только том случае, если по окончании работы алгоритма $B[i, i] < 0$ для некоторого $i \in V$. +\newpage +\section{Алгоритм Беллмана -- Форда} +Алгоритм Флойда -- Уоршелла находит кратчайшие пути между всеми парами вершин за время $O(n^3)$. Алгоритм Беллмана -- Форда находит кратчайшие пути лишь из заданной вершины $s$ до всех остальных --- но побыстрее. + +Обозначим за $BF(k, j)$ минимальную стоимость пути из $s$ в $j$, содержащего не более $k$ ребер. Чтобы найти расстояние от $s$ до $t$, достаточно вычислить $BF(n-1, t)$. + +Используя свойства кратчайших путей, нетрудно получить рекурсивную формулу для $BF$: +\[BF(k, j) = + \begin{cases} + 0, & \text{если }k = 0\text{ и }j = s;\\ + +\infty, & \text{если }k = 0\text{ и }j \neq s;\\ + \min \big\{BF(k - 1, j),\quad\min_{(i, j) \in E}\{BF(k - 1, i) + w_{ij}\}\big\}, & \text{иначе}. + \end{cases} +\] + +Алгоритм \ref{algo:bf} Беллмана -- Форда реализует такое вычисление. + +\begin{algorithm} + \caption{\algname{Bellman--Ford}($(V, E), w_{ij}, s$)} + \label{algo:bf} + \begin{algorithmic}%[1] + \Require Граф $(V, E)$, $V = \{1, \dots, n\}$, веса $w_{ij} \in \mathbb{R}$ ребер $(i, j) \in E$ и вершина $s \in V$. В графе нет циклов с отрицательной стоимостью. + \Ensure Вектор $B$, где $B[j]$ --- расстояние от $s$ до $j$ в графе $(V, E)$. + \State + \For{$j := 1$ \textbf{to} $n$} + \If{$j = s$} + \State $M[0][j] := 0$ + \Else + \State $M[0][j] := +\infty$ + \EndIf + \EndFor + \State + \For{$k := 1$ \textbf{to} $n - 1$} + \For{$j := 1$ \textbf{to} $n$} + \State $M[k][j] := M[k - 1][j]$ + \For{$(i, j) \in E$} + \If{$M[k][j] > M[k - 1][i] + w_{ij}$} + \State $M[k][j] := M[k - 1][i] + w_{ij}$ + \EndIf + \EndFor + \EndFor + \EndFor + \State + \Return $M[n - 1]$ + \end{algorithmic} +\end{algorithm} + +Заметим, что необязательно хранить всю матрицу $M$: для вычисления каждой следующей строки достаточно помнить предыдущую. Тогда, чтобы иметь возможность восстановить кратчайшие пути, достаточно для каждой вершины хранить номер предыдущей вершины на кратчайшем пути из $s$ в нее. Эти номера можно хранить в массиве $P$, инициализированном нулями, и обновлять следующим образом: +\begin{center} + \begin{algorithmic} + \If{$M[k][j] > M[k - 1][i] + w_{ij}$} + \State $M[k][j] := M[k - 1][i] + w_{ij}$ + \State $P[j] := i$ + \EndIf + \end{algorithmic} +\end{center} + +Время работы алгоритма --- $O(mn)$, объем требуемой памяти (если хранить только две строки матрицы $M$) --- $O(n)$. + +Чтобы найти длины кратчайших путей между всеми парами вершин, можно запустить алгоритм Беллмана -- Форда $n$ раз --- отдельно для каждой вершины $s \in V$. На это уйдет время $O(mn^2)$, что близко к времени работы алгоритма Флойда -- Уоршелла в случае разреженного графа, но существенно дольше --- в случае плотного графа. + +\newpage +\section{Приложения алгоритмов на графах: решение систем разностных ограничений при помощи алгоритма Беллмана – Форда, проверка выполнимости 2-КНФ на основе поиска компонент сильной связности.} +\newpage +\section{Структуры данных. Массив с операциями инициализации, чтения и записи, выполняемыми за время O(1). Три подхода к амортизационному анализу: групповой анализ, банковский метод и метод потенциалов (на примере двоичного счетчика).} + +\newpage +\section{Хеш-таблицы. Методы задания хеш-функций. Разрешение коллизий при помощи цепочек. Открытая адресация.} + +\subsection{Ассоциативный массив} + +Продолжаем говорить про структуры данных. Ассоциативный массив (он же map в C++, он же словарь в Python). Это структура данных такая, что с каждой записью ассоциирован уникальный ключ и реализованы следующие операции: + +\begin{itemize} + \item Insert(S, x) --- вставка; + + \item Delete(S, x) --- удаление; + + \item Find(S, k) --- извлечение элемента по ключу. +\end{itemize} + +Варианты: + +\begin{itemize} +\item +Таблица с прямой адресацией: + +Ключи берутся из некоторого заранее выбранного множества $U = \{0,\ldots, m-1\}$; данные хранятся в массиве под индексом, равным ключу. + +\begin{itemize} + \item[$+$] + Быстро --- операции производятся за константное время; + \item[$-$] + Ограничения на ключи: такая система не поддерживает использование вместо ключей, например, строк, или сколь угодно больших чисел; + \item[$-$] + Возможно чрезмерное использование памяти: например, если ключи --- степени двойки, большая часть индексов не будет использована. +\end{itemize} + +\item +Хеш-функция: + +Рассмотрим некоторую функцию $h: U\to \{0, \ldots, m-1\}$ --- функцию из множества ключей в множество подряд идущих целых чисел. Воспользуемся основной идеей предыдущего варианта, но будем записывать элементы не в ячейку $k$, а в ячейку $h(k)$. Если же двум ключам соответствует один хеш, говорят что возникает \emph{коллизия}; и их можно решать различными способами. Например, можно хранить в ячейке $s$ не элемент с хешем, а списки (или даже деревья) элементов с одинаковым хешем (\emph{метод цепочек}) или записывать элемент в следующую (или не следующую; вместо последовательности сдвигов $1-1-1\ldots$ можно использовать, например, ) свободную ячейку (\emph{прямая адресация}). А можно воспользоваться так называемой \emph{совершенной} хеш-функцией для данного набора ключей --- функцией, не создающей коллизий вообще. +\begin{itemize} + \item[$+$] + Возможность использовать произвольные ключи; нужно лишь написать соответствующую хеш-функцию; + \item[$+$] + Минимизированное использование памяти, особенно в методе цепочек; + \item[$-$] + Нужно время на вычисление хеш-функции и разрешение коллизий. +\end{itemize} +\end{itemize} + +Рассмотрим возможную реализацию хеш-таблицы с разрешением коллизий методом цепочек: + +\begin{lstlisting} +Find(T, k) + return x in T[h(k)] where x.key = k; +\end{lstlisting} + +\begin{lstlisting} +Insert(T, x) + insert x in T[h(x.key)]; +\end{lstlisting} + +\begin{lstlisting} +Delete(T, k) + delete x in T[h(k)] where x.key = k; +\end{lstlisting} + +Проблема этого подхода --- случай, когда хеши всех ключей равны. Тогда таблица вырождается в список, а он очень неэффективен. Худший случай для Find и Delete в такой реализации --- $O(n)$, лучший --- $O(1)$; Insert всегда константна. А что насчёт среднего случая? + +Будем считать, что $h$ --- хорошая хеш-функция и распределяет $n$ ключей по $m$ возможным хешам примерно равномерно. Пусть $\alpha = \frac{n}{m}$ --- коэффициент заполнения. + +Ожидаемое время поиска отсутствующего элемента --- $O(1)$ на поиск ячейки (вычисление хеша) и $O(\alpha)$ на поиск в цепочке, итого $O(1+\alpha)$. При этом, если $n = O(m)$, то поиск элемента занимает $O(1)$. + +Однако, всё опирается на то, что хеш функция работает хорошо. Давайте определим "хорошо" как "даёт в среднем равномерное распределение хешей". Исходя из предположения, что множество ключей есть множество натуральных чисел, рассмотрим, как может быть устроена хорошая хеш-функция. + +\begin{itemize} +\item +Метод деления: +$h(x) = x \pmod{m}$. + +Однако, такой метод работает плохо при некоторых (впрочем, возможно, довольно простых) множествах ключей; если у нас, например, $m$ чётное, и таблицу мы хотим заполнять чётными числами, то половина (нечётная) ячеек нашей хеш-таблицы будет пустой. Вообще говоря, обычно $m$ берут простым и всё хорошо (ещё лучше, если оно не очень близко к степени двойки). + +\item +Метод умножения: + +Метод умножения работает в два этапа: сначала мы умножаем ключ $k$ на некоторую константу $A \in (0, 1]$ и берём дробную часть $kA$. После этого мы домножаем её на $m$ и округляем вниз. +$h(k) = \lfloor m(kA \mod{1})\rfloor$ + +Преимущество этого метода в том, что его эффективность гораздо меньше зависит от $m$. $m$ зачастую выбирают так, чтобы оно было степенью двойки: так проще реализовывать функцию. Пусть $m = 2^p$ Пусть $k$ занимает $w$ бит; пусть $A = \frac{s}{2^w}$, где $0\leqslant s \leqslant 2^w$. Тогда при хешировании мы $w$-битное представление числа $k$ перемножаем с $w$-битным же числом $s = A2^w$, получая $2w$-битное число $r$; искомый хеш --- его последние $p$ бит. +\end{itemize} + +А теперь снова к коллизиям. Будем рассматривать не цепочки, а таблицу с открытой адресацией. Возможные способы избежания коллизий: + +Будем пользоваться набором из нескольких хеш-функций; если хеш занят, найдём хеш с помощью следующей функции и будем повторять, пока очередной хеш от ключа не окажется свободен. При этом мы всё ещё стремимся к эффективности, поэтому иметь больше $m$ функций --- излишне; меньше же может не хватить. Также мы хотим, чтобы для всех $k,\ i\neq j$ выполнялось $h(k, i) \neq h(k, j)$. +\begin{itemize} +\item + Самый простой способ реализации --- имея одну функцию $h'(k)$ определить $h(k, i) = (h'(k) + i) \pmod{m}$. Получим \emph{linear probing}. Этот вариант не очень хорош --- будут образовываться большие блоки подряд идущих занятых хешей, что сильно сказывается на производительности. + +\item + Можно сделать умнее --- использовать не линейный, а квадратичный сдвиг: $h(k, i) = (h'(k) + c_1i+c_2i^2) \pmod{m}$. Тут тоже есть проблема накопления, но гораздо менее выраженная: числа начинают друг другу "мешать" и накладываться друг на друга, если их стартовые хеши совпадали; теперь они не мешают всем предыдущим числам и не образуют длинные занятые кластеры. + +\item + Лучше всего сделать так: $h(k, i) = (h'(k) + ih''(k)) \pmod{m}$ для двух различных хеш-функций $h'$ и $h''$. В таком случае, последующие сдвиги зависят не только от параметров и изначального хеша, но и от самого хешируемого элемента, полностью предотвращая образование забитых кластеров. +\end{itemize} + + +А теперь немного об сложности поиска свободного места: + +Заметим для начала, что для прямой адресации $0 \leqslant \alpha \leqslant 1$. Докажем, что количество безуспешных попыток найти свободное место не больше $\frac{1}{1-a}$, считая хеширование равномерным: + +Пусть $X$ --- случайная величина, обозначающая число неудачных попыток. Пусть также $A_i$ --- событие "произошла $i$-ая попытка и она была неудачной". Тогда \[X \geqslant i \iff A_1 \land A_2 \land \ldots \land A_{n-1}\]. Оценим $\mathrm{Pr}[X \geqslant i]$ через $\mathrm{Pr}[A_1 \land A_2 \land \ldots \land A_{n-1}]$. + +Можно показать, что + +\[\mathrm{Pr}[A_1 \land A_2 \land \ldots \land A_{n-1}] = +\mathrm{Pr}[A_1] \cdot \mathrm{Pr}[A_2 \mid A_1]\cdot \mathrm{Pr}[A_3\mid A_1\land A_2]\cdot\ldots\] + +Легко заметить, что $\mathrm{Pr}[A_1] = \frac{n}{m}$. Так как наши хеши хорошие и зацикливаются только с длиной цикла $m$, вероятность ошибки на втором шаге --- $\frac{n-1}{m-1}$, на третьем --- $\frac{n-2}{m-2}$ и так далее. + +\[ + \mathrm{Pr}[X \geqslant i] = + \mathrm{Pr}[A_1 \land A_2 \land \ldots \land A_{n-1}]= + \frac{n}{m}\frac{n-1}{m-1}\frac{n-2}{m-2}\cdots\frac{n-i+1}{m-i+1} \leqslant \frac{n}{m}^{i-1} = \alpha^{i-1} +\] + +Теперь найти математическое ожидание $X$ несложно: + +\[ +\mathrm{E}[x] = \sum\limits_{i=1}^\infty \mathrm{Pr}[X\geqslant i] \leqslant +\sum\limits_{i=1}^\infty \alpha^{i-1} = +\sum\limits_{i=0}^\infty \alpha^{i} = +\frac{1}{1-\alpha} +\] + +\newpage +\section{Двухуровневое идеальное хеширование} + +Пусть $H$ --- семейство хеш-функций $h: U \to \{0, 1, \ldots, m-1\}$. Назовём $H$ \emph{универсальной}, если выплолняется +\[\forall x\in U, y\in U \left|\left\{ h(x) = h(y)\mid h\in H \right\}\right| = \frac{|H|}{m}\] + +При случайном выборе $h\in H$ $\mathrm{Pr}[h(x) = h(y)] = \frac{1}{m}$ + +Будем считать, что мы пользуемся именно такой $h$. + +Пусть $m = n^2$, где $n$ --- число хранимых ключей. Выберем $h\in H$; сколько будет коллизий? + +Давайте оценим математическое ожидание коллизии: + +\[ + E(\text{число коллизий}) = Pr(\text{коллизия})*{n \choose 2} = \frac{1}{m}\cdot\frac{n(n-1)}{2} = \frac{n-1}{2n}<\frac{1}{2} +\] + +\[ + Pr(\text{\# коллизий} \geqslant 1) \leqslant \frac{ E(\text{\# коллизий})}{1} = \frac{1}{2} +\] + +\[ + Pr(\text{коллизий нет}) \geqslant \frac{1}{2} +\] + +Заметим, что тогда (мы опираемся на то, что данные сохраняются единожды) получается, что потратив в среднем две попытки мы можем найти такую $h$, что хеширование произойдёт без коллизий и поиск будет за константное время (это, кстати, называется \emph{идеальным хешированием}). + +Или можно поступить по-другому: + +Создадим таблицу из $m = n$ ячеек; но таблица будет не такой, как те, с которыми мы работали раньше, а состоящей из хеш-таблиц; при этом внутри каждой такой таблицы коллизий не будет (мы об этом позаботимся). + +Пусть $n_j$ --- число элементов таких, что $h(x) = j$. $\sum\limits_j n_j = n$, как несложно заметить. Введём также $m_j$ --- число ячеек в $j$-ой таблице второго уровня. Если мы хотим обеспечить отсутствие коллизий (и не потратить на это слишком много времени), то $m_j$ должно быть равно $n_j^2$. Вопрос --- а чем такой способ лучше предыдущего? Посмотрим на память: внешняя таблица имеет линейное количество ячеек, где каждая имеет константную память (там хранятся лишь ссылки на таблицы второго уровня). В свою очередь, память, затраченная на таблицы второго уровня --- $\sum\limits_{j=0}^{m-1} \Theta(n_j^2)$. Впрочем, понятно, что существует худший случай, при котором все элементы всё равно будут в одной таблице. Давайте найдём матожидание: + +\[ + E\left[ \sum\limits_{j=0}^{m-1} \Theta(n_j^2) \right] +\] + +Но сначала заметим следующее: + +\[ + n_j^2 = n_j +n_j^2 - n_j = n_j+n_j(n_j-1) = n_j + 2{n_j \choose 2} +\] + +\begin{multline*} + E\left[ \sum\limits_{j=0}^{m-1} n_j^2 \right] = + E\left[ \sum\limits_{j=0}^{m-1} n_j + 2{n_j \choose 2} \right] = + E\left[ \sum\limits_{j=0}^{m-1} n_j \right] + 2E\left[{n_j \choose 2} \right] = \\ = + n + 2E\left[ \text{\# коллизий для $h$} \right] \leqslant + n + 2\cdot\frac{1}{m}\cdot\frac{n(n-1)}{2} = + n + n - 1 = + 2n - 1 +\end{multline*} + +Линейная память! Именно здесь лежит главное преимущество такого способа организации таблицы. Таким образом, можно добиться идеального хеширования в таблице линейных размеров. + +\newpage +\section{Красно-чёрное дерево} + +\begin{definition} + \textbf{Красно-чёрное дерево} -- бинарное дерево поиска с одним дополнительным битом цвета в каждом узле. Цвет узла либо красный (RED), либо чёрный (BLACK), причём ни один простой путь от корня в КЧД не отличается от другого по длине более чем в два раза. Можно называть КЧД приближённо сбалансированными. + + Каждый узел содержит атрибуты: $color$ -- цвет,\ $key$ -- ключ,\ $left$ -- левый потомок,\ $right$ -- правый потомок,\ $parent$ -- предок. Если дочернего или родительского узла нет, то указатель принимает значение $NIL$ -- фиктивный узел. Имеет чёрный цвет, все указатели направлены в себя. Для дерева он будет единым. + + Бинарное дерево поиска называется \textbf{красно-чёрным}, если оно удовлетворяет \textbf{красно-чёрным} свойствам: + \begin{enumerate} + \item Каждый узел либо красный, либо чёрный. + \item Корень дерева -- чёрный узел. + \item Каждый лист дерева ($NIL$) -- чёрный. + \item Если узел красный, то оба его дочерних узла -- чёрные. + \item Для каждого узла все простые пути от него до листьев -- потомков данного узла -- содержат одно и то же количество чёрных узлов. + \end{enumerate} + + Количество чёрных узлов на любом простом пути от узла $x$ к листу назовём \textbf{чёрной высотой} -- $bh(x)$. +\end{definition} + +\begin{fulllemma} +КЧД с $n$ внутренними узлами имеет высоту $\leqslant 2\log (n + 1)$. +\end{fulllemma} +\begin{proof} + Докажем сначала, что поддерево любого узла $x$ содержит $\geqslant 2^{bh(x)} - 1$ внутренних узлов. Индукция по чёрной высоте: + + \begin{itemize} + \item База: $bh(x) = 0$. + + В этом случае узел $x$ -- лист ($NIL$), и поддерево узла $x$ содержит $\geqslant 2^{bh(x)} - 1 = 2^0 - 1 = 0$ внутренних узлов. + + \item Шаг: $x$ -- узел с положительной высотой и двумя потомками. Каждый дочерний узел имеет чёрную высоту либо $bh(x)$, либо $bh(x) - 1$ в зависимости от того, является ли цвет узла красным или чёрным. Высота потомка $x$ меньше высоты $x$, тогда, по предположению индукции, каждый из потомков $x$ имеет $\geqslant 2^{bh(x) - 1} - 1$ внутренних узлов. Но тогда дерево с корнем в $x$ имеет $\geqslant (2^{bh(x) - 1} - 1) + (2^{bh(x) - 1} - 1) + 1 = 2^{bh(x)} - 1$ внутренних узлов -- индукция доказана. + \end{itemize} + + Пусть $h$ -- высота дерева. По свойству 4 КЧД на любом простом пути от корня к листу хотя бы половина узлов -- чёрные. Тогда $bh(Tree) \geqslant h\slash2$. Отсюда: \[n \geqslant 2^{h\slash2} - 1 \Rightarrow n + 1 \geqslant 2^{h\slash2} \Rightarrow \log (n + 1) \geqslant h\slash2 \Rightarrow h \leqslant 2 \log (n + 1)\] +\end{proof} + +\subsection{Повороты} + +В силу того, что высота КЧД равна $\log n$, операции вставки $Insert$ и удаления $Delete$ выполняются за $O(\log n)$. Ясно, что при обычной вставке и удалении свойства КЧД могут нарушаться. Поэтому необходимо изменить цвета некоторых узлов и структуру указателей, чтобы свойства сохранились. + +Используем операции \textbf{поворотов} -- локальные операции в дереве поиска, сохраняющие свойства бинарного дерева поиска. + +\begin{itemize} + \item Левый: При выполнении левого поворота относительно узла $x$ предполагаем, что его правый потомок $y$ не $NIL$. $y$ становится новым корнем поддерева,а $x$ становится его левым потомком. Бывший левый потомок $y$ -- правый потомок $x$. + \item Правый: При выполнении правого поворота относительно узла $y$ предполагаем, что его левый потомок $x$ не $NIL$. $x$ становится новым корнем поддерева,а $y$ становится его правым потомком. Бывший левый потомок $x$ -- правый потомок $y$. +\end{itemize} + +Операция поворота сохраняет свойства бинарного дерева: в правом поддереве $x$ ключи, меньшие $x$, который предшествует ключам своего правого поддерева, которые предшествуют ключу $y$, который предшествует ключам уже своего правого поддерева. При повороте эти условия сохраняются. + +Псевдокод левого поворота: + +\begin{algorithm} + \caption{\algname{Left-Rotate}($Tree,\ x$)} + \begin{algorithmic} + \State $y := x.right$\Comment{Устанавливаем $y$} + \State $x.right = y.left$ \Comment{Делаем из левого поддерева $y$ правое поддерево $x$} + \State + \If{$y.left \neq NIL$} + \State $y.left.parent = x$ + \EndIf + \State $y.parent = x.parent$\Comment{Переназначаем родилея $x$ узлу $y$} + \If{$x.parent == NIL$} + \State $root = y$ + \ElsIf{$x == x.parent.left$} + \State $x.parent.left = y$ + \Else + \State $x.parent.right = y$ + \EndIf + \State $y.left = x$\Comment{Делаем $x$ левым потомком $y$} + \State $x.parent = y$ + \end{algorithmic} +\end{algorithm} + +Отметим, что совершается константное число операций, то есть, повороты не влияют на общую асимптотику операций по вставке и удалению. + +\subsection{Вставка} + +Вставка узла в КЧД с $n$ узлами может быть выполнена за время $O(\log n)$. Начинаем алгоритм в корне $root$. При вставке мы последовательно сравниваем ключи текущего узла $x$ и ключ вставляемого узла $z$ -- если он меньше $x.key$, то переходим в левое поддерево $x$, иначе в правое. Также будем хранить указатель $y$ -- родитель вставляемого узла. Изменяем его по мере спуска вниз по дереву. Если в какой-то момент $z.key = x.key$, то выходим из функции -- вставляемый элемент уже есть в КЧД. Опускаемся вниз по дереву до тех пор, пока $x\neq NIL$. Опустившись, придаём текущему $x$ значение $z$ и помечаем $z$ как соответствующего потомка $y$. Инициализируем оставшиеся указатели и окрашиваем $z$ в красный. Однако, так как красный цвет может вызвать нарушение КЧ-свойств, вызывается дополнительная процедура $Fixup$, назначение которой -- восстановить свойства КЧД. + +Псевдокод: + +\begin{algorithm} + \caption{\algname{Insert}($Tree,\ z$)} + \begin{algorithmic} + \State $y = NIL$ + \State $x = root$ + \While{$x \neq NIL$} + \State $y = x$ + \If{$z.key < x.key$} + \State $x = x.left$\Comment{Идём в левое поддерево} + \ElsIf{$z.key > x.key$} + \State $x = x.right$\Comment{Идём в правое поддерево} + \Else + \State \Return\Comment{данный элемент уже присутствует в дереве} + \EndIf + \EndWhile + \State $z.parent = y$\Comment{назначаем родителей} + \If{$y == NIL$} + \State $root = z$ + \ElsIf{$z.key < y.key$} + \State $y.left = z$ + \Else + \State $y.right = z$ + \EndIf + \State $z.left = NIL$ + \State $z.right = NIL$ + \State $z.color = RED$ + \State $Fixup(Tree,\ z)$ + \end{algorithmic} +\end{algorithm} + +\subsection{Fixup} + +Какие свойства могут нарушиться? + +Свойства 1 и 3 выполняются, так как оба потомка вставляемого узла -- $NIL$. Свойство 5 тоже работает, так как мы добавили красный узел вместо чёрного, но затем сделали 2 чёрных потомка. + +Нарушиться могут только свойства 2 (корень -- чёрный) и свойство 4 (красному узлу только чёрные потомки). 2 нарушается, если $z$ -- корень, 4 -- если предок $z$ -- красный. + +Псевдокод: + +\begin{algorithm} + \caption{\algname{Fixup}($Tree,\ z$)} + \begin{algorithmic} + \While{$z.parent.color == RED$} + \If{$z.parent == z.parent.parent.left$} + \State $y = z.parent.parent.right$ + \If{$y.color == RED$}\Comment{Случай 1} + \State $z.parent.color = BLACK$ + \State $y.color = BLACK$ + \State $z.parent.parent.color = RED$ + \State $z = z.parent.parent$ + \Else + \If{$z == z.parent.right$}\Comment{Случай 2} + \State $z = z.parent$ + \State $Left-Rotate(T,\ z)$ + \EndIf + \State $z.parent.color = BLACK$\Comment{Случай 3} + \State $z.parent.parent.color = RED$ + \State $Right-Rotate(T,\ z.parent.parent)$ + \EndIf + \Else + \State \Comment{Аналогичные действия для правого поддерева с точностью до замены $right$ на $left$ и наоборот} + \EndIf + \EndWhile + \State $root.color = BLACK$ + \end{algorithmic} +\end{algorithm} + +\begin{theorem} +Цикл \textbf{while} сохраняет следующий инвариант: +\begin{enumerate} + \item $z$ -- красный + \item если $z.parent$ -- корень, то $z.parent$ -- чёрный. + \item Если КЧ-свойства нарушены, то это либо 2 (корень -- красный), либо 4 ($z$ и $z.parent$ красные). +\end{enumerate} +\end{theorem} +\begin{proof} +\ + \paragraph{Инициализация} + + Имеется КЧД без нарушений, к которому добавили красный узел $z$. Покажем, что к моменту вызова $Fixup$ инвариант выполнен: + \begin{enumerate} + \item $z$ -- красный + \item если $z.parent$ -- корень, то он чёрный и не изменяется до вызова $Fixup$. + \item Свойства 1, 3, 5 сохраняются (рассмотрено выше). + + Если нарушается 2, то красный корень должен быть добавленным узлом $z$ -- становится единственным внутренним узлом дерева при добавлении. Но тогда его предок и потомки -- $NIL$, и свойство 4 не нарушено. + + Если нарушается 4, то, поскольку потомки $z$ -- $NIL$, а до вставки $z$ нарушений не было, то единственное нарушение в том, что $z.parent.color = z.color = RED$, и $z$ -- не корень. + \end{enumerate} + + \paragraph{Завершение} + + Цикл завершает работу, когда $z.parent.color = BLACK$. Тогда свойство 4 не нарушается. В соответствии с инвариантом, единственным нарушением может быть 2. Тогда красим корень в чёрный цвет -- это не нарушает никаких свойств -- и инвариант выполнен. + + \paragraph{Сохранение по ходу дела} + + Во время работы \textbf{while} может возникнуть 6 разных случаев, но 3 из них симметричны трём другим -- разница в том, является ли $z.parent$ левым или правым потомком своего предка $z.parent.parent$ -- этот узел существует, так как, по инварианту, если $z.parent = root$, то он чёрный. Но цикл запускается только если $z.parent.color = RED$ -- значит, $z.parent \neq root$ и существует $z.parent.parent$ (для внутренних узлов всегда есть дед). + + Ниже будут изложены 3 возможных случая для рассмотрения случая левого поддерева $z.parent = z.parent.parent.left$ -- остальные соответственно симметричны. Случай 1 отличается от Случая 2 и Случая 3 цветом брата $z.parent$, то есть дяди $z$. Далее идём по коду. Указатель $y = z.parent.parent.right$ -- дядя $z$. Если красный, то выполняем Случай 1. Иначе -- Случай 2 и Случай 3. В любом случае $z.parent.parent.color = BLACK$, так как $z.parent.color = RED$, а свойство 4 нарушается только между $z$ и $z.parent$. + + \begin{itemize} + \item \textbf{Случай 1: дядя узла $z$ -- $y$ -- красный} + + Тогда $z.parent.color = y.color = RED$. $z.parent.parent.color = BLACK$, значит, мы можем исправить ситуацию, когда $z.color = z.parent.color = RED$, покрасив $z.parent$ и $y$ в чёрный. Кроме того, можем окрасить $z.parent.parent$ в красный -- сохраним свойство 5. После этого повторяем \textbf{while} с $z.parent.parent$ как с новым $z$ -- сместился на 2 уровня вверх по дереву. + + Покажем, что в Случае 1 инвариант сохраняется. Пусть $z$ -- текущий $z$, а $z' = z.parent.parent$ -- узел $z$ в следующей итерации цикла. + \begin{enumerate} + \item В данной итерации цвет $z.parent.parent$ становится красным. Тогда $z'.color = RED$. + \item $z'.parent$ в текущей итерации -- прадед $z$ -- $z.parent.parent.parent$, и его цвет не изменяется в пределах данной итерации. Если это корень, то его цвет не изменится сейчас и до начала следующей итерации. + \item В Случае 1 свойство 5 сохранено, кроме того, ясно, что не возникает нарушений 1 и 3. + + Если $z'$ в начале очередной итерации является корнем, то код, соотвествующий Случаю 1, корректирует единственное нарушение свойства 4. $z' = root$ и $z'.color = RED$, тогда единственным нарушением становится 2 для $z'$. + + Если $z'$ в начале очередной итерации корнем не является, то код Случая 1 не вызывает нарушения 2. Он корректирует единственное нарушение 4, что имеется перед выполнением итерации: $z'$ становится красным и оставляет $z'parent$ без изменений. Если $z'.parent$ был чёрным, то 4 не нарушено, иначе -- он красный, и окрашивание $z'$ в красный создаст нарушение 4 между $z'$ и $z'.parent$. Инвариант сохраняется. + \end{enumerate} + + \item \textbf{Случаи 2 и 3: дядя узла $z$ -- $y$ -- чёрный, и $z$ -- правый (2) или левый (3) потомок} + + Цвет $y$ -- чёрный. Случаи различаются ровно тем, каким потомком $z$ является для $z.parent$. + + В Случае 2 узел $z$ является правым потомком своего предка. Используем левый поворот для преобразования ситуации в Случай 3, когда $z$ является левым потомком. $z.color = z.parent.color = RED$, значит, поворот не влияет ни на чёрную высоту узлов, ни на свойство 5. + + Переходя Случаю 3, дядя узла $z$ -- $y$ -- чёрный (иначе -- Случай 1). Кроме того, существует $z.parent.parent$ -- мы доказали, что он существует изначально и остатся неизменным. В Случае 3 мы меняем цвета и делаем правый поворот, который сохраняет свойство 5. После этого, так как нет двух подряд идущих красных узлов, работа цикла завершается -- $z.parent.color = BLACK$. + + Покажем, что Случаи 2 и 3 сохраняют инвариант. Мы доказали, что перел следующей проверкой узел $z.parent$ будет чёрным, и тело цикла не будет больше выполняться. + \begin{enumerate} + \item В Случае 2 выполняется присвоение, после которого $z$ указывает на красный $z.parent$. Никаких изменений $z$ или его цвета в Случаях 2 и 3 не выполняется. + + \item В Случае 3 узел $z.parent$ делается чёрным, так что, если $z.parent$ в начале следующей итерации -- корень, то он чёрный. + + \item Как и в Случае 1, в Случаях 2 и 3 свойства 1, 3, 5 сохраняются. + + $z \neq root$ в Случаях 2 и 3, поэтому нарушение 2 невозможно. Более того, Случаи 2 и 3 не могут приводить к нарушению 2, ибо при повороте в Случае 3 сделанный красным узел станет потомком чёрного. + + Итак, Случаи 2 и 3 приводят к коррекции нарушения 4, при этом ничего больше не нарушая. + \end{enumerate} + \end{itemize} + + Для правого поддерева рассуждения аналогичны. + + Мы показали, что при любой итерации инвариант цикла сохраняется, а значит, процедура $Fixup$ корректно восстанавливает свойства КЧД. +\end{proof} + +\subsection{Асимптотика} + +Высота КЧД с $n$ узлами равна $O(\log n)$, значит, выполнение цикла по поиску места для вставки требует времени $O(\log n)$. В процедуре $Fixup$ цикл \textbf{while} повторно выполняется только в Случае 1, и указатель $z$ при этом перемещается вверх по дереву на два уровня. Таким образом, общее количество всевозможным выполнений тела цикла \textbf{while} равно $O(\log n)$. Следовательно, общее время работы $Insert$ равно $O(\log n) + O(\log n) = O(\log n)$. Заметим, что в $Insert$ никогда не выполняется больше двух поворотов, так как в Случаях 2 и 3 цикл завершает работу. +\newpage +\section{Самоорганизующиеся списки и конкурентный анализ онлайн-алгоритмов.} +\newpage +\section{Деревья отрезков. Динамические порядковые статистики.} +\newpage +\section{Жадные алгоритмы. Примеры: (1) выбор максимального подмножества непересекающихся интервалов; (2) разбиение множества интервалов на минимальное число подмножеств непересекающихся интервалов.} +\newpage +\section{Алгоритм Дейкстры.} + +\begin{on1n} +Дан ориентированный или неориентированный взвешенный граф с $n$ вершинами и $m$ рёбрами. Веса всех рёбер неотрицательны. Указана некоторая стартовая вершина $start$. Требуется найти длины кратчайших путей из вершины $s$ во все остальные вершины, а также предоставить способ вывода самих кратчайших путей. +\end{on1n} + + +Эта задача называется "задачей о кратчайших путях с единственным источником" (single-source shortest paths problem). + +\subsection{Алгоритм} + +Заведём массив $distance[]$, в котором для каждой вершины $v$ будем хранить текущую длину $distance[v]$ кратчайшего пути из $start$ в $v$. Изначально $distance[start]=0$, а для всех остальных вершин эта длина равна бесконечности (при реализации на компьютере обычно в качестве бесконечности выбирают просто достаточно большое число, заведомо большее возможной длины пути):\[ distance[v] = \infty,\ v \neq start \] +Кроме того, для каждой вершины $v$ будем хранить, помечена она ещё или нет, т.е. заведём булевский массив $visited[]$. Изначально все вершины не помечены:\[visited[v] = false}\] + +Сам алгоритм Дейкстры состоит из $n$ итераций. На очередной итерации выбирается вершина $v$ с наименьшей величиной $distance[v]$ среди ещё не помеченных, т.е.: +\[ distance[v] = \min_{p:\ visited[p]={ false}} distance[p]\] +(Понятно, что на первой итерации выбрана будет стартовая вершина $start$.) + +Выбранная таким образом вершина $v$ становится помеченной. Далее, на текущей итерации, из вершины $v$ производятся релаксации: просматриваются все рёбра $(v,\ to)$, исходящие из вершины $v$, и для каждой такой вершины $to$ алгоритм пытается улучшить значение $distance[to]$. Пусть длина текущего ребра равна $\rm len$, тогда в виде кода релаксация выглядит как:\[ distance[to] = \min (distance[to],\ distance[v] + len) \] + +На этом текущая итерация заканчивается, алгоритм переходит к следующей итерации (снова выбирается вершина с наименьшей величиной $distance$, из неё производятся релаксации, и т.д.). При этом в конце концов, после $n$ итераций, все вершины графа станут помеченными, и алгоритм свою работу завершает. Утверждается, что найденные значения $distance[v]$ и есть искомые длины кратчайших путей из $start$ в $v$. + +Стоит заметить, что, если не все вершины графа достижимы из вершины $start$, то значения $distance[v]$ для них так и останутся бесконечными. Понятно, что несколько последних итераций алгоритма будут как раз выбирать эти вершины, но никакой полезной работы производить эти итерации не будут (поскольку бесконечное расстояние не сможет прорелаксировать другие, даже тоже бесконечные расстояния). Поэтому алгоритм можно сразу останавливать, как только в качестве выбранной вершины берётся вершина с бесконечным расстоянием. + +\paragraph{Восстановление путей.} +Разумеется, обычно нужно знать не только длины кратчайших путей, но и получить сами пути. Покажем, как сохранить информацию, достаточную для последующего восстановления кратчайшего пути из $start$ до любой вершины. Для этого достаточно так называемого массива предков: массива $parent$[], в котором для каждой вершины $v \neq start$ хранится номер вершины $parent[v]$, являющейся предпоследней в кратчайшем пути до вершины $v$. Здесь используется тот факт, что если мы возьмём кратчайший путь до какой-то вершины $v$, а затем удалим из этого пути последнюю вершину, то получится путь, оканчивающийся некоторой вершиной $parent[v]$, и этот путь будет кратчайшим для вершины $parent[v]$. Итак, если мы будем обладать этим массивом предков, то кратчайший путь можно будет восстановить по нему, просто каждый раз беря предка от текущей вершины, пока мы не придём в стартовую вершину $start$ — так мы получим искомый кратчайший путь, но записанный в обратном порядке. Итак, кратчайший путь $Path$ до вершины $v$ равен:\[ Path = (s, \ldots, parent[parent[parent[v]]], parent[parent[v]], parent[v], v) \] + +Осталось понять, как строить этот массив предков. Однако это делается очень просто: при каждой успешной релаксации, т.е. когда из выбранной вершины v происходит улучшение расстояния до некоторой вершины $to$, мы записываем, что предком вершины $to$ является вершина $v$:\[ parent[to] = v\] + +\subsection{Реализация} + +\begin{algorithm} + \caption{\algname{Дейкстра}($G,\ start$)} + \begin{algorithmic} + \Require Граф $G = (V,\ E)$, начальная вершина $start$ + \Ensure Массив $distance[]$ расстояний от $start$ до всех вершин графа, массив $parent[]$ предков для восстановления путей. + \State + \State $visited = [\textbf{False}]$ + \State $visited[start] = \textbf{True}$ + \State $distance = [\infty]$ + \State $distance[start] = 0$ + \State $parent = [-1]$ + \For{$i := 0\ \textbf{to}\ n$} + \State Ищем вершину $u$ с минимальным $distance[u]$ + \If{$distance[u] == \infty$}\Comment{проверяем на достижимость} + \State \Return\Comment{идти больше некуда} + \Else + \State $visited[u] = \textbf{True}$ + \For{$(u,\ v) \in E$} + \If{$distance[v] > distance[u] + w(u,\ v)$}\Comment{пытаемся улучшить расстояние, пройдя по ребру} + \State $distance[v] = distance[u] + w(u,\ v)$ + \State $parent[v] = u$\Comment{помечаем предка} + \EndIf + \EndFor + \EndIf + \EndFor + \Return $distance,\ parent$ + \end{algorithmic} +\end{algorithm} + +После чтения заводятся массивы расстояний $distance[]$, меток $visited[]$ и предков $parent[]$. Затем выполняются $n$ итераций. На каждой итерации сначала находится вершина $u$, имеющая наименьшее расстояние $distance[]$ среди непомеченных вершин. Если расстояние до выбранной вершины $u$ оказывается равным бесконечности, то алгоритм останавливается. Иначе вершина помечается как помеченная, и просматриваются все рёбра, исходящие из данной вершины, и вдоль каждого ребра выполняются релаксации. Если релаксация успешна (т.е. расстояние $distance[v]$ меняется), то пересчитывается расстояние $distance[v]$ и сохраняется предок $parent[]$. + +После выполнения всех итераций в массиве $distance[]$ оказываются длины кратчайших путей до всех вершин, а в массиве $parent[]$ — предки всех вершин (кроме стартовой $start$). Восстановить путь до любой вершины $to$ можно весьма просто: сначала ищем предка для последней вершины, потом его предка и так далее: + +\begin{algorithm} + \caption{\algname{Дейкстра: восстановление пути}($parent[]$)} + \begin{algorithmic} + \Require Массив предков вершин $parent[]$, полученный в ходе работы алгоритма Дейкстры. + \Ensure Массив $path$, в котором упорядоченно содержатся вершины пути $start \to to$ для какой-то вершины $to$ + \State + \State $path = []$ + \State $v = to$ + \While{$parent[v] \neq -1$}\Comment{по построению это эквивалентно тому, что $v = start$ и мы пришли в начало пути} + \State помещаем $v$ в начало массива $path$ + \State $v = parent[v]$ + \EndWhile + \Return $path$ + \end{algorithmic} +\end{algorithm} + +\subsection{Доказательство корректности} + +\begin{statement} +После того, как какая-либо вершина $u$ становится помеченной, текущее расстояние до неё $distance[u]$ уже является кратчайшим, и, соответственно, больше меняться не будет. +\end{statement} + +\begin{proof} + Индукция по $i$-- номеру итерации. + \begin{itemize} + \item База. + + Для первой итерации справедливость очевидна — для вершины $start$ имеем $distance[start]=0$, что и является длиной кратчайшего пути до неё. + + \item Шаг. + + Пусть теперь это утверждение выполнено для всех предыдущих итераций, т.е. всех уже помеченных вершин; докажем, что оно не нарушается после выполнения текущей итерации. Пусть $v$ — вершина, выбранная на текущей итерации, т.е. вершина, которую алгоритм собирается пометить. Докажем, что $distance[u]$ действительно равно длине кратчайшего пути до неё (обозначим эту длину через $length[u]$). + + Рассмотрим кратчайший путь $Path$ до вершины $u$. Понятно, этот путь можно разбить на два пути: $Path_1$, состоящий только из помеченных вершин (как минимум стартовая вершина $start$ будет в этом пути), и остальная часть пути $Path_2$ (она тоже может включать помеченные вершины, но начинается обязательно с непомеченной). Обозначим через $p$ первую вершину пути $Path_2$, а через $q$ — последнюю вершины пути $Path_1$. + + Докажем сначала наше утверждение для вершины $p$, т.е. докажем равенство $distance[p] = length[p]$. Однако это практически очевидно: ведь на одной из предыдущих итераций мы выбирали вершину $q$ и выполняли релаксацию из неё. Поскольку (в силу самого выбора вершины $p$) кратчайший путь до $p$ равен кратчайшему пути до $q$ плюс ребро $(p,\ q)$, то при выполнении релаксации из $q$ величина $distance[p]$ действительно установится в требуемое значение. + + + Вследствие неотрицательности стоимостей рёбер длина кратчайшего пути $length[p]$ (а она по только что доказанному равна $distance[p]$) не превосходит длины $length[u]$ кратчайшего пути до вершины $v$. Учитывая, что $lenght[u] \leq distance[u]$ (ведь алгоритм Дейкстры не мог найти более короткого пути, чем это вообще возможно), в итоге получаем соотношения:\[ distance[p] = lenght[p] \leq length[u] \leq distance[u]\] + С другой стороны, поскольку и $p$, и $u$ — вершины непомеченные, то так как на текущей итерации была выбрана именно вершина $u$, а не вершина $p$, то получаем другое неравенство:\[ distance[p] \geq distance[u]\] + + Из этих двух неравенств заключаем равенство $distance[p] = distance[u]$, а тогда из найденных до этого соотношений получаем и:\[ distance[u] = length[u]\] + \end{itemize} + +\end{proof} + +\subsection{Асимптотика} + +Итак, алгоритм Дейкстры представляет собой $n$ итераций, на каждой из которых выбирается непомеченная вершина с наименьшей величиной $distance[u]$, эта вершина помечается, и затем просматриваются все рёбра, исходящие из данной вершины, и вдоль каждого ребра делается попытка улучшить значение $distance[]$ на другом конце ребра. + +Время работы алгоритма складывается из: +\begin{itemize} + \item $n$ раз поиск вершины с наименьшей величиной $distance[u]$ среди всех непомеченных вершин, т.е. среди $O(n)$ вершин + \item $m$ раз производится попытка релаксаций +\end{itemize} +При простейшей реализации этих операций на поиск вершины будет затрачиваться $O(n)$ операций, а на одну релаксацию — $O(1)$ операций, и итоговая асимптотика алгоритма составляет:$O(n^2+m)$ + + + +\newpage +\section{Реализация приоритетной очереди при помощи двоичной кучи.} +\newpage +\section{Минимальные остовные деревья. Алгоритм Крускала, алгоритм Прима и алгоритм, удаляющий самые тяжелые ребра.} + +\subsection{Постановка задачи} + \begin{description} + \item[Вход:] Связный неориентированный граф $G = (V, E)$ с функцией весов $w: E \to \mathbb{R}$. + \begin{itemize} + \item Пока допустим, что все веса на ребрах различны. + \end{itemize} + \item[Выход:] \emph{Остовное дерево} $T = (V, E')$, где $E' \subseteq E$, с минимальным весом + \[w(T) = \sum_{(u, v) \in E'}w(u, v).\] + \end{description} + + \begin{example} + \includegraphics[width=.6\linewidth]{spanning} + \end{example} + +\subsection{Жадные алгоритмы} +\paragraph{Алгоритм Крускала.} Упорядочим ребра по возрастанию весов, затем к пустому графу $(V, \varnothing)$ будем добавлять ребра с минимальным весом, если они не образуют цикла с уже добавленными: + +\begin{algorithmic} + \State $E' := \varnothing$ + \For{$e \in E$ in increasing order of $w(e)$} + \If{$(V, E' \cup \{e\})$ has no cycles} + \State $E' := E' \cup \{e\}$ + \EndIf + \EndFor + \Return $(V, E')$ +\end{algorithmic} + +\paragraph{Жадный алгоритм, удаляющий ребра.} Можно подойти к задаче с другого конца и удалять из графа самые тяжелые ребра, сохраняя связность графа: + +\begin{algorithmic} + \State $E' := E$ + \For{$e \in E$ in decreasing order of $w(e)$} + \If{$(V, E' \setminus \{e\})$ is connected} + \State $E' := E' \setminus \{e\}$ + \EndIf + \EndFor + \Return $(V, E')$ +\end{algorithmic} + +\paragraph{Алгоритм Прима.} Можно начать с некоторой вершины, объявив ее корнем, и <<вырастить>> из этого корня дерево, добавляя к нему вершины, смежные с уже добавленными: + +\begin{algorithmic} + \State $V' := \{s\}$ for some $s \in V$ + \State $E' := \varnothing$ + \While{$V' \neq V$} + \State Let $(u, v) \in E$ be the lightest edge with $u \in V'$ and $v \not\in V'$ + \State $V' := V' \cup \{v\}$ + \State $E' := E' \cup \{(u, v)\}$ + \EndWhile + \Return $(V, E')$ +\end{algorithmic} + +\subsection{Корректность жадных алгоритмов} + + \begin{theorem}\label{theorem:cut} + Пусть все веса в графе $G = (V, E)$ различны, $\varnothing \neq S \subset V$, а $(u, v) \in E$ --- ребро с минимальным весом среди ребер, соединяющих $S$ и $V \setminus S$. Тогда $(u, v)$ входит в любое минимальное остовное дерево $G$. + \end{theorem} + \begin{proof} + Допустим, что $T = (V, E')$ --- минимальное остовное дерево графа $G$, но $(u, v) \not\in E'$. Рассмотрим уникальный простой путь из $u$ в $v$ в дереве $T$. Заменим первое ребро на этом пути, соединяющее вершину из $S$ с вершиной из $V \setminus S$, на ребро $(u, v)$. Получим остовное дерево с меньшим чем у $T$ весом. + \end{proof} + +Из Теоремы \ref{theorem:cut} непосредственно следует \textbf{корректность алгоритма Прима.} Заметим, что этот алгоритм весьма похож на алгоритм Дейкстры. Сложность алгоритма в реализации с использованием двоичной кучи --- $O(m\log n)$. + +\paragraph{Корректность алгоритма Крускала.} Пусть на некотором шаге мы добавили к $E'$ ребро $e = (v, w)$. Обозначим за $S$ компоненту связности графа $(V, E')$, в которую входит вершина $v$. Заметим, что $w$ не входит в $S$, так как иначе добавление $e$ создало бы цикл. Также заметим, что ребро $e$ имеет минимальный вес среди всех ребер, соединяющих $S$ и $V \setminus S$. По Теореме \ref{theorem:cut} ребро $e$ входит в любое минимальное остовное дерево графа $(V, E)$. + +Осталось проверить, что по окончании работы алгоритма Крускала подграф $(V, E')$ является деревом. По построению этот граф не содержит циклов, но почему он связен? Пусть полученный подграф содержит хотя бы две компоненты связности. В исходном связном графе $(V, E)$ должны быть ребра, соединяющие эти две компоненты. Алгоритм Крускала добавил бы в $E'$ минимальное из этих ребер, так как добавление такого ребра не привело бы к созданию цикла в $(V, E')$. Значит, в графе $(V, E')$ есть только одна компонента связности. + + \begin{theorem}\label{theorem:cycle}%[Свойство цикла] + Пусть все веса в графе $G = (V, E)$ различны, $C$ --- цикл в $G$, а $e = (u, v)$ --- самое тяжелое ребро в этом цикле. Тогда $e$ не входит ни в какое минимальное остовное дерево графа $G$. + \end{theorem} + \begin{proof} + Предположим, что минимальное остовное дерево $T$ графа $G$ содержит ребро $e$. Удалив $e$ из $T$, получим два поддерева $T_1 = (V_1, E_1)$ и $T_2 = (V_2, E_2)$, таких что $u \in V_1$, а $v \in V_2$. Рассмотрим путь из $u$ в $v$, составленный из всех ребер цикла $C$ кроме ребра $e$. Этот путь обязательно содержит ребро $e' = (u', v') \neq e$, такое что $u' \in V_1$ и $v' \in V_2$. Так как $e$ --- самое тяжелое ребро в цикле $C$, вес ребра $e'$ меньше веса ребра $e$. Заменив $e$ на $e'$ в дереве $T$, получим остовное дерево $T'$ с меньшим весом, что невозможно, так как $T$ --- минимальное остовное дерево. + \end{proof} + +Из Теоремы \ref{theorem:cycle} следует \textbf{корректность жадного алгоритма, удаляющего ребра.} + +\paragraph{Что, если в графе есть ребра с одинаковым весом?} Сделаем веса всех ребер различными, при необходимости изменив вес каждого ребра не более чем на $\varepsilon$ и обозначив новые веса $w'(\cdot)$, где $\varepsilon$ --- настолько малая величина, что для любых двух остовных деревьев $T_1$ и $T_2$, если $w(T_1) < w(T_2)$, то и $w'(T_1) < w'(T_2)$. Тогда минимальное остовное дерево графа с модифицированными весами будет являться таковым и для исходного графа. + +По доказанному все наши алгоритмы работают корректно на таком модифицированном графе. Вместе с тем работа любого из этих алгоритмов на исходном графе идентична его работе на некотором графе с весами, модифицированными, как описано выше (так как модификация не меняет порядок, в котором обрабатываются ребра с исходно разными весами). Следовательно, найденное алгоритмом остовное дерево является минимальным в этом модифицированном графе, а значит, и в исходном графе. + +Таким образом, наши алгоритмы работают корректно, даже если в графе есть ребра с одинаковым весом. + +\newpage +\section{Система непересекающихся множеств.} + +Эта структура данных предоставляет следующие возможности. Изначально имеется несколько элементов, каждый из которых находится в отдельном (своём собственном) множестве. За одну операцию можно объединить два каких-либо множества, а также можно запросить, в каком множестве сейчас находится указанный элемент. Также, в классическом варианте, вводится ещё одна операция — создание нового элемента, который помещается в отдельное множество. + +Таким образом, базовый интерфейс данной структуры данных состоит всего из трёх операций: +\begin{itemize} + \item $make\_set(x)$ — добавляет новый элемент $x$, помещая его в новое множество, состоящее из одного него. + \item $union\_sets(x,y)$ — объединяет два указанных множества (множество, в котором находится элемент $x$, и множество, в котором находится элемент $y$). + \item $find\_set(x)$ — возвращает, в каком множестве находится указанный элемент $x$. На самом деле при этом возвращается один из элементов множества (называемый представителем или лидером. Этот представитель выбирается в каждом множестве самой структурой данных (и может меняться с течением времени, а именно, после вызовов $union\_sets()$). + Например, если вызов $find\_set()$ для каких-то двух элементов вернул одно и то же значение, то это означает, что эти элементы находятся в одном и том же множестве, а в противном случае — в разных множествах. +\end{itemize} + +Описываемая ниже структура данных позволяет делать каждую из этих операций почти за $O(1)$ в среднем (более подробно об асимптотике см. ниже после описания алгоритма). + +\subsection{Построение эффективной структуры данных} +Определимся сначала, в каком виде мы будем хранить всю информацию. + +Множества элементов мы будем хранить в виде деревьев: одно дерево соответствует одному множеству. Корень дерева — это представитель (лидер) множества. + +При реализации это означает, что мы заводим массив $parent$, в котором для каждого элемента мы храним ссылку на его предка в дерева. Для корней деревьев будем считать, что их предок — они сами (т.е. ссылка зацикливается в этом месте). + +\paragraph{Реализация} + +Вся информация о множествах элементов хранится у нас с помощью массива $parent$. + +Чтобы создать новый элемент (операция $make\_set(v)$), мы просто создаём дерево с корнем в вершине $v$, отмечая, что её предок — это она сама. + +\begin{algorithm} + \caption{\algname{make\_set}($(V,\ E)$)} + \begin{algorithmic} + \Require Граф $G = (V,\ E)$ + \Ensure Массив лидеров $parent[]$ + \State + \For{$v \in V$} + \State $parent[v] = v$ + \EndFor + \Return $parent$ + \end{algorithmic} +\end{algorithm} + +Чтобы объединить два множества (операция $union\_sets(a,b)$), мы сначала найдём лидеров множества, в котором находится $a$, и множества, в котором находится $b$. Если лидеры совпали, то ничего не делаем — это значит, что множества и так уже были объединены. В противном случае можно просто указать, что предок вершины $b$ равен $a$ (или наоборот) — тем самым присоединив одно дерево к другому. + +\begin{algorithm} + \caption{\algname{union\_sets}($u,\ v$)} + \begin{algorithmic} + \Require Две вершины $u$, $v$. + \Ensure Если они были в разных множествах, то мы соединяем их множества в одно. Иначе -- ничего не делаем. + \State + \State $u = find\_set(u)$ + \State $v = find\_set(v)$ + \If{$u \neq v$} + \State $parent[v] = u$ + \EndIf + \end{algorithmic} +\end{algorithm} + +Наконец, реализация операции поиска лидера $(find\_set(v)$) проста: мы поднимаемся по предкам от вершины $v$, пока не дойдём до корня, т.е. пока ссылка на предка не ведёт в себя. Эту операцию удобнее реализовать рекурсивно. + +\begin{algorithm} + \caption{\algname{find\_set}($v$)} + \begin{algorithmic} + \Require Вершина $v$ + \Ensure Лидер множества, содержащего $v$ + \State + \If{$parent[v] == v$} + \State \Return $v$ + \EndIf + \State \Return $find\_set(parent[v])$ + \end{algorithmic} +\end{algorithm} + + +Впрочем, такая реализация системы непересекающихся множеств весьма неэффективна. Легко построить пример, когда после нескольких объединений множеств получится ситуация, что множество — это дерево, выродившееся в длинную цепочку. В результате каждый вызов $ find\_set()$ будет работать на таком тесте за время порядка глубины дерева, т.е. за $O(n)$. + +Рассмотрим оптимизации, которые позволят значительно ускорить работу. + +\subsection{Эвристика сжатия пути} + +Эта эвристика предназначена для ускорения работы $ find\_set()$. + +Она заключается в том, что когда после вызова $find\_set(v)$ мы найдём искомого лидера $p$ множества, то запомним, что у вершины $v$ и всех пройденных по пути вершин — именно этот лидер $p$. Проще всего это сделать, перенаправив их $parent[]$ на эту вершину $p$. + +Таким образом, у массива предков $parent[]$ смысл несколько меняется: теперь это сжатый массив предков, т.е. для каждой вершины там может храниться не непосредственный предок, а предок предка, предок предка предка, и т.д. + +С другой стороны, понятно, что нельзя сделать, чтобы эти указатели $parent$ всегда указывали на лидера: иначе при выполнении операции $union\_sets()$ пришлось бы обновлять лидеров у $O(n)$ элементов. + +Таким образом, к массиву $parent[]$ следует подходить именно как к массиву предков, возможно, частично сжатому. + +Новая реализация операции $find\_set()$ выглядит следующим образом: + +\begin{algorithm} + \caption{\algname{find\_set}($v$)} + \begin{algorithmic} + \Require Вершина $v$ + \Ensure Лидер множества, содержащего $v$ + \State + \If{$parent[v] == v$} + \State \Return $v$ + \EndIf + \State \Return $parent[v] = find\_set(parent[v])$ + \end{algorithmic} +\end{algorithm} + +Такая простая реализация делает всё, что задумывалось: сначала путём рекурсивных вызовов находится лидера множества, а затем, в процессе раскрутки стека, этот лидер присваивается ссылкам $parent$ для всех пройденных элементов. + +Реализовать эту операцию можно и нерекурсивно, но тогда придётся осуществлять два прохода по дереву: первый найдёт искомого лидера, второй — проставит его всем вершинам пути. Впрочем, на практике нерекурсивная реализация не даёт существенного выигрыша. + +\paragraph{Асимптотика сжатия путей} + +Покажем, что применение одной эвристики сжатия пути позволяет достичь логарифмическую асимптотику: $O(\log n)$ на один запрос в среднем. + +Заметим, что, поскольку операция $union\_sets()$ представляет из себя два вызова операции $find\_set()$ и ещё $O(1)$ операций, то мы можем сосредоточиться в доказательстве только на оценку времени работы $O(m)$ операций $find\_set()$. + +Назовём весом $weight[v]$ вершины $v$ число потомков этой вершины (включая её саму). Веса вершин, очевидно, могут только увеличиваться в процессе работы алгоритма. + +Назовём размахом ребра $(a,\ b)$ разность весов концов этого ребра: $|weight[a] - weight[b]|$ (очевидно, у вершины-предка вес всегда больше, чем у вершины-потомка). Можно заметить, что размах какого-либо фиксированного ребра $(a,\ b)$ может только увеличиваться в процессе работы алгоритма. + +Кроме того, разобьём рёбра на классы: будем говорить, что ребро имеет класс $k$, если его размах принадлежит отрезку $[2^k,\ 2^{k+1}-1]$. Таким образом, класс ребра — это число от 0 до $\lceil \log n \rceil$. + +Зафиксируем теперь произвольную вершину $x$ и будем следить, как меняется ребро в её предка: сначала оно отсутствует (пока вершина x является лидером), затем проводится ребро из $x$ в какую-то вершину (когда множество с вершиной $x$ присоединяется к другому множеству), и затем может меняться при сжатии путей в процессе вызовов $find\_path$. Понятно, что нас интересует асимптотика только последнего случая (при сжатии путей): все остальные случаи требуют $O(1)$ времени на один запрос. + +Рассмотрим работу некоторого вызова операции $find\_set$: он проходит в дереве вдоль некоторого пути, стирая все рёбра этого пути и перенаправляя их в лидера. + +Рассмотрим этот путь и исключим из рассмотрения последнее ребро каждого класса (т.е. не более чем по одному ребру из класса $0,\ 1,\ \ldots \lceil \log n \rceil$). Тем самым мы исключили $O(\log n)$ рёбер из каждого запроса. + +Рассмотрим теперь все остальные рёбра этого пути. Для каждого такого ребра, если оно имеет класс $k$, получается, что в этом пути есть ещё одно ребро класса $k$ (иначе мы были бы обязаны исключить текущее ребро, как единственного представителя класса $k$). Таким образом, после сжатия пути это ребро заменится на ребро класса как минимум $k+1$. Учитывая, что уменьшаться вес ребра не может, мы получаем, что для каждой вершины, затронутой запросом $find\_path$, ребро в её предка либо было исключено, либо строго увеличило свой класс. + +Отсюда мы окончательно получаем асимптотику работы $m$ запросов: $O((n+m) \log n)$, что (при $m \ge n$) означает логарифмическое время работы на один запрос в среднем. + +\subsection{Эвристика объединения по рангу} + +Рассмотрим здесь другую эвристику, которая сама по себе способна ускорить время работы алгоритма, а в сочетании с эвристикой сжатия путей и вовсе способна достигнуть практически константного времени работы на один запрос в среднем. + +Эта эвристика заключается в небольшом изменении работы $union\_sets$: если в наивной реализации то, какое дерево будет присоединено к какому, определяется случайно, то теперь мы будем это делать на основе рангов. + +Рангом дерева называется глубина дерева (точнее, верхняя граница на глубину дерева, поскольку при совместном применении эвристики сжатия путей реальная глубина дерева может уменьшаться). + +При выполнении $union\_sets$ будем присоединять дерево с меньшим рангом к дереву с большим рангом. + +Приведём реализацию ранговой эвристики на основе глубины деревьев: + +\begin{algorithm} + \caption{\algname{make\_set}($(V,\ E)$)} + \begin{algorithmic} + \Require Граф $G = (V,\ E)$ + \Ensure Массив лидеров $parent[]$ и массив рангов множеств $rank[]$ + \State + \For{$v \in V$} + \State $parent[v] = v$ + \State $rank[v] = 0$ + \EndFor + \Return $parent,\ rank$ + \end{algorithmic} +\end{algorithm} + +\begin{algorithm} + \caption{\algname{union\_sets}($u,\ v$)} + \begin{algorithmic} + \Require Две вершины $u$, $v$. + \Ensure Если они были в разных множествах, то мы соединяем их множества в одно. Иначе -- ничего не делаем. + \State + \State $u = find\_set(u)$ + \State $v = find\_set(v)$ + \If{$u \neq v$} + \If{$rank[u] < rank[v]$} + \State $swap(u,\ v)$ + \EndIf + \State $parent[v] = u$ + \If{$rank[u] == rank[v]$} + \State $rank[u] = rank[u] + 1$ + \EndIf + \EndIf + \end{algorithmic} +\end{algorithm} + +\paragraph{Оценка асимптотики при применении ранговой эвристики} + +Покажем, что асимптотика работы системы непересекающихся множеств при использовании только ранговой эвристики, без эвристики сжатия путей, будет логарифмической на один запрос в среднем: $O (\log n)$. + +Глубина каждого дерева будет величиной $O (\log n)$, что автоматически будет означать логарифмическую асимптотику для запроса $find\_set$, и, следовательно, запроса $union\_sets$. + +Рассмотрим ранговую эвристику по глубине дерева. Покажем, что если ранг дерева равен $k$, то это дерево содержит как минимум $2^k$ вершин (отсюда будет автоматически следовать, что ранг, а, значит, и глубина дерева, есть величина $O(\log n)$). Доказывать будем по индукции: для $k=0$ это очевидно. При сжатии путей глубина может только уменьшиться. Ранг дерева увеличивается с $k-1$ до $k$, когда к нему присоединяется дерево ранга $k-1$; применяя к этим двум деревьям размера $k-1$ предположение индукции, получаем, что новое дерево ранга $k$ действительно будет иметь как минимум $2^k$ вершин, что и требовалось доказать. + +\subsection{Объединение эвристик: сжатие пути плюс ранговая эвристика} + +Как уже упоминалось выше, совместное применение этих эвристик даёт особенно наилучший результат, в итоге достигая практически константного времени работы. + +Мы не будем приводить здесь доказательства асимптотики, поскольку оно весьма объёмно. + +Окончательный результат таков: при совместном применении эвристик сжатия пути и объединения по рангу время работы на один запрос получается $O (\alpha(n))$ в среднем, где $\alpha(n)$ — обратная функция Аккермана, которая растёт очень медленно, настолько медленно, что для всех разумных ограничений $n$ она не превосходит $4$ (примерно для $n \le 10^{600}$). + +Именно поэтому про асимптотику работы системы непересекающихся множеств уместно говорить "почти константное время работы". + +\subsection{Применения в задачах и различных улучшения} + +\paragraph{Поддержка компонент связности графа} + +Это одно из очевидных приложений структуры данных "система непересекающихся множеств", которое, по всей видимости, и стимулировало изучение этой структуры. + +Формально задачу можно сформулировать таким образом: изначально дан пустой граф, постепенно в этот граф могут добавляться вершины и неориентированные рёбра, а также поступают запросы $(a,\ b)$ — "в одинаковых ли компонентах связности лежат вершины $a$ и $b$?". + +Непосредственно применяя здесь описанную выше структуру данных, мы получаем решение, которое обрабатывает один запрос на добавление вершины/ребра или запрос на проверку двух вершин — за почти константное время в среднем. + +Учитывая, что практически в точности такая же задача ставится при использовании алгоритма Крускала нахождения минимального остовного дерева, мы сразу же получаем улучшенную версию этого алгоритма, работающую практически за линейное время. + +Иногда на практике встречается инвертированная версия этой задачи: изначально есть граф с какими-то вершинами и рёбрами, и поступают запросы на удаление рёбер. Если мы заранее можем узнать все запросы, то решать эту задачу можно следующим образом: перевернём задачу задом наперёд: будем считать, что у нас есть пустой граф, в который могут добавляться рёбра (сначала добавим ребро последнего запроса, затем предпоследнего, и т.д.). Тем самым в результате инвертирования этой задачи мы пришли к обычной задаче, решение которой описывалось выше. + +\newpage +\section{Жадный алгоритм на матроиде.} + + +\newpage +\section{Конечные автоматы. Регулярные языки. Замкнутость регулярных языков по объединению. Минимизация конечного автомата.} + \subsection{Основные определения теории автоматов.} + \textbf{Алфавитом} называют конечное непустое множество символов. Алфавит принято обозначать буквой \(\Sigma\). Наиболее распространённые примеры алфавитов: + \begin{itemize} + \item \(\Sigma = \{0, 1\}\)~--- бинарный алфавит. + \item \(\Sigma = \{\text{a}, \text{б}, \ldots, \text{я}\}\)~--- множество букв русского языка. + \end{itemize} + + \textbf{Цепочкой} (или \textbf{словом}) называют конечную последовательность символов некоторого алфавита. Например, 11011 или 0~--- слова в бинарном алфавите. + + \textbf{Пустым словом} называют слово, которое не содержит ни одного символа. Его принято обозначать за \(\varepsilon\). + + \textbf{Длиной слова} называют количество позиций для символов в цепочке. Стоит заметить, что часто используемое определение, что длина слова~--- это ``количество символов'' в ней, не совсем корректно. Например, в слове 11101 2 символа (0 и 1), но 5 позиций. Длину слова \(a\) принято обозначать за \(|a|\). Например, \(|110101| = 6\), \(|\varepsilon| = 0\). + + Далее введём определение \textbf{степени алфавита}. Пусть \(\Sigma\)~--- некоторый алфавит. Тогда \(k\)-й степенью алфавита назовём множество всех слов в данном алфавите, длина которых равна \(k\). Обозначение: \(\Sigma^k\). + Примеры: + \begin{itemize} + \item \(\Sigma^0 = \{\varepsilon\}\) для любого алфавита \(\Sigma\). + \item Для бинарного алфавита \(\Sigma^2 = \{00, 01, 10, 11\}\). + \end{itemize} + Стоит заметить, что \(\Sigma\) и \(\Sigma^1\), вообще говоря, немного отличаются~--- в первом множестве буквы, во втором же слова длины 1. + + \textbf{Обращением} слова \(a = a_1 a_2 \ldots a_n\) называют слово \(a^R = a_n a_{n - 1} \ldots a_1\). + + \textbf{Замыканием Клини} \(\Sigma^*\) алфавита \(\Sigma\) называют множество всех слов над этим алфавитом: + \[\Sigma^* = \Sigma^0 \cup \Sigma^1 \ldots \Sigma^k \ldots = \bigcup_{i = 0}^{\infty} \Sigma^i\] + Если не включать \(\Sigma^0\), то получится множество всех непустых слов над алфавитом \(\Sigma\), обозначаемое через \(\Sigma^+\). + + Пусть заданы два слова \(a = a_1 a_2 \ldots a_m\) и \(b = b_1 b_2 \ldots b_n\). Тогда \textbf{конкатенацией} слов \(a\) и \(b\) называют слово \(c = a_1 a_2 \ldots a_m b_1 b_2 \ldots b_n\). Обозначение: \(c = ab\). + + \textbf{Языком} \(L\) над алфавитом \(\Sigma\) называют некоторое множество \(L \subseteq \Sigma^*\). Стоит заметить, что язык не обязательно должен содержать цепочки, которые используют все элементы \(\Sigma\). Поэтому можно утверждать, что если \(L\)~--- язык над алфавитом \(\Sigma\), то \(L\) будет языком и над любым другим алфавитом, включающим в себя \(\Sigma\). Основные примеры: + \begin{itemize} + \item Язык, состоящий из всех цепочек, в которых \(n\) единиц следует за \(n\) нулями для некоторого \(n \geqslant 0\): \(L = \{\varepsilon, 01, 0011, \ldots\}\). + \item \(\varnothing\)~--- пустой язык над любым алфавитом. + \item \(\Sigma^*\)~--- язык для любого алфавита \(\Sigma\). + \item \(\{\varepsilon\}\)~--- язык, содержащий только пустое слово над любым алфавитом. Заметим, что \(\varnothing \neq \{\varepsilon\}\): первый вообще не содержит никаких слов, даже пустых. + \end{itemize} + + + \subsection{Детерменированный конечный автомат.} + \textbf{Детерменированным конечным автоматом} называют пятёрку \(A = (Q, \Sigma, \delta, q_0, F)\), где + \begin{itemize} + \item \(Q\)~--- конечное множество \textit{состояний}. + \item \(\Sigma\)~--- конечное множество \textit{входных символов}. + \item \(\delta : Q \times \Sigma \to Q\)~--- \textit{функция переходов}. Аргументами этой функции служат текущее состояние и входной символ, а результатом~--- новое состояние. Нестрого: представим автомат в виде графа, где вершинами служат элементы из \(Q\), а \(\delta\) изобразим отмеченными символами ребрами между вершинами. Тогда \(\delta(q, a)\)~--- это состояние \(p\) такое, что между \(q\) и \(p\) есть ребро, отмеченное символом \(a\). + \item \(q_0 \in Q\)~--- \textit{начальное состояние}. + \item \(F \subseteq Q\)~--- множество \textit{заключительных} (или \textit{терминальных}) состояний. + \end{itemize} + Если явно не указан тип конечного автомата, то полагается, что он детерменированный. + + Предположим, что задан ДКА \(A = (Q, \Sigma, \delta, q_0, F)\) и некоторое слово \(a = a_1 a_2 \ldots a_n\), где \(a_i \in \Sigma\). ДКА начинает работу с состояния \(q_0\). Для того, чтобы определить, в какое состояние перейти автомату после обработки первой буквы, запускается функция перехода \(\delta(q_0, a_1)\). Пусть \(\delta(q_0, a_1) = q_1\). Далее для символа \(a_2\) находится \(\delta(q_1, a_2) = q_2\). Аналогично находятся \(q_3, q_4, \ldots, q_n\), где \(q_i = \delta(q_{i - 1}, a_i)\) для \(i = 1, 2, \ldots, n\). Если \(q_n \in F\), то говорят, что ДКА \textbf{допускает} слово \(a\). + + Состояние, в котором находится автомат \(A\) с начальным состоянием \(q_A\) после обработки слова \(w\), будем обозначать через \(\hat{\delta}_A(q_A, w)\). + + \subsection{Язык ДКА и регулярные языки.} + \text{Языком} ДКА \(A\) называют множество всех слов, которые допускает \(A\). Язык ДКА \(A\) принято обозначать за \(L(A)\). + + Пусть есть некоторый язык \(L\). Если вышло так, что данный язык является языком для какого-то ДКА, то есть \(L = L(A)\) для какого-то ДКА \(A\), то \(L\) называют \textbf{регулярным языком}. + + \subsection{Регулярность объединения регулярных языков.} + Докажем следующее утверждение: + \begin{theorem} + Пусть \(A\) и \(B\)~--- регулярные языки над алфавитом \(\Sigma\). Тогда \(A \cup B\)~--- регулярный язык. + \end{theorem} + \begin{proof} + Пусть \(L = (Q_L, \Sigma, \delta_L, q_L, F_L)\) и \(M = (Q_M, \Sigma, \delta_M, q_M, F_M)\)~--- ДКА, соответствующие регулярным языкам \(A\) и \(B\) соответственно. + + Для \(A \cup B\) мы построим автомат \(T\), который одновременно моделирует и \(L\), и \(M\). Состояниями автомата \(T\) будут пары состояний, первое из которых принадлежит \(L\), а второе~--- \(M\). Чтобы построить переходы автомата \(T\), предположим, что он находится в состоянии \((p, q)\), где \(p\)~--- состояние автомата \(L\), а \(q\)~--- состояние \(M\). Нам известно, как ведет себя автомат \(L\), получая на входе символ \(a\). Пусть он переходит в состояние \(s\). Также допустим, что автомат \(M\) по входному символу \(a\) совершает переход в состояние \(t\). Тогда следующим состоянием автомата \(T\) будет \((s, t)\). Таким образом, автомат \(T\) моделирует работу автоматов \(L\) и \(M\). + + Начальным состоянием автомата \(T\) положим пару \((q_L, q_M)\). Теперь рассмотрим, какие состояния автомата должны быть заключительными. Такими будут все состояния \((p, q)\), что либо \(p \in F_L\), либо \(q \in F_M\). Тогда положим \[F_T = (Q_L \times Q_M) \setminus ((Q_L \setminus F_l) \times (Q_M \setminus F_M)).\] + Данное множество содержит все пары состояний, кроме тех, в которых оба состояния незаключительны. + + Тогда итоговый автомат будет определяться так: + \[T = ((Q_L \times Q_M), \Sigma, \delta, (q_L, q_M), F_T).\] + Теперь докажем, что \(L(T) = A \cup B\). Для этого можно показать по индукции, что \[\hat{\delta}_T((q_L, q_M), w) = (\hat{\delta}_L(q_L, w), \hat{\delta}_M(q_M, w)).\] + Тогда автомат \(T\) допускает слово \(w\) тогда и только тогда, когда его допускает хотя бы один из автоматов \(L\) или \(M\). Следовательно, \(L(T) = A \cup B\). + \end{proof} + + \subsection{Минимизация ДКА.} + Перед тем, как вводить алгоритм минимизации, введём понятие эквивалентности состояний: + + Говорят, что состояние \(p\) \textbf{эквивалентно} состоянию \(q\), если для любого слова \(w\) \(\hat{\delta}(p, w)\) и \(\hat{\delta}(q, w)\) являются одновременно заключительными или не заключительными. + + \begin{theorem} + Эквивалентность состояний является отношением эквивалентности. + \end{theorem} + \begin{proof} + Для доказательства проверим три основных свойства: + \begin{itemize} + \item Рефлексивность: \(p\) эквивалентно \(p\). Очевидно, что для любого слова \(\hat{\delta}(p, w) = \hat{\delta}(p, w)\). + \item Коммутативность: если \(p\) эквивалентно \(q\), то \(q\) эквивалентно \(p\). Так же очевидно. + \item Транзитивность: если \(p\) эквивалентно \(q\) и \(q\) эквивалентно \(r\), то \(p\) эквивалентно \(r\). Докажем от противного. Пусть это не так. Тогда найдётся слово \(w\) такое, что \(\hat{\delta}(p, w)\) заключительно, а \(\hat{\delta}(r, w)\)~--- нет. Рассмотрением заключительности \(\hat{\delta}(q, w)\) приходим к противоречию с условием. Тогда \(p\) эквивалентно \(r\). + \end{itemize} + \end{proof} + + Теперь введём понятие минимального ДКА. + + \textbf{Минимальный ДКА} для автомата \(A\)~--- это ДКА \(A'\) такое, что \(L(A) = L(A')\) и количество состояний \(A'\) минимально. + + Суть алгоритма минимизации состоит в том, что множество состояний разбивается на классы эквивалентности, которые и служат новыми состояниями. При этом получается так, что для любого символа значения функции перехода для состояния из одного класса переходит в какой-то один класс (иначе бы нарушалась транзитивность~--- проверьте!). Теперь запишем пошаговый псевдокод для данного алгоритма: + + Для реализации алгоритма нам потребуются очередь \(Q\) и таблица marked размером \(n \times n\), где \(n\) — количество состояний автомата. Будем помечать в таблице пары неэквивалентных состояний и класть их в очередь. + + В исходном автомате мы имели \(n\) состояний с номерами от 0 до \(n - 1\). Удобно будет увеличить все номера состояний на 1 и добавить в исходный автомат вершину 0, в которую будут вести по умолчанию все переходы по всем символам, которых ещё не было в исходном автомате, тем самым увеличив количество состояний \(n\) на 1. Теперь стартовое состояние будет иметь номер 1. + \begin{enumerate} + \item Построим множество \(\delta^{-1}\), в котором будем хранить списки обратных ребер. + + \item Найдем все достижимые состояния из стартового. Например, с помощью обхода в глубину. + + \item Добавим в очередь \(Q\) пары состояний, различимых строкой \(\varepsilon\), и пометим их в таблице. + + \item Для каждой непомеченной пары \(\langle u, v \rangle\) нужно проверить, что \(\exists\,c \in \Sigma\) такой, что пара \(\langle \delta(u, c), \delta(v, c) \rangle\) помечена. Тогда мы можем пометить пару \(\langle u, v \rangle\). + + \item Пока \(Q\) не станет пуста, будем делать следующее: + \begin{enumerate} + \item Извлечем пару \(\langle u, v \rangle\) из \(Q\). + + \item Для каждого символа \(c \in \Sigma\) перебираем пары состояний \(\langle \delta^{-1}(u, c), \delta^{-1}(v,c) \rangle\). Если находим ещё непомеченную пару, то помечаем её в таблице и кладем в очередь. + \end{enumerate} + В момент опустошения очереди пары состояний, не помеченные в таблице, являются парами эквивалентных состояний. + + \item За один проход по таблице разбиваем пары эквивалентных состояний на классы эквивалентности. + + \item За один проход по списку классов эквивалентности выделяем список новых состояний и переходов между ними. + \end{enumerate} + + Стартовым состоянием полученного автомата будет состояние, соответствующее классу эквивалентности, содержащему стартовое состояние исходного автомата. + Терминальными состояниями полученного автомата будут состояния, соответствующие классам эквивалентности, содержащим терминальные состояния исходного автомата. + + Теперь докажем, что полученный автомат и вправду минимален. + + \begin{theorem} + Полученный после алгоритма минимизации ДКА \(A_{min}\) действительно является минимальным и единственным с точностью до изоморфизма. + \end{theorem} + \begin{proof} + Допустим, что есть автомат \(A'\), в котором меньше состояний, чем в \(A_{min}\), но при этом \(L(A') = L(A_{min})\). Заметим, что их начальные состояния (назовем их \(s\) и \(s'\)) эквивалентны. + + Рассмотрим некоторое слово \(a = a_1 a_2 \ldots a_n\). Положим, что \(\hat{\delta}(s, a) = u\), а \(\hat{\delta}(s', a) = u'\). Покажем, что \(u\) и \(u'\) эквивалентны. + + Пусть \(\hat{\delta}(s, a_1) = l_1\), а \(\hat{\delta}(s', a_1) = l'_1\). Из эквивалентности \(s\) и \(s'\) следует то, что \(l_1\) и \(l'_1\) одинаково заключительно или не заключительно. Тогда они эквивалентны. Продолжая цепочку \((s, s') \to (l_1, l'_1) \to (l_2, l'_2) \to \ldots (u, u')\), по транзитивности получаем, что \(u\) и \(u'\) эквивалентны. Следовательно, для каждого состояния из \(A_{min}\) есть эквивалентное в \(A'\). + + Так как в \(A'\) меньше состояний, то какие-то два состояния из \(A_{min}\) эквивалетны какому-то одному состоянию из \(A'\). Но по транзитивности эти два состояния будут эквивалентны, что противоречит определению минимального ДКА. Тогда каждому состоянию из \(A'\) соответствует единственное состояние из \(A_{min}\). Тогда их размеры совпадают и они изоморфны. + \end{proof} +\newpage +\section{Регулярные выражения. Недетерминированные конечные автоматы. Замкнутость регулярных языков относительно регулярных операций. Построение конечного автомата по регулярному выражению.} + \subsection{Регулярные выражения.} + \textbf{Регулярным выражение} \(R\) над алфавитом \(\Sigma\)~--- некоторый объект, удовлетворяющий следующим аксиомам: + \begin{itemize} + \item \(\varnothing\)~--- регулярное выражение для пустого языка. + \item \(\varepsilon\)~--- регулярное выражение для языка \(\{\varepsilon\}\). + \item \(a\)~--- регулярное выражение для языка \(\{a\}, a \in \Sigma\). + \item Конкатенация регулярных выражений \(R_1\) и \(R_2\)~--- регулярное выражение \(R_1R_2\). + \item Объединение регулярных выражений \(R_1\) и \(R_2\)~--- регулярное выражение \(R_1 \cup R_2\). + \item Итерация (применение звезды Клини) регулярного выражения \(R\)~--- регулярное выражение \(R^*\). + \end{itemize} + \subsection{Недетерменированный конечный автомат.} + \textbf{Недетерменированный конечный автомат} определяется так же, как и детерменированный, но с одним отличием~--- его функция перехода в качестве результата возвращает несколько состояний (может, и одно). Формально, для НКА \(\delta : Q \times \Sigma \to 2^{Q}\). Аналогично вводится понятие языка НКА \(A\) \(L(A)\). + + \begin{theorem} + Для любого НКА можно построить ДКА, который будет распознавать тот же язык. + \end{theorem} + \begin{proof} + Для построения нужного ДКА воспользуемся важной конструкцией, называемой \textit{конструкцией подмножеств}, так как она включает в себя построение всех подмножеств множества состояний НКА. Вообще, в доказательствах утверждений об автоматах часто по одному автомату строится другой. Для нас конструкция подмножеств важна в качестве примера того, как один автомат описывается в терминах состояний и переходов другого автомата без знания специфики последнего. + + Построение подмножеств начинается, исходя из НКА \(N = (Q_N, \Sigma, \delta_N, q_N, F_N)\). Целью является описание ДКА \(D = (Q_D, \Sigma, \delta_D, {q_N}, F_D)\), у которого \(L(N) = L(D)\). Отметим, что входные алфавиты этих двух автоматов совпадают, а начальное состояние \(D\) есть множество, содержащее только начальное состояние \(N\). Остальные компоненты \(D\) строятся следующим образом. + \begin{itemize} + \item \(Q_D = 2^{Q_N}\) (\textit{булеан} \(Q_N\)). Отметим, что если \(Q_N\) содержит \(n\) состояний, то \(Q_D\) будет содержать уже \(2^n\) состояний. Однако часто не все они достижимы из начального состояния автомата \(D\). Такие недостижимые состояния можно ``отбросить'', поэтому фактически число состояний \(D\) может быть гораздо меньше, чем \(2^n\). + \item \(F_D\) есть множество подмножеств \(S\) множества \(Q_N\), для которых \(F_N \cap S \neq \varnothing\), т.е. \(F_D\) состоит из всех множеств состояний \(N\), содержащих хотя бы одно допускающее состояние \(N\). + \item Для каждого множества \(S \subseteq Q_N\) и каждого входного символа \(a \in \Sigma\) положим + \[\delta_D(S, a) = \bigcup_{p \in S} \delta_N(p, a)\] + Таким образом, для того, чтобы найти \(\delta_D(S, a)\), мы рассматриваем все состояния \(p\) из \(S\), ищем те состояния \(N\), в которые можно попасть из состояния \(p\) по символу \(a\), а затем берем объединение множеств найденных состояний по всем состояниям \(p\). + \end{itemize} + + Теперь докажем, что \(L(D) = L(N)\). Для этого докажем следующую лемму: + \begin{lemma} + Для любого слова \(w\) \(\hat{\delta}_D({q_N}, w) = \hat{\delta}_N(q_N, w)\). + \end{lemma} + \begin{proof} + По индукции. Заметим, что как для одной, так и для другой функции \(\delta\), значением является множество состояний из \(Q_N\). При этом \(\hat{\delta}_D\) интерпретирует его как состояние из \(Q_D\) (являющегося булеаном \(Q_N\)), а \(\hat{\delta}_N\)~--- как подмножество \(Q_N\). + + \textbf{Базис.} Пусть \(|w| = 0\), что равносильно \(w = \varepsilon\). Тогда из определения \(\hat{\delta}\) для \(N\) и \(D\) следует, что \(\hat{\delta}_D({q_N}, w) = \hat{\delta}_N(q_N, w) = \{q_N\}\). + + \textbf{Индукционный переход.} Пусть \(w\) имеет длину \(n + 1\), и предположим, что утверждение справедливо для цепочки длины \(n\). Разобьем \(w\) на \(w = xa\), где \(a\)~--- последний символ цепочки \(w\), а \(x\)~--- слово длины \(n\). Согласно гипотезе индукции \(\hat{\delta}_D({q_N}, x) = \hat{\delta}_N(q_N, x) = \{p_1, p_2, \ldots, p_k\}\). + + С одной стороны, по определению НКА: + \[\hat{\delta}_N(q_N, w) = \bigcup_{p = 1}^{k} \delta_N(p_i, a)\]. + С другой стороны, из конструкции подмножеств следует, что + \[\hat{\delta}_D(\{q_N\}, w) = \delta_D(\hat{\delta}_D(\{q_N\}, x), a) = \delta_D(\{p_1, p_2, \ldots, p_k\}, a) = \bigcup_{p = 1}^{k} \delta_N(p_i, a)\] + Тогда \(\hat{\delta}_D({q_N}, w) = \hat{\delta}_N(q_N, w)\), что и требовалось доказать. + \end{proof} + + Из этой леммы и того факта, что и \(\hat{\delta}_D(\{q_N\}, w)\), и \(\hat{\delta}_N(q_N, w)\) являются допускающими только тогда, когда в данных множествах есть состояния из \(F_N\), следует то, что \(L(N) = L(D)\). + \end{proof} + + \subsection{\(\varepsilon\)-НКА и их эквивалентность НКА.} + \textbf{\(\varepsilon\)-НКА} называют набор \(A = (Q, \Sigma,\delta, q_0, F)\), где все компоненты имеют тот же смысл, что и для НКА, но \(\delta : Q \times (\Sigma \cup \{\varepsilon\}) \to 2^Q\). + + \textbf{\(\varepsilon\)-замыканием} называют построение по автомату с \(\varepsilon\)-переходами эквивалентного ему автомата без \(\varepsilon\)-переходов. + + Рассмотрим автомат, в котором переходы осуществляются по строкам. Это переходы вида \((p, \alpha\beta) \to (q, \beta)\), где \(\alpha,\beta\)~--- строки, а \(p, q\)~--- состояния. + + \begin{theorem} + Автоматы с переходами по строкам эквивалентны недетерминированным конечным автоматам. + \end{theorem} + \begin{proof} + Рассмотрим все переходы. Переход идёт не по пустой строке. Тогда заменим переходы по таким строкам на последовательности переходов по символам. Теперь начнём строить \(\varepsilon\)-замыкание \(\varepsilon\)-НКА \(A\). Алгоритм имеет следующий вид: + \begin{itemize} + \item Пусть \(B\)~--- подграф \(A\), в котором есть только \(\varepsilon\)-переходы. Сделаем транзитивное замыкание графа \(B\) (то есть соединим все вершины, между которыми есть путь, ребром). Таким образом, получим из автомата \(A\) новый автомат \(A_1\), который допускает тот же язык. Заметим, что если \(A_1\) допускает слово \(x\), то он допускает \(x\), не совершая двух \(\varepsilon\)-переходов подряд. + \item Пусть в \(A_1\) есть \(\varepsilon\)-переход из состояния \(u\) в состояние \(v\), причем \(v\)~--- допускающее. Тогда, если текущее состояние \(u\) и строка закончилась, то ее можно допустить. Во всех таких случаях сделаем \(u\) допускающим. Получим автомат \(A_2\), обладающий тем же свойством, что и \(A_1\), а также не совершающий \(\varepsilon\)-переходов в качестве последнего перехода. + \item Во всех случаях, когда \(\delta(u,\varepsilon)=v\), \(\delta(v,c)=w\), добавим переход \(\delta(u,c)=w\). Заметим, что если полученный автомат \(A_3\) допускает \(x\), то он допускает \(x\), не совершая \(\varepsilon\)-переходов. + \item Из предыдущего замечания следует, что если теперь устранить \(\varepsilon\)-переходы, то допускаемый язык не изменится. Уберем из \(A_3\) все \(\varepsilon\)-переходы. + \end{itemize} + В итоге получаем НКА, эквивалентный \(A\). + \end{proof} + Отсюда получаем, что + \begin{center} + \(\varepsilon\)-НКА \(\iff\) НКА \(\iff\) ДКА + \end{center} + + \subsection{Замкнутость регулярных языков относительно регулярных операций. } + \textbf{Регулярными операциями} называют следующие операции над регулярными языками \(L_1\) и \(L_2\) над алфавитом \(\Sigma\): + \begin{itemize} + \item Объединение~--- \(L_1 \cup L_2\). + \item Пересечение~--- \(L_1 \cap L_2\). + \item Дополнение~--- \(\overline{L_1} = \Sigma^* \setminus L_1\). + \item Обращение~--- \(L_1^R = \{w^R \mid w \in L_1\}\). + \item Конкатенация~--- \(L_1 \circ L_2 = \{vw \mid v \in L_1, w \in L_2\}\). + \item Замыкание Клини~--- \(L_1^*\) + \end{itemize} + Теперь докажем важную теорему: + \begin{theorem} + Регулярные языки замкнуты относительно регулярных операций. + \end{theorem} + \begin{proof} + Регулярность объединения была доаказана ранее. Регулярность пересечения \(T = L \cup M\) доказывается аналогично (построением произведения автоматов), но в данном случае \(F_T = F_L \times F_M\). + + Докажем регулярность дополнения языка \(L\). Пусть \(L = L(A)\) для какого-то ДКА \(A = (Q, \Sigma, \delta, q_0, F)\). Построим автомат \(A' = (Q, \Sigma, \delta, q_0, Q \setminus F)\). Заметим, что автомат \(A'\) допустит слово \(w\) тогда и только тогда, когда его не допустит автомат \(A\). Тогда \(\overline{L} = L(A')\). + + Докажем регулярность обращения языка \(L\). Пусть \(L = L(A)\) для некоторого ДКА \(A\). Тогда построим эквивалентный ему \(\varepsilon\)-НКА \(B\), в котором одно допустимое состояние. Это всегда возможно, так как если их несколько, то добавим новое состояние, в которое будут переходить допускающие состояния, после чего сделаем допускающим только новое состояние. По данному автомату построим \(\varepsilon\)-НКА \(С\), для которого верно следующее: + \begin{itemize} + \item Если \(\delta_B(p, a) = q\), то \(\delta_C(q, a) = p\). + \item Начальным состоянием для \(C\) является допускающее состояние \(B\). + \item Единственным допускающим состоянием \(C\) является начальное состояние \(B\). + \end{itemize} + Очевидно, что \(C\) распознает слово \(w\) тогда и только тогда, когда \(B\) распознает слово \(w^R\). Тогда построим эквивалентный ДКА \(D\) по \(C\). Следовательно, \(L^R = L(D)\). + + Теперь докажем регулярность конкатенации языков \(L_1\) и \(L_2\) над алфавитом \(\Sigma\). Пусть \(L_1 = L(A)\) и \(L_2 = L(B)\) для \(\varepsilon\)-НКА \(A\) и \(B\) с единственным допустимым состоянием. При этом положим, что \(p_A\) и \(p_B\)~--- начальные состояния, а \(q_A\) и \(q_B\)~--- допустимые. Тогда построим \(\varepsilon\)-НКА \(C\), как \(A\), соединенный с \(B\) ребром между \(q_A\) и \(p_B\), помеченным \(\varepsilon\). При этом положим, что начальным состоянием будет \(p_A\), а допустимым~--- \(q_B\). + + Покажем, что любое слово из \(L_1 \circ L_2\) допустимо \(C\). Пусть \(w \in L_1 \circ L_2\). Тогда \(w = xy\), где \(x \in L_1, y \in L_2\). Тогда \(C\) отработает следующим образом: + \begin{itemize} + \item Так как первая часть автомата~--- это автомат \(A\), то \(\hat{\delta}_C(p_A, xy) = \hat{\delta}_C(q_A, y)\). + \item Так как \(y = \varepsilon y\), то \(\hat{\delta}_C(q_A, y) = \hat{\delta}_C(p_B, y)\). + \item Так как вторая часть автомата~--- это автомат \(B\), то \(\hat{\delta}_C(p_B, y) = q_B\). + \end{itemize} + Тогда \(\hat{\delta}_C(p_A, w)= q_B\). Это доказывает, что \(L_1 \circ L_2 = L(C)\). Тогда построим эквивалентный ему ДКА \(D\). Отсюда получаем, что \(L_1 \circ L_2 = L(D)\), то есть конкатенация регулярна. + + Осталось доказать регулярность итерации языка \(L\). Пусть \(L = L(A)\) для \(\varepsilon\)-НКА \(A\) с начальным состоянием \(q\), у которого одно допускающее состояние \(q\). Далее, построим \(\varepsilon\)-НКА \(A'\) следующим образом: это автомат \(A\), в котором проведено ребро из \(q\) в \(p\), помеченное \(\varepsilon\). Далее, положим, что \(q\)~--- начальное и единственное допускающее состояние для \(A'\). Легко показать, что \(L^* = L(A')\). Тогда построим эквивалентный ему ДКА \(B\). Тогда \(L^* = L(B)\), что доказывает регулярность итерации. + \end{proof} + + \subsection{Построение конечного автомата по регулярному выражению.} + Докажем следующее утверждение: + \begin{theorem} + Любой язык, определяемый регулярным выражением \(R\), можно задать некоторым конечным автоматом \(D\). + \end{theorem} + \begin{proof} + Докажем это утверждение по структурной индукции по выражению \(R\), следуя рекурсивному определению. + + \textbf{Базис.} В данном случае есть три варианта: + \begin{itemize} + \item \(R = \varnothing \implies L(R) = \varnothing\). Данному языку соответствует любой автомат, у которого нет допускающих состояний. + + \item \(R = \varepsilon \implies L(R) = \{\varepsilon\}\). Данному языку соответствует автомат \(A\), содержащий одно состояние \(p\), которое будет начальным и допускающим; при этом функция перехода не определена ни для какого символа. + + \item \(R = a \implies L(R) = \{a\}\). Данному языку соответствует автомат \(A\), задаваемый следующим образом: два состояния~--- начальное \(p\) и допускающее \(q\), функция перехода определена только для \((p, a)\), причём \(\delta(p, a) = q\). + \end{itemize} + + \textbf{Индукционный переход.} Здесь есть три случая, которые рассматриваются абсолютно аналогично: объединение, конкатенация и итерация. Рассмотрим первый случай. Пусть \(R = R_1 \cup R_2\). Так как по предположению индукции \(L(R_1)\) и \(L(R_2)\) регулярны, то \(L(R) = L_1 \circ L_2\) также регулярно, так как регулярные языки замкнуты относительно объединения. Тогда \(L(R) = L(D)\) для некоторого конечного автомата \(D\). + \end{proof} +\newpage +\section{Эквивалентность регулярных выражений и конечных автоматов. Нерегулярные языки. Лемма о накачке.} + \subsection{Эквивалентность регулярных выражений и конечных автоматов.} + Ранее мы доказали, что каждому регулярному выражению можно сопоставить некоторый конечный автомат, язык которого будет таким же. Теперь докажем обратное утверждение: + \begin{theorem} + Если \(L = L(A)\) для некоторого ДКА \(A\), то существует регулярное выражение \(R\), причем \(L = L(R)\). + \end{theorem} + \begin{proof} + Предположим, что \(\{1, 2, ..., n\}\)~--- множество состояний автомата \(A\) для некоторого натурального \(n\). Независимо от того, какими эти состояния являются на самом деле, их конечное число \(n\), поэтому их можно переименовать, используя первые \(n\) положительных целых чисел. Нашей первой и наиболее сложной задачей является построение набора регулярных выражений, которые описывают постепенно расширяющиеся множества путей в диаграмме переходов автомата \(A\). + + Обозначим через \(R^{(k)}_{ij}\) регулярное выражение, язык которого состоит из множества меток \(w\) путей, ведущих от состояния \(i\) к состоянию \(j\) автомата \(A\) и не имеющих промежуточных состояний с номерами больше \(k\). Заметим, что начальная и конечная точки пути не являются ``промежуточными'', поэтому мы не требуем, чтобы \(i\) и/или \(j\) были меньше или равны \(k\). + + Для построения выражения \(R^{(k)}_{ij}\) используют следующее индуктивное определение, которое начинается с \(k = 0\) и достигает \(k = n\). Заметим, что при \(k = n\) пути ничем не ограничиваются, поскольку нет состояний с номерами, которые больше, чем \(n\). + + \textbf{Базис.} В качестве базиса примем \(k = 0\). Поскольку все состояния пронумерованы от 1 и далее, то это условие означает, что у пути вообще нет промежуточных состояний. Существует только два вида путей, удовлетворяющих такому условию. + \begin{enumerate} + \item Дуга, ведущая от вершины (состояния) \(i\) к вершине \(j\). + \item Путь длины 0, состоящий лишь из некоторой вершины \(i\). + \end{enumerate} + Если \(i \neq j\), то возможен только первый случай. Необходимо проанализировать данный ДКА \(A\) и найти такие входные символы \(a\), по которым есть переход из состояния \(j\) в состояние \(j\): + \begin{itemize} + \item Если таких символов нет, то \(R^{(0)}_{ij} = \varnothing\). + + \item Если же из \(i\) в \(j\) можно перейти по символам \(a_1, a_2, \ldots, a_n\), то \(R^{(0)}_{ij} = a_1 \cup a_2 \cup \ldots \cup a_n\). + \end{itemize} + + В то же время, если \(i = j\), то допустимыми путями являются путь длины 0 и все петли, которые начинаются и заканчиваются в состоянии \(i\). Путь длины 0 может быть представлен регулярным выражением \(\varepsilon\), потому что вдоль этого пути нет символов. Следовательно, добавляем \(\varepsilon\) к выражениям, полученным выше. + + \textbf{Индукционный переход.} Предположим, что существует путь из состояния \(i\) в состояние \(j\), не проходящий через состояния с номерами, которые больше, чем \(k\). Необходимо рассмотреть две ситуации. + \begin{itemize} + \item Путь вообще не проходит через состояние \(k\). В этом случае метка пути принадлежит языку \(R^{(k - 1)}_{ij}\). + + \item Пусть путь проходит через состояние \(k\) хотя бы один раз. Тогда путь можно представить в виде: + \[i \to \underbrace{k \to k \to \ldots \to k}_{\mathclap{\text{0 или больше таких переходов}}} \to j,\] + при этом на каждом таком участке пути не посещается вершина \(k\). Множество меток для всех путей такого вида может быть представлено регулярным выражением \(R^{(k - 1)}_{ik}(R^{(k - 1)}_{kk})^*R^{(k - 1)}_{kj}\). + \end{itemize} + После объединения выражений для путей двух рассмотренных выше типов получим следующее выражение для меток всех путей, ведущих из состояния \(i\) в состояние \(j\), которые не проходят через состояния с номерами, которые больше, чем \(k\): + \[R^{(k)}_{ij} = R^{(k - 1)}_{ij} \cup R^{(k - 1)}_{ik}(R^{(k - 1)}_{kk})^*R^{(k - 1)}_{kj}.\] + Поскольку данные выражения строятся в порядке возрастания верхнего индекса, можно построить любое выражение \(R^{(k)}_{ij}\), так как оно зависит только от выражений с меньшими значениями верхнего индекса. + + В итоге получим \(R^{(n)}_{ij}\) для всех \(i\) и \(j\). Можно предположить, что состояние 1 является начальным, а множество допускающих (заключительных) состояний может быть любым. Тогда регулярным выражением для языка, допускаемого данным автоматом, будет сумма (объединение) всех тех выражений \(R^{(n)}_{1j}\) , в которых состояние \(j\) является допускающим. + \end{proof} + В итоге получаем следующее полезное свойство: + \begin{center} + \(\varepsilon\)-НКА \(\iff\) НКА \(\iff\) ДКА \(\iff\) регулярные выражения + \end{center} + + \subsection{Нерегулярные языки. Лемма о накачке.} + \textbf{Нерегулярный язык}~--- язык, не являющийся регулярным. + + Основные примеры нерегулярных языков: + \begin{itemize} + \item \(L_{01} = \{0^n1^n \mid n \geq 0\}\). + \item множество цепочек, состоящих из ``сбалансированных'' скобок ``('' и ``)'', которые встречаются в правильно построенном арифметическом выражении. + \item \(L_p = \{1^p \mid p\text{~--- простое}\}\). + \end{itemize} + + Как же доказывать то, что некоторый язык не является регулярным? Тут на помощь приходит \textit{лемма о накачке}. Сформулируем и докажем её. + \begin{pumping-lemma} + Пусть \(L\)~--- регулярный язык. Тогда существует константа \(n\) (зависящая от \(L\)), для которой каждую цепочку \(w\) из языка \(L\), удовлетворяющую неравенству \(|w| \geqslant n\), можно разбить на три цепочки \(w = xyz\) так, что выполняются следующие условия: + \begin{itemize} + \item \(y \neq \varepsilon\). + \item \(|xy| \leqslant n\). + \item Для любого \(k \geqslant 0\) цепочка \(xy^kz\) лежит в \(L\). + \end{itemize} + \end{pumping-lemma} + Это значит, что всегда можно найти такую цепочку \(y\) недалеко от начала цепочки \(w\), которую можно ``накачать''. Таким образом, если цепочку \(y\) повторить любое число раз или удалить (при \(k = 0\)), то результирующая цепочка все равно будет принадлежать языку \(L\). + + Теперь приступим к докательству. + \begin{proof} + Пусть \(L\)~--- регулярный язык. Тогда \(L = L(A)\) для некоторого ДКА \(A\). Пусть \(A\) имеет \(n\) состояний. Рассмотрим произвольную цепочку \(w\) длиной не менее \(n\), скажем, \(w = a_1 a_2 \ldots a_m\), где \(m \geqslant n\) и для каждого \(i\) \(a_i\)~--- входной символ. Для \(i= 0, 1, 2, ...,n\) определим состояние \(p_i\) как \(\hat{\delta}(q_0, a_1 a_2 \ldots a_i)\). Заметим, что \(p_0 = q_0\). + + Рассмотрим \(n + 1\) состояний \(p_i\) при \(i = 0, 1, 2, ..., n\). Поскольку автомат \(A\) имеет \(n\) различных состояний, то по принципу Дирихле найдутся два разных целых числа \(i\) и \(j\) \((0 \leqslant i < j \leqslant n)\), при которых \(p_i = p_j\). Теперь разобьем цепочку \(w\) на \(xyz\): + \[w = \underbrace{a_1 a_2 \ldots a_i}_{x}\underbrace{a_{i + 1} a_{i + 2} \ldots a_j}_{y}\underbrace{a_{j + 1} a_{j + 2} \ldots a_m}_{z}\] + Таким образом, \(x\) приводит в состояние \(p_i\), \(y\)~--- из \(p_i\) обратно в \(p_i\) (так как \(p_i = p_j\)), а \(z\)~--- это остаток цепочки \(w\). Заметим, что цепочка x может быть пустой при \(i = 0\), а \(z\)~--- при \(j = n = m\). Однако цепочка \(y\) не может быть пустой, поскольку \(i\) строго меньше \(j\). + + Теперь посмотрим, что происходит, когда на вход автомата A поступает цепочка \(xy^kz\) для любого \(k \geqslant 0\). При \(k = 0\) автомат переходит из начального состояния \(q_0\) (которое есть также \(p_0\)) в \(p_i\), прочитав \(x\). Поскольку \(p_i = p_j\), то \(z\) переводит \(A\) из \(p_i\) в допускающее состояние. + + Если \(k > 0\), то по \(x\) автомат \(A\) переходит из \(q_0\) в \(p_i\), затем, читая \(y^k\), \(k\) раз циклически проходит через \(p_i\), и, наконец, по \(z\) переходит в допускающее состояние. Таким образом, для любого \(k \geqslant 0\) цепочка \(xy^kz\) также допускается автоматом \(A\), т.е. принадлежит языку \(L\). + \end{proof} + + Теперь рассмотрим пример того, как используется лемма о накачке для доказательства нерегулярности языка. + \begin{theorem} + Язык \(L_{01}\) нерегулярен. + \end{theorem} + \begin{proof} + Предположим, что он регулярен. Тогда рассмотрим некоторое достаточно длинное слово \(w\). По лемме о накачке \(w = xyz\), где \(y \neq \varepsilon\), \(|xy| \leqslant n\) и для любого \(k \geqslant 0\) цепочка \(xy^kz\) лежит в \(L\). Покажем, что для данного языка нарушается первое условие леммы. + + Заметим, что \(y = 0^k1^l\) для каких-то \(k, l \leqslant n\). Покажем, что \(k = l = 0\). Для этого рассмотрим три случая: + \begin{itemize} + \item Пусть \(k \neq 0\) и \(l \neq 0\). Тогда слово \(xyyz\) будет иметь вид \(0\ldots01\ldots10\ldots01\ldots1\). Но такое слово не лежит в \(L\). + \item Пусть \(k = 0\), а \(l \neq 0\). Тогда слово \(xyyz\) будет иметь вид \(0\ldots01\ldots1\), где \(n\) нулей и \(n + l\) единиц. Такое слово не лежит в \(L\). + \item Случай, когда \(l = 0\), а \(k \neq 0\), рассматривается аналогично. + \end{itemize} + Тогда получаем, что \(y = \varepsilon\). Противоречие с условием леммы о накачке. Тогда язык \(L_{01}\) нерегулярен. + \end{proof} +\newpage + \section{Контекстно-свободные грамматики. Автоматы с магазинной памятью.} + \subsection{Контекстно-свободные грамматики.} + Описание языка с помощью грамматики состоит из следующих четырех важных компонентов. + \begin{itemize} + \item Есть конечное множество символов, из которых состоят цепочки определяемого языка. Его символы называются \textbf{терминальными}, или \textbf{терминалами}. + + \item Существует конечное множество переменных, называемых иногда также \textbf{нетерминалами}, или \textbf{синтаксическими категориями}. Каждая переменная представляет язык, т.е. множество цепочек. + + \item Одна из переменных представляет определяемый язык; она называется \textbf{стартовым символом}. Другие переменные представляют дополнительные классы цепочек, которые помогают определить язык, заданный стартовым символом. + + \item Имеется конечное множество \textbf{продукций}, или \textbf{правил вывода}, которые представляют рекурсивное определение языка. Каждая продукция состоит из следующих частей: + \begin{itemize} + \item Переменная, (частично) определяемая продукцией. Эта переменная часто называется \textbf{головой продукции}. + \item \textbf{Символ продукции} \(\to\). + \item Конечная цепочка, состоящая из терминалов и переменных, возможно, пустая. Она называется \textbf{телом продукции} и представляет способ образования цепочек языка, обозначаемого переменной в голове. По этому способу мы оставляем терминалы неизменными и вместо каждой переменной в теле подставляем любую цепочку, про которую известно, что она принадлежит языку этой переменной. + \end{itemize} + \end{itemize} + Описанные четыре компонента образуют \textbf{контекстно-свободную грамматику}, или \textbf{КС-грамматику}, или просто \textbf{грамматику}, или \textbf{КСГ}. Мы будем представлять КС-грамматику \(G\) ее четырьмя компонентами в виде \(G = (V, T, P, S)\), где \(V\)~--- множество переменных, \(T\)~--- терминалов, \(P\)~--- множество продукций, \(S\)~--- стартовый символ. + + Примеры КСГ: + \begin{itemize} + \item Пусть \(L_{pal}\)~--- язык, который содержит все палиндромы из 0 и 1. Можно показать, что данному языку соответствует грамматика \(G_{pal} = (\{P\}, \{0, 1\}, A, P)\), где \(A\) задаётся следующими продукциями: + \[\begin{array}{c} + P \to \varepsilon \\ + P \to 0 \\ + P \to 1 \\ + P \to 0P0 \\ + P \to 1P1 + \end{array}\] + \end{itemize} + + Пусть \(G = (V, T, P, S)\)~--- КС-грамматика. Пусть \(\alpha A \beta\)~--- цепочка из терминалов и переменных, где \(A\)~--- переменная. Таким образом, \(\alpha\) и \(\beta\)~--- цепочки из \((V \cup T)^*\), \(A \in V\). Пусть \(A \to \gamma\)~--- продукция из \(G\). Тогда мы говорим, что \(\alpha A \beta\) \textbf{порождает} \(\alpha \gamma \beta\) в грамматике \(G\). Принятое обозначение: \(\alpha A \beta \stackrel[G]{}{\implies} \alpha \gamma \beta\). Если же КСГ \(G\) подразумевается, то пишут, что \(\alpha A \beta \implies \alpha \gamma \beta\). Заметим, что один шаг порождения заменяет любую переменную в цепочке телом одной из ее продукций. + + Для представления нуля, одного или нескольких шагов порождения можно расширить отношение \(\implies\) подобно тому, как функция переходов \(\delta\) расширялась до \(\hat{\delta}\). Для обозначения нуля или нескольких шагов порождения используется символ \(\stackrel[G]{*}{\implies}\). + + Для ограничения числа выборов в процессе порождения цепочки полезно потребовать, чтобы на каждом шаге мы заменяли крайнюю слева переменную одним из тел ее продукций. Такое порождение называется \textbf{левым}, и для его указания используются отношения \(\stackrel[lm]{}{\implies}\) и \(\stackrel[lm]{*}{\implies}\). Если используемая грамматика \(G\) не очевидна из контекста, то ее имя \(G\) также добавляется внизу. Аналогично можно ввести понятие \textbf{правого} порождения. + + Любое порождение имеет эквивалентные левое порождение. Это означает, что если \(w\)~--- терминальная цепочка, а \(A\)~--- переменная, то \(A \stackrel[]{*}{\implies} w\) тогда и только тогда, когда \(A \stackrel[lm]{*}{\implies} w\). Данный факт оставим без доказательства. + + Если \(G = (V, T, P, S)\)~--- КС-грамматика, то \textbf{язык}, задаваемый грамматикой \(G\) обозначается \(L(G)\) и представляет собой множество терминальных цепочек, порождаемых из стартового символа: \[L(G) = \{w \in T^* \mid S \stackrel[G]{*}{\implies} w\}\] + + Будем рассматривать грамматику \(G = (V, T, P, S)\). \textbf{Деревья разбора} для \(G\)~--- это деревья со следующими свойствами: + \begin{itemize} + \item Каждый внутренний узел отмечен переменной из \(V\). + \item Каждый лист отмечен либо переменной, либо терминалом, либо \(\varepsilon\). При этом, если лист отмечен \(\varepsilon\), он должен быть единственным сыном своего родителя. + \item Если внутренний узел отмечен \(A\), и его сыновья отмечены слева направо \(X_1\), \(X_2\), \(\ldots\), \(X_k\), соответственно, то \(A \to X_1 X_2 \ldots X_k\) является продукцией в \(P\). Отметим, что \(X\) может быть \(\varepsilon\) лишь в одном случае~--- если он отмечает единственного сына, и \(A \to \varepsilon\)~--- продукция грамматики \(G\). + \end{itemize} + Построим пример. Пусть у нас есть грамматика палиндромов, и мы хотим построить дерево разбора, показывающее порождение \(P \stackrel[G_{pal}]{*}{\implies} 0110\). Тогда оно будет иметь следующий вид: + \[\Tree [.P 0 [.P 1 [.P \(\varepsilon\) ] 1 ] 0 ]\] + + \subsection{Автоматы с магазинной памятью.} + Магазинный автомат~--- это, по существу, недетерминированный конечный автомат с \(\varepsilon\)-переходами и одним дополнением~--- магазином, в котором хранится цепочка ``магазинных символов''. Присутствие магазина означает, что в отличие от конечного автомата магазинный автомат может ``помнить'' бесконечное количество информации. Однако в отличие от универсального компьютера, который также способен запоминать неограниченные объемы информации, магазинный автомат имеет доступ к информации в магазине только с одного его конца в соответствии с принципом ``последним пришел~--- первым ушел'' (то есть магазин представляет собой стек). + + Вследствие этого существуют языки, распознаваемые некоторой программой компьютера и нераспознаваемые ни одним магазинным автоматом. В действительности, магазинные автоматы распознают в точности КС-языки. Многие языки контекстно-свободны, включая, как мы видели, некоторые нерегулярные, однако существуют языки, которые просто описываются, но не являются контекстно-свободными. Примером такого языка является \(\{0^n1^n2^n \mid n \geqslant 1\}\), т.е. множество цепочек, состоящих из одинаковых групп символов 0, 1 и 2. + + Формальная запись \textbf{магазинного автомата} (МП-автомата) содержит семь компонентов и выглядит следующим образом: + \[P = (Q, \Sigma, \Gamma, \delta, q_0, Z_0, F)\] + Компоненты имеют такой смысл: + \begin{itemize} + \item \(Q\): конечное множество состояний, как и у конечного автомата. + \item \(\Sigma\): конечное множество входных символов, такое же, как у конечного автомата. + \item \(\Gamma\): конечный магазинный алфавит. Он не имеет конечноавтоматного аналога и является множеством символов, которые можно помещать в магазин. + \item \[\delta : Q \times (\Sigma \cup \{\varepsilon\}) \times \Gamma \to Q \times \Gamma\] Функция переходов. Как и у конечных автоматов, \(\delta\) управляет поведением автомата. Формально, аргументами \(\delta\) являются тройки \(\delta(q, a, X)\), в которых \(q\)~--- состояние из множества \(Q\), \(a\)~--- либо входной символ, либо пустая цепочка \(\varepsilon\), которая, по предположению, не принадлежит входному алфавиту, \(X\)~--- магазинный символ из \(\Gamma\). Выход \(\delta\) образуют пары \((p, \gamma)\), где \(p\)~--- новое состояние, а \(\gamma\)~--- цепочка магазинных символов, замещающая \(X\) на вершине магазина. Например, если \(\gamma = \varepsilon\), то магазинный символ снимается, если \(\gamma = X\), то магазин не изменяется, а если \(\gamma = YZ\), то \(X\) заменяется на \(Z\), и \(Y\) помещается в магазин. + \item \(q_0\): начальное состояние. МП-автомат находится в нем перед началом работы. + \item \(Z_0\): начальный магазинный символ (``маркер дна''). Вначале магазин содержит только этот символ и ничего более. + \item \(F\): множество допускающих, или заключительных, состояний. + \end{itemize} + Сейчас у нас есть лишь неформальное понятие того, как МП-автомат “вычисляет”. Интуитивно МП-автомат переходит от конфигурации к конфигурации в соответствии с входными символами (или \(\varepsilon\)), но в отличие от конечного автомата, о котором известно только его состояние, конфигурация МП-автомата включает как состояние, так и содержимое магазина. Поскольку магазин может быть очень большим, он часто является наиболее важной частью конфигурации. Полезно также представлять в качестве части конфигурации непрочитанную часть входа. + + Таким образом, конфигурация МП-автомата представляется тройкой \((q, w, \gamma)\), где \(q\)~--- состояние, \(w\)~--- оставшаяся часть входа, \(\gamma\)~--- содержимое магазина. По соглашению вершина магазина изображается слева, а дно~--- справа. Такая тройка называется \textbf{конфигурацией} МП-автомата, или его \textbf{мгновенным описанием}, сокращенно МО. + + Поскольку МО конечного автомата~--- это просто его состояние, для представления последовательностей конфигураций, через которые он проходил, было достаточно использовать \(\hat{\delta}\). Однако для МП-автоматов нужна нотация, описывающая изменения состояния, входа и магазина. Таким образом, используются пары конфигураций, связи между которыми представляют переходы МП-автомата. + + Пусть \(P = (Q, \Sigma, \Gamma, \delta, q_0, Z_0, F)\)~--- МП-автомат. Определим отношение \textbf{перехода} \(\stackrel[P]{}{\vdash}\), или просто \(\vdash\) , когда \(P\) подразумевается, следующим образом. Предположим, что \(\delta(q, a, X)\) содержит \(p, \alpha\). Тогда для всех цепочек \(w\) из \(\Sigma^*\) и \(\beta\) из \(\Gamma^*\) полагаем \((q, aw, X\beta) \stackrel[P]{}{\vdash} (p, w, \alpha \beta)\). + + Этот переход отражает идею того, что, прочитывая на входе символ \(a\), который может быть \(\varepsilon\), и заменяя \(X\) на вершине магазина цепочкой \(\alpha\), можно перейти из состояния \(q\) в состояние \(p\). Заметим, что оставшаяся часть входа \((w)\) и содержимое магазина под его вершиной \((\beta)\) не влияют на действие МП-автомата; они просто сохраняются, возможно, для того, чтобы влиять на события в дальнейшем. + + Используем также символ \(\stackrel[P]{*}{\vdash}\), или просто \(\stackrel[]{*}{\vdash}\), когда МП-автомат \(P\) подразумевается, для представления нуля или нескольких переходов МП-автомата. Итак, имеем следующее индуктивное определение: + \begin{description} + \item[Базис] \(I \stackrel[P]{*}{\vdash} I\) для любого МО \(I\). + \item[Индукция] \(I \stackrel[P]{}{\vdash} J\), если существует некоторое МО \(K\), удовлетворяющее условиям \(I \stackrel[P]{}{\vdash} K\) и \(K \stackrel[P]{*}{\vdash} J\). + \end{description} + + Для дальнейших рассуждений о МП-автоматах понадобятся следующие три важных принципа. + \begin{enumerate} + \item Если последовательность конфигураций (вычисление) является допустимой для МП-автомата \(P\) (с точки зрения его определения), то вычисление, образованное путем дописывания одной и той же цепочки к концам входных цепочек всех его конфигураций, также допустимо. + \item Если вычисление допустимо для МП-автомата \(P\), то вычисление, образованное дописыванием одних и тех же магазинных символов внизу магазина в каждой конфи- гурации, также допустимо. + \item Если вычисление допустимо для МП-автомата \(P\), и в результате некоторый суффикс входной цепочки не прочитан, то вычисление, полученное путем удаления это- го суффикса из входных цепочек каждой конфигурации, также допустимо. + \end{enumerate} +Интуитивно данные, которые никогда не читаются МП-автоматом, не влияют на его вычисления. + +Пусть \(P = (Q, \Sigma, \Gamma, \delta, q_0, Z_0, F)\)~--- МП-автомат. Тогда \(L(P)\), \textbf{языком, допускаемым \(P\) по заключительному состоянию}, является +\[\left\{w \mid (q_0, w, Z_0) \stackrel[P]{*}{\vdash} (q, \varepsilon, \alpha)\right\}\] +для некоторого состояния \(q\) из \(F\) и произвольной магазинной цепочки \(\alpha\). Таким образом, начиная со стартовой конфигурации с \(w\) на входе, \(P\) прочитывает \(w\) и достигает допускающего состояния. Содержимое магазина в этот момент не имеет значения. + +Так же введём аналогичное понятие. +Пусть \(P = (Q, \Sigma, \Gamma, \delta, q_0, Z_0, F)\)~--- МП-автомат. Тогда \textbf{языком, допускаемым \(P\) по пустому магазину}, является +\[N(P) = \left\{w \mid (q_0, w, Z_0) \stackrel[P]{*}{\vdash} (q, \varepsilon, \varepsilon)\right\},\] +где \(q\)~--- произвольное состояние. В принципе, для автоматов, допускающих по пустому магазину, множество допускающих символов не несёт никакой смысловой нагрузки, поэтому его можно убрать. + +\subsection{Эквивалентность языков по допускающему состоянию и языков по пустому магазину.} +Теперь сформулируем важную теорему, которая понадобится в дальнейшем. +\begin{theorem} + Класс языков, допускаемых МП-автоматами по заключительному состоянию эквивалентен классу языков, допускаемых МП-автоматами по пустому магазину. +\end{theorem} + +Наша первая конструкция показывает, как, исходя из МП-автомата \(P_N\), допускающего язык \(L\) по пустому магазину, построить МП-автомат \(P_F\), допускающий \(L\) по заключительному состоянию. +\begin{theorem} + Если \(L = N(P_N)\) для некоторого МП-автомата \(P_N = (Q, \Sigma, \Gamma, \delta, q_0, Z_0)\), то существует такой МП-автомат \(P_F\), у которого \(L = L(P_F)\). +\end{theorem} +\begin{proof} + \textbf{Суть:} для каждого состояния добавляем переход в новое состояние, отличное от всех старых, в случае, когда магазин пустой. + + Используется новый символ \(X_0\), который не должен быть элементом \(\Gamma\); \(X_0\) является как стартовым символом автомата \(P_F\), так и маркером дна магазина, позволяющим узнать, когда \(P_N\) опустошает магазин. Таким образом, если \(P_F\) обозревает \(X_0\) на вершине магазина, то он знает, что \(P_N\) опустошает свой магазин на этом же входе. + + Нам нужно также новое начальное состояние \(p_0\), единственной функцией которого является затолкнуть \(Z_0\), стартовый символ автомата \(P_N\), на вершину магазина и перейти в состояние \(q_0\), начальное для \(P_N\). Далее \(P_F\) имитирует \(P_N\) до тех пор, пока магазин \(P_N\) не станет пустым, что \(P_F\) определяет по символу \(X_0\) на вершине своего магазина. И наконец, нужно еще одно новое состояние \(p_f\), заключительное в автомате \(P_F\); он переходит в \(p_f\), как только обнаруживает, что \(P_N\) опустошает свой магазин. + + Описание \(P_f\) имеет следующий вид. + \[P_F = \left(Q \cup \{p_0, p_f\}, \Sigma, \Gamma \cup \{X_0\}, \delta_F, p_0, X_0, \{p_f\}\right)\] +Функция \(\delta_F\) определяется таким образом. +\begin{enumerate} + \item \(\delta_F(p_0, \varepsilon, X_0) = \{(q_0, Z_0X_0)\}\) В своем начальном состоянии \(P_F\) спонтанно переходит в + начальное состояние автомата \(P_N\), заталкивая его стартовый символ \(Z_0\) в магазин. + \item Для всех состояний \(q\) из \(Q\), входов \(a\) из \(\Sigma\) (или \(a = \varepsilon\)) и магазинных символов \(Y\) из \(\Gamma\), \(\delta_F(q, a, Y)\) содержит все пары из \(\delta_N(q, a, Y)\). + \item К дополнению к пункту 2, \(\delta_F(q, \varepsilon, X_0)\) содержит \((p_f, \varepsilon)\) для каждого состояния \(q\) из \(Q\). +\end{enumerate} +Теперь докажем достаточность и необходимость. +\begin{description} + \item[Достаточность.] Нам дано, что \((q_0, w, Z_0) \stackrel[P_N]{*}{\vdash} (q, \varepsilon, \varepsilon)\). Заметим, что мы можем добавить \(X_0\) в конец магазина и ничего не изменится: \((q_0, w, X_0Z_0) \stackrel[P_N]{*}{\vdash} (q, \varepsilon, X_0)\). Так как \(P_F\) содержит все переходы \(P_N\), то \((q_0, w, X_0Z_0) \stackrel[P_F]{*}{\vdash} (q, \varepsilon, X_0)\). Комбинируя, получаем: + \[(p_0, w, X_0) \stackrel[P_F]{}{\vdash} (q_0, w, X_0Z_0) \stackrel[P_F]{*}{\vdash} (q, \varepsilon, X_0) \stackrel[P_F]{}{\vdash} (p_f, \varepsilon, \varepsilon)\] + Тогда \(P_F\) допускает \(w\) по заключительному состоянию. + + \item[Необходимость.] Заметим, что дополнительные переходы по правилам 1 и 3 дают весьма ограниченные возможности для допускания \(w\) по заключительному состоянию. Правило 3 должно использоваться только на последнем шаге, и его можно использовать, если магазин \(P_F\) содержит лишь \(X_0\). Но \(X_0\) не появляется нигде в магазине, кроме его дна. Правило 1 используется только на первом шаге, и оно должно использоваться на первом шаге. + + Таким образом, любое вычисление в автомате \(P_F\), допускающее \(w\), должно выглядеть как последовательность \[(p_0, w, X_0) \stackrel[P_F]{}{\vdash} (q_0, w, X_0Z_0) \stackrel[P_F]{*}{\vdash} (q, \varepsilon, X_0) \stackrel[P_F]{}{\vdash} (p_f, \varepsilon, \varepsilon).\] + Более того, середина вычисления (все переходы, кроме первого и последнего) должна также быть вычислением в \(P_N\) с \(X_0\) под магазином. Это обусловлено тем, что, за исключением первого и последнего шагов, \(P_F\) не может использовать переходы, которые не являются переходами \(P_N\), и \(X_0\) не может оказаться на вершине магазина (иначе вычисление заканчивалось бы на следующем шаге). Таким образом, \((q_0, w, X_0Z_0) \stackrel[P_N]{*}{\vdash} (q, \varepsilon, X_0)\) и \(w \in N(P_N)\). +\end{description} +\end{proof} + +Теперь пойдем в обратном направлении: исходя из МП-автомата \(P_F\), допускающего язык \(L\) по заключительному состоянию, построим другой МП-автомат \(P_N\), который допускает \(L\) по пустому магазину. Конструкция такова: добавляется переход по \(\\varepsilon\) из каждого допускающего состояния автомата \(P_F\) в новое состояние \(p\). Находясь в состоянии \(p\), \(P_N\) опустошает магазин и ничего не прочитывает на входе. + +Во избежание имитации случая, когда \(P_F\) случайно опустошает свой магазин без допуска, \(P_N\) должен также использовать маркер \(X_0\) на дне магазина. Маркер является его стартовым символом и \(P_N\) должен начинать работу в новом состоянии \(p_0\), единственная функция которого~--- затолкнуть стартовый символ автомата \(P_F\) в магазин и перейти в начальное состояние \(P_F\). Далее пойдёт формальное описание. + +\begin{theorem} + Пусть \(L = L(P_F)\) для некоторого МП-автомата \(P_F = (Q, \Sigma, \Gamma, \delta_F, q_0, Z_0, F)\). Тогда существует такой МП-автомат \(P_N\), для которого \(L = N(P_F)\). +\end{theorem} +\begin{proof} + Пусть \[P_N = (Q \cup \{p_0, p\}, \Sigma, \Gamma \cup \{X_0\}, \delta_N, p, X_0),\] + где \(\delta_N\) определена следующим образом: + \begin{enumerate} + \item \(\delta_N(p_0, \varepsilon, X_0) = \{(q_0, Z_0X_0)\}\) Работа начинается с заталкивания стартового символа автомата PF в магазин и перехода в его начальное состояние. + \item Для всех состояний \(q\) из \(Q\), входов \(a\) из \(\Sigma\) (или \(a = \varepsilon\)) и магазинных символов \(Y\) из \(\Gamma\), \(\delta_N(q, a, Y)\) содержит все пары из \(\delta_F(q, a, Y)\), т.е. \(P_N\) имитирует \(P_F\). + \item Для всех допускающих состояний \(q\) из \(F\) и магазинных символов \(Y\) из \(\Gamma \cup \{X_0\}\) \(\delta_N(q, \varepsilon, Y)\) содержит \((p, \varepsilon)\). По этому правилу, как только \(P_F\) допускает, \(P_N\) может начать опустошение магазина без чтения входных символов. + \item Для всех магазинных символов магазинных символов \(Y\) из \(\Gamma \cup \{X_0\}\) \(\delta_N(p, \varepsilon, Y) = \{p, \varepsilon\}\). Попав в состояние \(p\) (только в случае, когда \(P_F\) допускает), \(P_N\) выталкивает символы из магазина до его опустошения. Входные символы при этом не читаются. + \end{enumerate} + Теперь нужно доказать, что \(w \in N(P_N)\) тогда и только тогда, когда \(w \in L(P_F)\). Идеи аналогичны предыдущй теореме. Достаточность представляет собой непосредственную имитацию, а необходимость требует проверки ограниченного числа действий, которые может совершить МП-автомат \(P_N\). + \begin{description} + \item[Достаточность.] Пусть \((q_0, w, Z_0) \stackrel[P_F]{*}{\vdash} (q, \varepsilon, \alpha)\) для некоторого \(q \in F\). Так как \(P_N\) имитирует \(P_F\) и под магазином можно держать всё, что угодно, то \((q_0, w, Z_0 X_0) \stackrel[P_N]{*}{\vdash} (q, \varepsilon, \alpha X_0)\). Тогда по правилам 1, 3 и 4 автомат \(P_N\) может сделать следующее: + \[(p_0, w, X_0) \stackrel[P_N]{}{\vdash} (q_0, w, X_0Z_0) \stackrel[P_F]{*}{\vdash} (q, \varepsilon, \alpha X_0) \stackrel[P_F]{*}{\vdash} (p, \varepsilon, \varepsilon)\] + Тогда \(P_N\) допускает по пустому магазину. + + \item[Необходимость.] Единственный путь, по которому \(P_N\) может опустошить свой магазин, состоит в достижении состояния \(p\), так как \(X_0\) находится в магазине и является символом, для которого у \(P_F\) переходы не определены. \(P_N\) может достичь состояния \(p\) только тогда, когда \(P_F\) приходит в допускающее состояние. Первым переходом автомата \(P_N\) может быть только переход, заданный правилом 1. Таким образом, каждое допускающее вычисление PN выглядит следующим образом (\(q\)~--- допускающее состояние автомата \(P_F\)). + \[(p_0, w, X_0) \stackrel[P_N]{}{\vdash} (q_0, w, X_0Z_0) \stackrel[P_F]{*}{\vdash} (q, \varepsilon, \alpha X_0) \stackrel[P_F]{*}{\vdash} (p, \varepsilon, \varepsilon)\] + Кроме того, между МО \((q_0, w, Z_0X_0)\) и \((q, \varepsilon, \alpha X_0)\) все переходы являются переходами автомата \(P_F\). В частности, \(X_0\) никогда не появляется на вершине магазина до достижения МО \((q, \varepsilon, \alpha X_0)\).4 Таким образом, приходим к выводу, что у \(P_F\) есть такое же вычисление, но без \(X_0\) в магазине, т.е. \((q_0, w, Z_0) \stackrel[P_F]{*}{\vdash} (q, \varepsilon, \alpha)\). Итак, \(P_F\) допускает \(w\) по заключительному состоянию, т.е. \(w \in L(P_F)\). + \end{description} +\end{proof} + +Данные теоремы доказывают, что +\begin{center} + \begin{minipage}[c]{0.4\textwidth} + \center МП-автоматы, допускающие по заключительным состояниям + \end{minipage} + \(\iff\) + \begin{minipage}[c]{0.4\textwidth} + \center МП-автоматы, допускающие по пустому магазину. + \end{minipage} +\end{center} + +\section{Эквивалентность контекстно-свободных грамматик и автоматов с магазинной памятью. Построение автомата по грамматике. Лемма о накачке для контекстно-свободных языков. } +\subsection{Построение автомата по грамматике.} +Сейчас мы покажем, что МП-автоматы определяют КС-языки. + +По данной грамматике \(G\) строится МП-автомат, имитирующий ее левые порождения. Любую левовыводимую цепочку, которая не является терминальной, можно записать в виде \(xA\alpha\), где \(A\)~--- крайняя слева переменная, \(x\)~--- цепочка терминалов слева от \(A\), \(\alpha\)~--- цепочка терминалов и переменных справа. \(A\alpha\) называется \textbf{остатком} этой левовыводимой цепочки. У терминальной левовыводимой цепочки остатком является \(\varepsilon\). + +Идея построения МП-автомата по грамматике состоит в том, чтобы МП-автомат имитировал последовательность левовыводимых цепочек, используемых в грамматике для порождения данной терминальной цепочки \(w\). Остаток каждой цепочки \(A\alpha\) появляется в магазине с переменной \(A\) на вершине. При этом \(x\) “представлен” прочитанными на входе символами, а суффикс цепочки \(w\) после \(x\) считается непрочитанным. + +Предположим, что МП-автомат находится в конфигурации \((q, y, A\alpha)\), представляющей левовыводимую цепочку \(xA\alpha\). Он угадывает продукцию, используемую для расширения \(A\), скажем, \(A \to \beta\). Переход автомата состоит в том, что \(A\) на вершине магазина заменяется цепочкой \(\beta\), и достигается МО \((q, y, \beta\alpha)\). Заметим, что у этого МП-автомата есть всего одно состояние, \(q\). Теперь \((q, y, \beta\alpha)\) может не быть представлением следующей левовыводимой цепочки, поскольку \(\beta\) может иметь терминальный префикс. В действительности, \(\beta\) может вообще не иметь переменных, а у \(\alpha\) может быть терминальный префикс. Все терминалы в начале цепочки \(\beta\alpha\) нужно удалить до появления следующей переменной на вершине магазина. Эти терминалы сравниваются со следующими входными символами для того, чтобы убедиться, что наши предположения о левом порождении входной цепочки \(w\) правильны; в противном случае данная ветвь вычислений МП-автомата отбрасывается. + +Если таким способом нам удается угадать левое порождение \(w\), то в конце концов мы дойдем до левовыводимой цепочки \(w\). В этот момент все символы в магазине или расширены (если это переменные), или совпали с входными (если это терминалы). Магазин пуст, и мы допускаем по пустому магазину. + +Уточним приведенное неформальное описание. Пусть \(G = (V, T, Q, S)\)~--- КС-грамматика. Построим МП-автомат \(P = (\{q\}, T, V \cup T, \delta, q, S)\), который допускает \(L(G)\) по пустому магазину. Функция переходов \(\delta\) определена таким образом: +\begin{enumerate} + \item \(\delta(q, \varepsilon, A) = \{(q, \beta) \mid A \to \beta\text{~--- продукция в }G\}\) для каждой переменной \(A\). + \item \(\delta(q, a, a) = \{(q, \varepsilon)\}\) для любого терминала \(a\) +\end{enumerate} + +\begin{theorem} + Если МП-автомат \(P\) построен по грамматике \(G\) в соответствии с описанной выше конструкцией, то \(N(P) = L(G)\). +\end{theorem} +\begin{proof} + Докажем, что \(w \in N(P)\) тогда и только тогда, когда \(w \in L(G)\). + \begin{description} + \item[Достаточность.] Пусть \(w \in L(G)\). Тогда \(w\) имеет следующее левое порождение. + \[S = \gamma_1 \stackrel[lm]{}{\implies} \gamma_2 \stackrel[lm]{}{\implies} \ldots \stackrel[lm]{}{\implies} \gamma_n = w\] + Покажем индукцией по \(i\), что \((q, w, S) \stackrel[P]{*}{\vdash} (q, y_i, \alpha_i)\), где \(y_i\) и \(a_i\) представляют левовыводимую цепочку \(\gamma_i\). Точнее, пусть \(\alpha_i\) является остатком \(\gamma_i\), и \(\gamma_i = x_i \alpha_i\). Тогда \(y_i\)~--- это такая цепочка, что \(x_i y_i = w\), т.е. то, что остается на входе после чтения \(x_i\). + + \begin{description} + \item[Базис.] \(\gamma_1 = S\) при \(i = 1\). Таким образом, \(x_1 = \varepsilon\) и \(y_1 = w\). Поскольку \((q, w, S) \stackrel[P]{*}{\vdash} (q, w, S)\) по определению переходов, то базис доказан. + + \item[Индукция.] Теперь рассмотрим вторую и последующие левовыводимые цепочки. Предположим, что \((q, w, S) \stackrel[P]{*}{\vdash} (q, y_i, \alpha_i)\) и докажем, что \((q, w, S) \stackrel[P]{*}{\vdash} (q, y_{i + 1}, \alpha_{i + 1})\). Поскольку \(\alpha_i\) является остатком, он начинается переменной \(A\). Кроме того, шаг порождения \(\gamma_{i} \stackrel[lm]{}{\implies} \gamma_{i + 1}\) включает замену переменной \(A\) одним из тел ее продукций, скажем, \(\beta\). Правило 1 построения \(P\) позволяет нам заменить \(A\) на вершине магазина цепочкой \(\beta\), а правило 2~--- сравнить затем любые терминалы на вершине магазина со следующими входными символами. В результате достигается МО \((q, y_{i +1}, \alpha_{i + 1})\), которое представляет следующую левовыводимую цепочку \(\gamma_{i + 1}\). + \end{description} + Для завершения доказательства заметим, что \(\alpha_n = \varepsilon\), так как остаток цепочки \(\gamma_n\) (а она представляет собой \(w\)) пуст. Таким образом, \((q, w, S) \stackrel[P]{*}{\vdash} (q, \varepsilon, \varepsilon)\), т.е. \(P\) допускает \(w\) по пустому магазину. + + \item[Необходимость.] Нам нужно до казать нечто более общее, а именно: если \(P\) выполняет последовательность переходов, в результате которой переменная \(A\) удаляется из вершины магазина, причем магазин под ней не обрабатывается, то из \(A\) в грамматике \(G\) порождается любая цепочка, прочитанная на входе в этом процессе. Формально: \emph{если \((q, x, A) \stackrel[P]{*}{\vdash} (q, \varepsilon, \varepsilon)\), то \(A \stackrel[G]{*}{\implies} x\)}. + + Доказательство проведем индукцией по числу переходов, совершенных \(P\). + \begin{description} + \item[Базис.] Один переход. Единственной возможностью является то, что \(A \to \varepsilon\) — продукция грамматики \(G\), и эта продукция использована в правиле типа 1 МП-автоматом \(P\). + В этом случае \(x = \varepsilon\), и \(A \stackrel[G]{*}{\implies} x\). + \item[Индукция.] Предположим, что \(P\) совершает \(n\) переходов, где \(n > 1\). Первый переход должен быть типа 1, где переменная \(A\) на вершине магазина заменяется одним из тел ее продукций. Причина в том, что правило типа 2 может быть использовано, когда на вершине магазина находится терминал. Пусть использована продукция \(A \to Y_1 Y_2 \ldots Y_k\), где каждый \(Y_i\) есть либо терминал, либо переменная. + + В процессе следующих \(n - 1\) переходов \(P\) должен прочитать \(x\) на входе и вытолкнуть \(Y_1, Y_2, \ldots, Y_k\) из магазина по очереди. Цепочку \(x\) можно разбить на подцепочки \(x_1 x_2 \ldots x_k\), где \(x_1\)~--- порция входа, прочитанная до выталкивания \(Y_1\) из магазина, т.е. когда длина магазина впервые уменьшается до \(k - 1\). Тогда \(x_2\) является следующей порцией входа, читаемой до выталкивания \(Y_2\), и т.д. Заметим, что вообще, если \(Y_i\)~--- терминал, то \(x_i\) также должен быть терминалом. + + Формально мы можем заключить, что \[(q, x_i x_{i + 1} \ldots x_k, Y_i) \stackrel[G]{*}{\vdash} (q, x_{i + 1} x_{i + 2} \ldots x_k, \varepsilon)\] для всех \(i = 1, 2, \ldots, k\). Кроме того, длина ни одной из этих последовательностей переходов не превышает \(n - 1\), поэтому применимо предположение индукции в случае, если \(Y_i\)~--- переменная. Таким образом, можно заключить, что \(Y_i \stackrel[G]{*}{\implies} x_i\). + + Если \(Y_i\)~--- терминал, то должен совершаться только один переход, в котором проверяется совпадение \(x_i\) и \(Y_i\). Опять-таки, можно сделать вывод, что \(Y_i \stackrel[G]{*}{\implies} x_i\); на этот раз порождение пустое. Теперь у нас есть порождение + \[A \stackrel[G]{}{\implies} Y_1 Y_2 \ldots Y_k \stackrel[G]{*}{\implies} x_1 Y_2 \ldots Y_k \stackrel[G]{*}{\implies} \ldots \stackrel[G]{*}{\implies} x_1 x_2 \ldots x_k\] + Тогда \(A \stackrel[G]{*}{\implies} x\) + \end{description} + Для завершения доказательства положим \(A = S\) и \(x = w\). Поскольку нам дано, что \(w \in N(P)\), то \((q, w, S) \stackrel[P]{*}{\vdash} (q, \varepsilon, \varepsilon)\). По доказанному индукцией имеем \(S \stackrel[G]{*}{\implies} w\), т.е. \(w \in L(G)\). + \end{description} +\end{proof} + +\subsection{Построение грамматики по автомату.} +Завершим доказательство эквивалентности, показав, что для любого МП-автомата \(P\) найдется КС-грамматика \(G\), язык которой совпадает с языком, допускаемым \(P\) по пустому магазину. Идея доказательства основана на том, что выталкивание одного символа из магазина вместе с прочтением некоторого входа является основным событием в процессе работы МП-автомата. При выталкивании из магазина МП-автомат может изменять свое состояние, поэтому нам следует учитывать состояние, достигаемое автоматом, когда он полностью освобождает свой магазин. + +Рассмотрим, как последовательность символов \(Y_1 Y_2 \ldots Y_k\) удаляется из магазина. До удаления \(Y_1\) прочитывается вход \(x_1\). Подчеркнем, что это ``удаление'' является окончательным результатом, возможно, многих переходов. Например, первый переход может изменить \(Y_1\) на некоторый другой символ \(Z\), следующий~--- изменить \(Z\) на \(UV\), дальнейшие переходы~--- вытолкнуть \(U\), а затем \(V\). Окончательный результат заключается в том, что \(Y_1\) изменен на ничто, т.е. вытолкнут, и все прочитанные к этому моменту входные символы образуют \(x_1\). + +Пусть первоначально автомат находился в состоянии \(p_0\). После всех переходов, результат которых состоит в удалении \(Y_1\), МП-автомат находится в состоянии \(p_1\). Затем он достигает окончательного удаления \(Y_2\), прочитывая при этом \(x_2\) и приходя, возможно, за много переходов, в состояние \(p_2\). Вычисление продолжается до тех пор, пока каждый из магазинных символов не будет удален. + +Наша конструкция эквивалентной грамматики использует переменные, каждая из которых представляет ``событие'', состоящее в следующем. +\begin{itemize} + \item Окончательное удаление некоторого символа \(X\) из магазина. + \item Изменение состояния от некоторого \(p\) (вначале) до \(q\), когда \(X\) окончательно заменяется \(\varepsilon\) в магазине. +\end{itemize} + +Такую переменную обозначим составным символом \([pXq]\). Заметим, что эта последовательность букв является описанием одной переменной, а не пятью символами грамматики. Формальное построение дается следующей теоремой. +\begin{theorem} + Пусть \(P = (\{q\}, T, V \cup T, \delta, q, S)\)~--- МП-автомат. Тогда существует КС-грамматика \(G\), для которой \(L(G) = N(P)\). +\end{theorem} +\begin{proof} + Построим \(G = (V, \Sigma, R, S)\), где \(V\) состоит из следующих переменных. + \begin{itemize} + \item Специальный стартовый символ \(S\). + \item Все символы вида \([pXq]\), где \(p\) и \(q\)~--- состояния из \(Q\), а \(X\)~--- магазинный символ из \(\Gamma\). + \end{itemize} + Грамматика \(G\) имеет следующие продукции: + \begin{enumerate} + \item Продукции \(S \to [q_0 Z_0 p]\) для всех состояний \(p\). Интуитивно символ вида \([q_0 Z_0 p]\) предназначен для порождения всех тех цепочек \(w\), которые приводят \(P\) к выталкиванию \(Z_0\) из магазина в процессе перехода из состояния \(q_0\) в состояние \(p\). Таким образом, \((q, w, S) \stackrel[]{*}{\vdash} (q, \varepsilon, \varepsilon)\). Эти продукции гласят, что стартовый символ \(S\) порождает все цепочки \(w\), приводящие \(P\) к опустошению магазина после старта в начальной конфигурации; + + \item пусть \(\delta(q, a, X)\) содержит пару \((r, Y_1 Y_2 \ldots Y_k\), где \(a\) есть либо символ из \(\Sigma\), либо \(\varepsilon\), а \(k\)~--- некоторое неотрицательное число; при \(k = 0\) пара имеет вид \((r, \varepsilon)\). Тогда для всех списков состояний \(r_1, r_2, \ldots, r_k\) в грамматике \(G\) есть продукция \[[q X r_k] \to a[r Y_1 r_1][r_1 Y_2 r_2]...[r_{k–1} Y_k r_k].\] + Она гласит, что один из путей выталкивания \(X\) и перехода из состояния \(q\) в состояние \(r_k\) заключается в том, чтобы прочитать \(a\) (оно может быть равно \(\varepsilon\)), затем использовать некоторый вход для выталкивания \(Y_1\) из магазина с переходом из состояния \(r\) в состояние \(r_1\), далее прочитать некоторый вход, вытолкнуть \(Y_2\) и перейти из \(r_1\) в \(r_2\), и т.д. + \end{enumerate} + Докажем корректность неформальной интерпретации переменных вида \([qXp]\): + \begin{theorem} + \([qXp] \stackrel[]{*}{\implies} w\) тогда и только тогда, когда, когда \((q, w, X) \stackrel[]{*}{\vdash} (p, \varepsilon, \varepsilon)\). + \end{theorem} + \begin{description} + \item[Достаточность.] Пусть \((q, w, X) \stackrel[]{*}{\vdash} (p, \varepsilon, \varepsilon)\). Докажем, что \([qXp] \stackrel[]{*}{\implies} w\) по индукции по числу переходов МП-автомата. + \begin{description} + \item[Базис.] Один шаг. Пара \((p, \varepsilon)\) должна быть в \(\delta(q, w, X)\), и \(w\) есть либо одиночный символ, либо \(\varepsilon\). Из построения \(G\) следует, что \([qXp] \to w\) является продукцией, поэтому \([qXp] \stackrel[]{*}{\implies} w\). + + \item[Индукция.] Предположим, что последовательность \((q, w, X) \stackrel[]{*}{\vdash} (p, \varepsilon, \varepsilon)\) состоит из \(n\) переходов, и \(n > 1\). Первый переход должен иметь вид + \[(q, w, X) \stackrel[]{}{\vdash} (r_0, X, Y_1 Y_2 \ldots Y_k) \stackrel[]{*}{\vdash} (p, \varepsilon, \varepsilon)\] + где \(w = aX\) для некоторого \(a\), которое является либо символом из \(\Sigma\), либо \(\varepsilon\). Отсюда следует, что пара \((r_0, Y_1 Y_2 \ldots Y_k)\) должна быть в \(\delta(q, a, X)\). Кроме того, по построению \(G\) существует продукция \[[q X r_k] \to a[r Y_1 r_1][r_1 Y_2 r_2]...[r_{k–1} Y_k r_k],\] у которой \(r_k = p\) и \(r_1, r_2, \ldots, r_{k - 1}\)~--- некоторые состояния из \(Q\). + + Как было сказано ранее, символы \(Y_1 Y_2 \ldots Y_k\) удаляются из магазина по очереди, и для \(i = 1, 2, \ldots, k - 1\) можно выбрать состояние \(p_i\), в котором находится МП-автомат при удалении \(Y_i\). Пусть \(X = w_1 w_2 \ldots w_k\), где \(w_i\)~--- входная цепочка, которая прочитывается до удаления \(Y_i\) из магазина. Тогда \((r_{i - 1}, w_{i}, Y_{i}) \stackrel[]{*}{\vdash} (r_i, \varepsilon, \varepsilon)\). + + Поскольку ни одна из указанных последовательностей переходов не содержит более, чем \(n\) переходов, к ним можно применить предположение индукции. Приходим к выводу, что \([r_{i - 1} Y_i r_{i}] \stackrel[]{*}{\implies} w_i\). Соберем эти порождения вместе (здесь \(r_k = p\)). + \[\begin{aligned}{c} + [q X r_k] &{} \stackrel[]{*}{\implies} a[r Y_1 r_1][r_1 Y_2 r_2]...[r_{k–1} Y_k r_k] \\ + &{} \stackrel[]{*}{\implies} a w_1 [r_1 Y_2 r_2]...[r_{k–1} Y_k r_k] \\ + &{} \stackrel[]{*}{\implies} a w_1 w_2 ...[r_{k–1} Y_k r_k] \\ + &{}\ \ \dots \\ + &{} \stackrel[]{*}{\implies} a w_1 w_2 \ldots w_k = w + \end{aligned}\] + \end{description} + + \item[Необходимость.] Доказательство проводится индукцией по числу шагов в порождении. + \begin{description} + \item[Базис.] Один шаг. Тогда \([qXp] \to w\) должно быть продукцией. Единственная возможность для существования этой продукции~--- если в \(P\) есть переход, в котором \(X\) выталкивается, а состояние \(q\) меняется на \(p\). Таким образом, пара \((p, \varepsilon)\) должна быть в \(\delta(q, a, x)\), и \(a = w\). Но тогда \((q, w, X) \stackrel[]{}{\vdash} (p, \varepsilon, \varepsilon)\). + + \item[Индукция.] Предположим, что \([qXp] \stackrel[]{*}{\implies} w\) за \(n\) шагов, где \(n > 1\). Рассмотрим подробно первую выводимую цепочку, которая должна выглядеть следующим образом. + \[[q X r_k] \stackrel[]{}{\implies} a[r_0 Y_1 r_1][r_1 Y_2 r_2]...[r_{k–1} Y_k r_k] \stackrel[]{*}{\implies} w \] + Здесь \(r_k = p\). Эта продукция должна быть в грамматике, так как \((r_0, Y_1 Y_2 \ldots Y_k)\) есть в \(\delta(q, a, X)\). + + Цепочку \(w\) можно разбить на \(w = a w_1 w_2 \ldots w_k\) так, что \([r_{i - 1} Y_i r_{i}] \stackrel[]{*}{\implies} w_i\) для всех \(i = 1, 2, \ldots, k - 1\). По предположению индукции для всех этих \(i\) верно следующее утверждение. + \[(r_{i - 1}, w_{i}, Y_{i}) \stackrel[]{*}{\vdash} (r_i, \varepsilon, \varepsilon)\] + Дополним цепочки: + \[(r_{i - 1}, w_{i} w_{i + 1} \ldots w_{k}, Y_{i}Y_{i + 1} \ldots Y_{k}) \stackrel[]{*}{\vdash} (r_i, w_{i + 1} \ldots w_{k}, Y_{i + 1} \ldots Y_{k})\] + Соберём все последовательности вместе и получим следующее порождение: + \[\begin{aligned}{c} + (q, a w_1 w_2 \ldots w_k, X) & \stackrel[]{}{\vdash} (r_0, w_1 w_2 \ldots w_k, Y_{1}Y_{2} \ldots Y_{k}) \\ + & \stackrel[]{*}{\vdash} (r_1, w_2 w_3 \ldots w_k, Y_{2}Y_{3} \ldots Y_{k}) \\ + & \ldots \\ + & \stackrel[]{*}{\vdash} (r_{k - 1}, w_k, Y_{k}) \\ + & \stackrel[]{*}{\vdash} (r_k, \varepsilon, \varepsilon) + \end{aligned}\] + Поскольку \(r_k = p\), мы доказали, что \((q, w, X) \stackrel[]{*}{\vdash} (p, \varepsilon, \varepsilon)\). + \end{description} + + Завершим доказательство. \(S \stackrel[]{*}{\implies} w\) тогда и только тогда, когда \([q_0 Z p_0] \stackrel[]{*}{\implies} w\) для некоторого \(p\) в соответствии с построенными правилами для стартового символа \(S\). Выше уже доказано, что \([q_0 Z p_0] \stackrel[]{*}{\implies} w\) тогда и только тогда, когда \((q, w, X) \stackrel[]{*}{\vdash} (p, \varepsilon, \varepsilon)\), т.е. когда \(P\) допускает \(w\) по пустому магазину. Таким образом, \(L(G) = N(P)\). + \end{description} +\end{proof} + +\newpage +\section{Три подхода к реализации регулярных выражений: детерминированный автомат, поиск с возвратами в недетерминированном автомате, имитация детерминированного автомата по недетерминированному. Поиск подстрок при помощи конечного автомата. Разбор слов по контекстно-свободной грамматике: алгоритм динамического программирование для грамматики в нормальной форме Хомского.} + + +\newpage +\section{Потоки. Максимальный поток. Метод Форда-Фалкерсона.} + +\begin{definition} + \textbf{Транспортная сеть} $G = (V,\ E)$ представляет собой ориентированный граф, в котором каждое ребро $(u,\ v) \in E$ имеет неотрицательную \textbf{пропускную способность} $c(u,\ v) \geqslant 0$. Мы также требуем, чтобы в случае, если $(u,\ v \in E)$, $(v,\ u) \notin E$. Если $(u,\ v) \notin E$, то считаем $c(u,\ v) = 0$, петли запретим. + + В транспортной сети выделяются две вершины: \textbf{исток} $s$ и \textbf{сток} $t$. Каждая вершина лежит на некотором пути от истока к стоку, то есть $\forall\ v \in V\ \exists\ s \to v \to t$. Граф является связным, и, поскольку каждая вершина, кроме $s$, содержит как минимум одно входящее ребро, $|E|\geqslant|V| - 1$. +\end{definition} + +\begin{definition} + Пусть $G = (V,\ E)$ -- транспортная сеть с функцией пропускной способности $c$. Положим $s$ -- исток, $t$ -- сток. \textbf{Потоком} в $G$ является функция $f : V \times V \to \R$, удовлетворяющая следующим условиям: + \begin{enumerate} + \item \textbf{Ограничение пропускной способности.} $\forall\ u,\ v \in V \Rightarrow 0 \leqslant f(u,\ v) \leqslant c(u,\ v)$. + \item \textbf{Сохранение потока.} $\forall\ u \in V\backslash \{s,\ t\} \Rightarrow$ \[\sum\limits_{v \in V}f(v,\ u) = \sum\limits_{v \in V}f(u,\ v)\], причём если $(u,\ v) \notin E$, то $f(u,\ v) = f(v,\ u) = 0$. + \end{enumerate} + + Величина $f(u,\ v)$ -- поток из вершины $u$ в вершину $v$. \textbf{Величина потока} $|f|$ определяется как \[|f| = \sum\limits_{v \in V}f(s,\ v) - \sum\limits_{v \in V}f(v,\ s)\] то есть как суммарный поток, выходящий из истока, минус входящий в него. Однако, чаще всего транспортная сеть не имет рёбер в исток, и вычитаемое равно 0. +\end{definition} + +В \textbf{задаче о максимальном потоке} дана некоторая транспортная сеть $G$ с истоком $s$ и стоком $t$, и необходимо найти поток максимальной величины. + +\paragraph{Метод Форда-Фалкерсона} + +Применяется для решения задач о потоке и базируется на трёх важных идеях: остаточные сети, увеличивающие пути и разрезы. Он итеративно увеличивает значение потока. + +Вначале поток обнуляется: $\forall\ u,\ v \in V \Rightarrow f(u,\ v) = 0$. На каждой итерации величина потока в $G$ увеличивается посредством поиска \textbf{увеличивающего пути} в \textbf{остаточной сети} $G_f$. Зная рёбра данного пути, мы можем найти рёбра в $G$, для которых можно изменить поток так, что величина потока увеличивается. Причём на каждой итерации увеличиваетя именно сумарный поток, в то время как поток через какие-то рёбра может и уменьшаться, и возрастать. Уменьшение может понадобиться, чтобы алгоритм смог переслать больший поток от истока к стоку, возможно, по другим рёбрам. Мы многократно увеличиваем поток до тех пор, пока в остаточной сети не останется ни одного увеличивающего пути. + +Псевдокод: + +\begin{algorithm} + \caption{\algname{Ford-Falkerson-Method}($G,\ s,\ t$)} + \begin{algorithmic} + \Require Граф $G$, исток $s$, сток $t$ + \Ensure Максимальный поток $f$ + \State Инициализация потока $f$ нулевым значением + \While{существует увеличивающий путь $p$ в остаточной сети $G_f$} + \State увеличиваем поток $f$ вдоль пути $p$ + \EndWhile + \State \Return $f$ + \end{algorithmic} +\end{algorithm} + +\subsection{Остаточные сети.} + +\begin{definition} + \textbf{Остаточная сеть} $G_f$ -- сеть, состоящая из рёбер с пропускными способностями, указывающими, как могут меняться потоки через рёбра $G$. Ребро транспортной сети может пропустить дополнительный поток, равный разности пропускной способности ребра и потока через это ребро. Если это значение больше 0, то мы помещаем такое ребро в $G_f$ с \textbf{остаточной пропускной способностью} $c_f(u,\ v) = c(u,\ v) - f(u,\ v)$. Стоит отметить, что дополнительный поток могут пропустить только рёбра из $G_f$, рёбра, у которых поток равен пропускной способности, имеют $c_f(u,\ v) = 0$ и не входят в $G_f$. + + Иначе говоря, для заданной транспортной сети $G = (V,\ E)$ и потока $f$ \textbf{остаточная сеть} $G$, порождённая потоком $f$, представляет собой граф $G_f = (V,\ E_f)$, где \[E_f = \{(u,\ v) \in V\times V : c_f(u,\ v) > 0\}\] + + Рёбра в $E_f$ являются либо рёбрами из $E$, либо обратными к ним, откуда $|E_f| \leqslant 2|E|$. +\end{definition} + +Остаточная сеть может также включать рёбра, которые не входят в $G$. Когда необходимо уменьшить поток в каком-то ребре $(u,\ v)$, мы помещаем ребро $(v,\ u)$ в $G_f$ с остаточной пропускной способностью $c_f(v,\ u) = f(u,\ v)$. Эти обратные рёбра позволят пересылать обратно уже пущеный по ребру поток. Эта операция эквивалентна уменьшению потока в ребре. + +\begin{definition} + Пусть есть транспортная сеть $G = (V,\ E)$ с истоком $s$ и стоком $t$. Пусть имеется поток $f$. Рассмотрим пару вершин $u,\ v \in V$. \textbf{Остаточная пропускная способность} $c_f(u,\ v)$:\[c_f(u,\ v) = \begin{cases}c(u,\ v) - f(u,\ v),\ (u,\ v) \in E\\ f(v,\ u),\ (v,\ u) \in E\\ 0,\ \text{иначе}\end{cases}\] +\end{definition} + +Мы можем определить поток в остаточной сети по отношению к пропускным способностям $c_f$ сети $G_f$. Поток в остаточной сети суть указания по добавлению потока к исходной транспортной сети. + +\begin{definition} + Пусть $f$ -- поток в $G$, а $f'$ -- соответствующий поток в остаточной сети $G_f$. \textbf{Увеличение} $f\uparrow f'$ потока $f$ на $f'$ -- функция $V\times V \to \R$: \[(f\uparrow f')(u,\ v) = \begin{cases} f(u,\ v) + f'(u,\ v) - f'(v,\ u),\ (u,\ v) \in E\\ 0,\ (u,\ v) \notin E\end{cases}\] + + Мы увеличиваем поток в ребре $(u,\ v)$ на $f'(u,\ v)$, но уменьшаем на $f'(v,\ u)$. Пускание потока по обратному ребру известно как \textbf{сокращение}. +\end{definition} + +\begin{fulllemma} +Пусть $G = (V,\ E)$ -- транспортная сеть с истоком $s$ и стоком $t$, пусть $f$ представляет собой поток в $G$. Пусть $G_f$ -- остаточная сеть $G$, порождённая $f$, пусть $f'$ -- поток в $G_f$. Тогда функция $f\uparrow f'$ является потоком в $G$, причём его величина $|f\uparrow f'| = |f| + |f'|$. +\end{fulllemma} + +\begin{proof} +Покажем, что $f\uparrow f'$ подчиняется ограничению пропускной способности для каждого ребра в $E$. + +Заметим, что, если $(u,\ v) \in E$, то $c_f(v,\ u) = f(u,\ v)$. Тогда $f'(v,\ u) \leqslant c_f(v,\ u) = f(u, v)$, откуда +\begin{gather*} + (f\uparrow f')(u,\ v) = f(u,\ v) + f'(u,\ v) - f'(v,\ u) \geqslant f(u,\ v) + f'(u,\ v) - f(u,\ v) = f'(u,\ v) \geqslant 0\\ + (f\uparrow f')(u,\ v) = f(u,\ v) + f'(u,\ v) - f'(v,\ u) \leqslant f(u,\ v) + f'(u,\ v) \leqslant \\ \leqslant f(u,\ v) + c_f(u,\ v) = f(u,\ v) + c(u,\ v) - f(u,\ v) = c(u,\ v) +\end{gather*} +Покажем, что $f\uparrow f'$ подчиняется сохранению потока в каждой вершине $V\backslash\{s,\ t\}$: +\begin{gather*} + \sum\limits_{v \in V}(f\uparrow f')(u,\ v) = \sum\limits_{v\in V}\big(f(u,\ v) + f'(u,\ v) - f'(v,\ u)\big) = \\ = \sum\limits_{v\in V}f(u,\ v) + \sum\limits_{v\in V}f'(u,\ v) - \sum\limits_{v\in V}f'(v,\ u) = \sum\limits_{v\in V}f(v,\ u) + \sum\limits_{v\in V}f'(v,\ u) - \sum\limits_{v\in V}f'(u,\ v) = \\ = \sum\limits_{v\in V}\big(f(v,\ u) + f'(v,\ u) - f'(u,\ v)\big) = \sum\limits_{v \in V}(f\uparrow f')(v,\ u) +\end{gather*} +Таким образом, $f\uparrow f'$ -- поток. Теперь вычислим его величину. + +Для любой вершины $v \in V$ может быть либо ребро $(s,\ v)$, либо $(v,\ s)$ в $G$. Пусть $V_1 = \{v : (s,\ v) \in E\},\ V_2 = \{v : (v,\ s) \in E\}$. $V_1 \cup V_2 \subseteq V,\ V_1\cap V_2 = \varnothing$. Тогда: +\begin{gather*} + |f\uparrow f'| = \sum\limits_{v \in V}(f\uparrow f')(s,\ v) - \sum\limits_{v \in V}(f\uparrow f')(v,\ s) = \sum\limits_{v \in V_1}(f\uparrow f')(s,\ v) - \sum\limits_{v \in V_2}(f\uparrow f')(v,\ s) = \\ =\sum\limits_{v \in V_1}\big(f(s,\ v) + f'(s,\ v) - f'(v,\ s)\big) - \sum\limits_{v \in V_2}\big(f(v,\ s) + f'(v,\ s) - f'(s,\ v)\big) = \\= \sum\limits_{v \in V_1}f(s,\ v) + \sum\limits_{v \in V_1}f'(s,\ v) - \sum\limits_{v \in V_1}f'(v,\ s) - \sum\limits_{v \in V_2}f(v,\ s) - \sum\limits_{v \in V_2}f'(v,\ s) + \sum\limits_{v \in V_2}f'(s,\ v) = \\ = \sum\limits_{v \in V_1}f(s,\ v) - \sum\limits_{v \in V_2}f(v,\ s) + \sum\limits_{v \in V_1}f'(s,\ v) + \sum\limits_{v \in V_2}f'(s,\ v) - \sum\limits_{v \in V_1}f'(v,\ s) - \sum\limits_{v \in V_2}f'(v,\ s) = \\ = \sum\limits_{v \in V_1}f(s,\ v) - \sum\limits_{v \in V_2}f(v,\ s) + \sum\limits_{v \in V_1\cup V_2}f'(s,\ v) - \sum\limits_{v \in V_1\cup V_2}f'(v,\ s) +\end{gather*} +Заметим, что суммирование во всех четырёх суммах можно распространить на всё множество $V$, так как остальные члены имеют значения 0 \textbf{(доказательство?)}, откуда \[|f\uparrow f'| = \sum\limits_{v \in V}f(s,\ v) - \sum\limits_{v \in V}f(v,\ s) + \sum\limits_{v \in V}f'(s,\ v) - \sum\limits_{v \in V}f'(v,\ s) = |f| + |f'|\] +\end{proof} + +\subsection{Увеличивающие пути} + +\begin{definition} + Пусть $G = (V,\ E)$ -- транспортная сеть, $s$ -- исток, $t$ -- сток, $f$ -- поток. \textbf{Увеличивающий путь} $p$ -- это простой путь из $s$ в $t$ в остаточной сети $G_f$. + + Максимальная величина, на которую можно увеличить поток в каждом ребре на пути $p$ называется \textbf{остаточной пропускной способностью пути}$p$ и задаётся формулой \[c_f(p) = \min \{c_f(u,\ v) : (u,\ v) \in p\}\] +\end{definition} + +\begin{fulllemma} +Пусть $G = (V,\ E)$ -- транспортная сеть, $f$ -- поток в $G$. Пусть $p$ -- увеличивающий путь в $G_f$. Определим функцию $f_p : V \times V \to \R$: \[f_p(u,\ v) = \begin{cases}c_f(p),\ (u,\ v) \in p\\ 0,\ (u,\ v) \notin p\end{cases}\] +Тогда $f_p$ -- поток в $G_f$ с величиной $|f_p| = c_f(p) > 0$. +\end{fulllemma} +\begin{proof} + Здесь надо доказать. +\end{proof} +\begin{consequence} + Пусть $G = (V,\ E)$ -- транспортная сеть, а $f$ -- поток в $G$, и пусть $p$ -- увеличивающий путь в $G_f$. Пусть также $f_p$ -- поток в увеличивающем пути. + + Предположим, что мы увеличиваем $f$ на $f_p$. Тогда функция $f\uparrow f_p$ -- поток в $G$, причём $|f\uparrow f_p| = |f| + |f_p| > |f|$. +\end{consequence} +\begin{proof} + Следует из двух предыдущих лемм. +\end{proof} +\newpage +\section{Разрезы транспортных сетей. Двойственность задач о максимальном потоке и минимальном разрезе.} + +\begin{definition} + \textbf{Разрез} $(S,\ T)$ транспортной сети $G = (V,\ E)$ -- разбиение множества вершин $V$ на множества $S$ и $T = V \backslash S$ такие, что $s \in S$ и $t \in T$. + + Если $f$ -- поток, то \textbf{чистый поток} $f(S,\ T)$ через разрез $(S,\ T)$ определяется как\[f(S,\ T) = \sum\limits_{u \in S}\sum\limits_{v \in T}f(u,\ v) - \sum\limits_{u \in S}\sum\limits_{v \in T}f(v,\ u)\] + + \textbf{Пропускной способностью} разреза $(S,\ T)$ является \[c(S,\ T) = \sum\limits_{u \in S}\sum\limits_{v \in T}c(u,\ v)\] + + \textbf{Минимальный разрез} сети -- разрез с наименьшей пропускной способностью среди всех разрезов. +\end{definition} +\begin{fulllemma} +Пусть $f$ -- поток в транспортной сети $G$ со стоком $s$ и истоком $t$ и пусть $(S,\ T)$ -- произвольный разрез $G$. Тогда чистый поток через разрез $(S,\ T)$ равен $f(S,\ T) = |f|$. +\end{fulllemma} +\begin{proof} + Из условия сохранения потока для любого $u \in V\backslash\{s,\ t\}$ следует: \[\sum\limits_{v \in V}f(u,\ v) - \sum\limits_{v \in V}f(v,\ u) = 0\] Тогда по определнию потока: + \begin{gather*}|f| = \sum\limits_{v \in V}f(s,\ v) - \sum\limits_{v \in V}f(v,\ s) + 0 = \\ = \sum\limits_{v \in V}f(s,\ v) - \sum\limits_{v \in V}f(v,\ s) + \sum\limits_{u \in S\backslash\{s\}}\Big(\sum\limits_{v \in V}f(u,\ v) - \sum\limits_{v \in V}f(v,\ u)\Big) = \\ = \sum\limits_{v \in V}f(s,\ v) - \sum\limits_{v \in V}f(v,\ s) + \sum\limits_{u \in S\backslash\{s\}}\sum\limits_{v \in V}f(u,\ v) - \sum\limits_{u \in S\backslash\{s\}}\sum\limits_{v \in V}f(v,\ u) = \\ =\sum\limits_{v \in V}\Big(f(s,\ v) + \sum\limits_{u \in S\backslash\{s\}}f(u,\ v)\Big) - \sum\limits_{v \in V}\Big(f(v,\ s) + \sum\limits_{u \in S\backslash\{s\}}f(v,\ u)\Big) = \\ = \sum\limits_{v \in V}\sum\limits_{u \in S}f(u,\ v) - \sum\limits_{v \in V}\sum\limits_{u \in S}f(v,\ u) + \end{gather*} + $V = S \cup T,\ S \cap T = \varnothing$, откуда + \begin{gather*} + |f| = \sum\limits_{v \in V}\sum\limits_{u \in S}f(u,\ v) - \sum\limits_{v \in V}\sum\limits_{u \in S}f(v,\ u) = \\ = \sum\limits_{v \in S}\sum\limits_{u \in S}f(u,\ v) + \sum\limits_{v \in T}\sum\limits_{u \in S}f(u,\ v) - \sum\limits_{v \in S}\sum\limits_{u \in S}f(v,\ u) - \sum\limits_{v \in T}\sum\limits_{u \in S}f(v,\ u) = \\ = \sum\limits_{v \in T}\sum\limits_{u \in S}f(u,\ v) - \sum\limits_{v \in T}\sum\limits_{u \in S}f(v,\ u) + \underbrace{\Big(\sum\limits_{v \in S}\sum\limits_{u \in S}f(u,\ v) - \sum\limits_{v \in S}\sum\limits_{u \in S}f(v,\ u)\Big)}_{\text{равно}\ 0} = \\ = \sum\limits_{v \in T}\sum\limits_{u \in S}f(u,\ v) - \sum\limits_{v \in T}\sum\limits_{u \in S}f(v,\ u) = f(S,\ T) + \end{gather*} +\end{proof} +\begin{consequence} + Величина любого потока $f$ в транспортной сети $G$ ограничена сверху пропускной способностью произвольного разреза $G$. Иначе говоря, $|f| \leqslant c(S,\ T)\ \forall (S,\ T)$ +\end{consequence} +\begin{proof} + Пусть $(S,\ T)$ -- произвольный разрез $G$ и пусть $f$ является произвольным потоком. Тогда по предыдущей лемме: + \begin{gather*} + |f| = f(S,\ T) = \sum\limits_{v \in T}\sum\limits_{u \in S}f(u,\ v) - \sum\limits_{v \in T}\sum\limits_{u \in S}f(v,\ u) \leqslant \sum\limits_{v \in T}\sum\limits_{u \in S}f(u,\ v) \leqslant \sum\limits_{v \in T}\sum\limits_{u \in S}c(u,\ v) = c(S,\ T) + \end{gather*} +\end{proof} + +\begin{theorem} +Если $f$ -- поток в транспортной сети $G = (V,\ E)$ с истоком $s$ и стоком $t$, то следующие утверждения эквивалентны: +\begin{enumerate} + \item $f$ -- максимальный поток в $G$. + \item Остаточная сеть $G_f$ не содержат увеличивающих путей. + \item $|f| = c(S,\ T)$ для некоторого разреза $(S,\ T)$ транспортной сети $G$. +\end{enumerate} +\end{theorem} +\begin{proof} + \begin{itemize} + \item $(1) \Rightarrow (2)$ + + Предположим противное: пусть $f$ -- максимальный поток в $G$, но $G_f$ содержит увеличиващий путь $p$. Тогда поток, полученный увеличением потока $f$ на поток $f_p$, равен $f\uparrow f_p$ в $G$ и $|f \uparrow f_p| = |f| + |f_p| > |f|$ -- но тогда $f$ не является максимальным. Противоречие. + + \item $(2) \Rightarrow (3)$ + + Предположим, что в $G_f$ нет увеличивающего пути, но есть, нет путей из $s$ в $t$. Пусть \[S = \{v \in V :\ \exists s \to v \in G_f\},\ T = V\backslash S\] Разбиение $(S,\ T)$ -- разрез по построению. + + Рассмотрим пару вершин $u \in S$ и $v \in T$. Если $(u,\ v) \in E$, то $f(u,\ v) = c(u,\ v)$, так как иначе $(u,\ v) \in E_f$, что помещало бы $v$ в множество $S$. Если $(v,\ u) \in E$, то $f(u,\ v) = 0$, поскольку иначе значение $c_f(u,\ v) = f(v,\ u) > 0$ и $(u,\ v) \in E_f$, что помещало бы $v$ в $S$. Ясно, что $(u,\ v) \notin E,\ (v,\ u) \notin E \Rightarrow f(u,\ v) = f(v,\ u) = 0$. Тогда: + \begin{gather*} + f(S,\ T) = \sum\limits_{u \in S}\sum\limits_{v \in T}f(u,\ v) - \sum\limits_{u \in S}\sum\limits_{v \in T}f(v,\ u) =\\= \sum\limits_{u \in S}\sum\limits_{v \in T}c(u,\ v) - \sum\limits_{u \in S}\sum\limits_{v \in T}0 = c(S,\ T) = f(S,\ T) = |f| + \end{gather*} + \item $(3) \Rightarrow (1)$ + + По следствию выше, $|f| \leqslant c(S,\ T)\ \forall\ (S,\ T)$. Тогда $|f| = c(S,\ T) \Longleftrightarrow f$ -- максимальный поток. + \end{itemize} +\end{proof} +\newpage +\section{ Алгоритм Форда – Фалкерсона. Алгоритм Эдмондса – Карпа.} + +\subsection{Алгоритм Форда-Фалкерсона} + +При выполнении каждой итерации метода Форда-Фалкерсона мы находим некоторый увеличивающий путь $p$ и используем $p$ для того, чтобы изменять поток $f$ -- заменяем его на $f\uparrow f_p$, получая новый поток с величиной $|f| + |f_p|$. + +\begin{algorithm} + \caption{\algname{Ford-Falkerson}($G = (V,\ E),\ s,\ t$)} + \begin{algorithmic} + \Require Граф $G$, исток $s$, сток $t$ + \Ensure Максимальный поток $f$ + \State + \For{$(u,\ v) \in E$} + \State $f(u,\ v) = 0$ + \EndFor + \While{существует увеличивающий путь $p$ из $s$ в $t$ в остаточной сети $G_f$} + \State $c_f(p) = \min\{c_f(u,\ v)\ :\ (u,\ v) \in p\}$ + \For{$(u,\ v) \in p$} + \If{$(u,\ v) \in E$} + \State $f(u,\ v) = f(u,\ v) + c_f(p)$ + \Else + \State $f(v,\ u) = f(v,\ u) - c_f(p)$ + \EndIf + \EndFor + \EndWhile + \State \Return $f$ + \end{algorithmic} +\end{algorithm} + +Будем вычислять максимальный поток в транспортной сети $G = (V,\ E)$ путём обновления потока $f(u,\ v)\ \forall\ (u,\ v) \in E$. Кроме того, считаем, что на каждое ребро задаётся пропускная способность $c(u,\ v)$. Если $(u,\ v) \notin E$, считаем $f(u,\ v) = 0$ и $c(u,\ v) = 0$. Затем мы вычисляем остаточную пропускную способность $c_f(u,\ v)$ по определению. Также мы вычисляем пропускную способность пути $p$ -- $c_f(p)$. Затем мы увеличиваем поток $f$ вдоль пути $p$ на остаточную пропускную способность $c_f(p)$ и обновляем поток для каждого случая, в зависимости от того, является ли ребро ребром исходной сети. Если увеличивающих путей больше нет, то поток $f$ -- максимальный. + +Корректность алгоритма (на самом деле, это лишь метод) следует из приведённых выше лемм и \textit{Теоремы о максимальном потоке и минимальном разрезе}. + +\paragraph{Асимптотика} + +Время работы алгоритма сильно зависит от метода поиска увеличивающего пути $p$. + +Предположим, что у нас есть структура данных, соответствующая ориентированному графу $G' = (V,\ E')$, где $E' = \{(u,\ v): (u,\ v) \in E\ \text{или}\ (v,\ u) \in E\}$. Рёбра исходного $G$ являются рёбрами $G'$, поэтому в данной структуре легко хранить пропускные способности и потоки. Для потока $f$ в $G$ рёбра остаточной сети $G_f$ состоят из всех рёбер $(u,\ v)$ графа $G'$ таких, что $c_f(u,\ v) > 0$ и $c_f$ задана по определению. Тогда время поиска пути в остаточной сети будет равно $O(V + E') = O(E)$, при использовании $DFS$ или $BFS$. Значит каждая итерация \textbf{while} займёт $O(E)$. Тогда, если $f^*$ -- максимальный поток, то общее время работы алгоритма Форда-Фалкерсона равно: $O(E \cdot |f^*|)$. + +\subsection{Алгоритм Эдмондса-Карпа} + +Можно улучшить время работы алгоритма Форда-Фалкерсона, если поиск пути $p$ будет производиться поиском в ширину, то есть, выбрать в качестве увеличивающего пути кратчайший путь из $s$ в $t$ в остаточной сети, где считаем каждое ребро единичной длины. Такая реализация алгоритма Форда-Фалкерсона называется \textbf{Алгоритмом Эдмондса-Карпа}. + +\paragraph{Корректность и Асимптотика} + +\begin{fulllemma} +Если применить алгоритм Эдмондса-Карпа к транспортной сети $G = (V,\ E)$ с истоком $s$ и стоком $t$, то для всех вершин $v \in V\backslash\{s,\ t\}$ длина кратчайшего пути $\delta_f(s,\ v)$ в остаточной сети $G_f$ монотонно увеличивается с каждым увеличением потока. +\end{fulllemma} +\begin{proof} +Предположим, что для некоторой вершины $v \in V\backslash\{s,\ t\}$ существует такое увеличение потока, которое приводит к уменьшению длины кратчайшего пути из $s$ в $v$, и покажем, что это предположение приведёт нас к противоречию. Пусть $f$ -- поток, который был перед первым увеличением, приведшим к уменьшению длины некоего кратчайшего пути, а $f'$ -- поток сразу после увеличения. Пусть $v$ -- вершина с минимальной длиной кратчайшего пути $\delta_{f'}(s,\ v)$, которая уменьшилась в результате увеличения потока, так что $\delta_{f'}(s,\ v) < \delta_f(s,\ v)$. Пусть $p = s \to u \to v$ -- кратчайший путь из $s$ в $v$ в остаточной сети $G_{f'}$, такой, что $(u,\ v) \in E_{f'}$ и \[\delta_{f'}(s,\ u) = \delta_{f'}(s,\ v) - 1\] +Согласно выбору $v$, длина пути до вершины $u$ из $s$ не уменьшилась:\[\delta_{f'}(s,\ u) \geqslant \delta_{f}(s,\ u)\] +Утверждается, что $(u,\ v) \notin E_f$. + +Предположим, что $(u,\ v) \in E_f$. Но тогда: \[\delta_{f}(s,\ v) \leqslant \delta_{f}(s,\ u) + 1 \leqslant \delta_{f'}(s,\ u) + 1 = \delta_{f'}(s,\ v)\] -- противоречие предположению о том, что $\delta_{f'}(s,\ v) < \delta_f(s,\ v)$. + +Получилось так, что $(u,\ v) \notin E_f$, но $(u,\ v) \in E_{f'}$ -- добавилось ранее отсутствовавшее ребро. Объясним результат. + +Увеличение должно привести к возрастанию потока из $v$ в $u$. Алгоритм Эдмондса-Карпа всегда увеличивает пото вдоль кратчайших путей, поэтому последним ребром кратчайшего пути из $s$ в $u$ является $(v,\ u)$. Следовательно: \[\delta_{f}(s,\ v) = \delta_{f}(s,\ u) - 1 \leqslant \delta_{f'}(s,\ u) - 1 = \delta_{f'}(s,\ v) - 2\] -- опять противоречие предположению о том, что $\delta_{f'}(s,\ v) < \delta_f(s,\ v)$. + +Получается, что такой вершины $v$ не существует. Значит, для всех вершин $v \in V\backslash\{s,\ t\}$ длина кратчайшего пути $\delta_f(s,\ v)$ в остаточной сети $G_f$ монотонно увеличивается с каждым увеличением потока. +\end{proof} + +\begin{theorem} +Если алгоритм Эдмондса-Карпа выполняется для некоторой транспортной сети $G = (V,\ E)$ с истоком $s$ и стоком $t$, то общее число увеличений потока, выполняемых данным алгоритмом, равно $O(V \cdot E)$. +\end{theorem} +\begin{proof} +Назовём ребро $(u,\ v)$ остаточной сети \textbf{критическим} для увеличения пути $p$, если $c_f(p) = c_f(u,\ v)$. После увеличения потока вдоль увеличивающего пути все критические рёбра исчезают из остаточной сети. Кроме того, хотя бы одно ребро для любого увеличивающего пути должно быть критическим. Покажем теперь, что каждое из $|E|$ рёбер может становиться критическим не более $|V|\slash2$ раз. + +Пусть $u$ и $v$ -- вершины из $V$, соединённые ребром из $E$. Поскольку увеличивающие пути являются кратчайшими путями, то, когда ребро $(u,\ v)$ становится критическим, справедливо равенство \[\delta_{f}(s,\ v) = \delta_{f}(s,\ u) + 1\] +После того, как поток увеличен, ребро $(u,\ v)$ исчезает из остаточной сети. Оно не может появиться в другом увеличивающем пути, пока не будет уменьшен поток из $u$ в $v$, а это может произойти только в том случае, если на некотором увеличивающем пути встретится ребро $(v,\ u)$. Если в этот момент в сети $G$ поток представляет собой $f'$, то выполнено: \[\delta_{f'}(s,\ u) = \delta_{f'}(s,\ v) + 1\] +Поскольку $\delta_{f}(s,\ v) \leqslant \delta_{f'}(s,\ v)$, то по предыдущей лемме \[\delta_{f'}(s,\ u) = \delta_{f'}(s,\ v) + 1 \geqslant \delta_{f}(s,\ v) + 1 = \delta_{f}(s,\ u) + 2\] +Следовательно, за время с момента, когда ребро $(u,\ v)$ стало критическим, до момента, когда оно станет критическим повторно, расстояние от истока до $u$ увеличится минимум на 2. Начальное расстояние было $\geqslant 0$. Среди промежуточных вершин на кратчайшем пути из $s$ в $u$ не могут находиться $s,\ u$ или $t$, значит, к моменту, когда $u$ станет достижимой из истока, расстояние до неё будет $\leqslant |V| - 2$. Следовательно, ребро $(u,\ v)$ может стать критическим неболее чем ещё $(|V| - 2)\slash2 = |V|\slash2 - 1$ раз, то есть всего $\leqslant |V| \slash 2$ раз. + +Поскольку в остаточном графе имеется $O(E)$ пар вершин, которые могут быть соединены рёбрами в остаточной сети, общее количество критических рёбер в ходе выполнения алгоритма Эдмондса-Карпа равно $O(V \cdot E)$. Каждый увеличивающий путь содержит минимум 1 критическое ребро, а значит, теорема доказана. + +\end{proof} + +Если использовать поиск в ширину, то каждая итерация \textbf{while} занимает $O(E)$ времени. Итого, общее время работы алгоритма Эдмондса-Карпа становится равным $O(E) \cdot O(V \cdot E) = O(V \cdot E^2)$. +\newpage +\section{Задача о максимальном паросочетании. Сведение задачи о максимальном паросочетании в двудольном графе к задаче о максимальном потоке. Устойчивые паросочетания и алгоритм Гейла – Шепли.} + +\begin{definition} + Пусть дан неориентированный граф $G = (V,\ E)$. \textbf{Паросочетание} -- это такое подмножество рёбер $M \subseteq E$, что для всех вершин $v \in V$ в $M$ содержится не более одного ребра, инцидентного (то есть, либо входит, либо выходит из $v$, в неориентированном графе одно и то же). + + Вершина $v \in V$ -- \textbf{связанная} паросочетанием $M$, если в $M$ есть ребро, инцидентное $v$, иначе она называется \textbf{открытой}. + + \textbf{Максимальное паросочетание} -- это паросочетание максимальной мощности, то есть, такое паросочетание $M$, что для любое другое паросочетание $M'$ будет содержать число рёбер, не большее $|M$|. +\end{definition} + +\begin{definition} + Граф $G = (V,\ E)$ -- \textbf{двудольный}, если его можно разбить на два непересекающихся подмножества вершин $L \cup U = V$ и все рёбра проходят только между $L$ и $R$. +\end{definition} + +\subsection{Поиск максимального паросочетания в двудольном графе} + +С помощью метода Форда-Фалкерсона можно найти максимальное паросочетание в неориентированном двудольном графе $G = (V,\ E)$ за время, полиномиально зависящее от $|V|$ и $|E|$. Идея закоючается в построении транспортной сети, в которой потоки соответствуют паросочетаниям. + +Определим для двудольного графа соответствующую транспортную сеть $G' = (V',\ E')$ так: в качетсве истока $s$ и стока $t$ возьмём новые вершины, не входящие в $V$, и положим $V' = V \cup \{s,\ t\}$. Если разбиение вершин в $G$ представляет собой $V = L \cup R$, ориентированными рёбрами $G'$ являются рёбра $E$, направленые из $L$ в $R$, а также $|V|$ новых ориентированных рёбер -- из истока во все $L$, из всех $R$ в сток:\[E' = \{(s,\ u) : u \in L\} \cup \{(u,\ v) : (u,\ v) \in E\} \cup \{(v,\ t) : v \in R\}\] +Присвоим каждому ребру $E'$ единичную пропускную способность. Каждая вершина $V$ имеет хотя бы одно инцидентное ребро, поэтому $|E| \geqslant |V|\slash 2$. Отсюда $|E| \leqslant |E'| = |E| + |V| \leqslant 3|E| \Rightarrow |E'| = \Theta(E)$. + +Докажем, что паросочетание в $G$ соответствует потоку в $G'$. Назовём поток $f$ в транспортной сети $G = (V,\ E)$ \textbf{целочисленым}, если значения $f(u,\ v) \in \Z\ \forall\ (u,\ v) \in V\times V$. +\begin{fulllemma} +Пусть $G = (V,\ E)$ -- двудольный граф с разбиением вершин $V = L \cup R$, пусть $G' = (V',\ E')$ -- соответствующая транспортная сеть. Если $M$ -- паросочетание в $G$, то существует целочисленный поток $f$ в $G'$ величиной $|f| = |M|$. + +Справедливо и обратное: если $f$ -- целочисленный поток в $G'$, то в $G$ существует паросочетание $M$ мощностью $|M| = |f|$. +\end{fulllemma} +\begin{proof} +\begin{itemize} +\ \\ + \item $M \Longrightarrow f$ + + Определим $f$ следующим образом: \[f(u,\ v) = \begin{cases} 1 = f(s,\ u) = f(v,\ t),\ (u,\ v) \in M \\ 0 = f(s,\ u) = f(v,\ t),\ (u,\ v) \notin M\end{cases}\] Можно легко показать, что $f$ удовлетворяет условиям ограничения пропускной способности и сохранению потока. + + Заметим, что каждое ребро $(u,\ v) \in M$ соответствует единице потока в $G'$ по пути $s \to u \to v \to t$. Более того, пути, порождённые рёбрами $M$ суть непересекающиеся множества вершин (кроме $s$ и $t$). + + Значит, чистый поток через разрез $(L \cup \{s\},\ R \cup \{t\})$ равен $|M|$. Тогда по лемме о чистом потоке через разрез, $|f| = |M|$. + + \item $f \Longrightarrow M$ + + Пусть $f$ -- некий целочисленный поток в $G'$ и пусть\[ M = \{(u,\ v): u \in L,\ v \in R,\ f(u,\ v) > 0\}\] + Каждая вершина из $u \in L$ имеет только одно входящее ребро $(s,\ u),\ c(s,\ u) = 1$. Значит, в каждую вершину $u \in L$ входит не более одной единицы положительного потока, а если входит, то также должна выходить одна единица положительного потока (свойство сохранения потока). Более того, поскольку $f$ -- целочисленный, то эта единица входит и выходит не более чем по одному ребру. Значит, одна единица потока входит в $u$ тогда и только тогда, когда существует ровно одна вершина $v \in R\ |\ f(u,\ v) = 1$, и из каждой вершины $u\in L$ выходит не более одного ребра с положительным потоком. Аналогично для всех $v \in R$. Значит, $M$ -- паросочетание по определению. + + Заметим, что $f(s,\ u) = 1\ \forall\ u \in L$ (если связана ребром), и для каждого ребра $(u,\ v) \in E\backslash M$ имеем $f(u,\ v) = 0$. Следовательно, $f(L\cup \{s\},\ R\cup \{t\})$ -- чистый поток через разрез $(L\cup \{s\},\ R\cup \{t\})$ -- равен $|M|$. Тогда опять же по лемме о чистом потоке через разрез, $|f| = |f(L\cup \{s\},\ R\cup \{t\})| = |M|$. +\end{itemize} +\end{proof} +\begin{consequence} + Мощность максимального паросочетания $M$ в двудольном графе $G$ соотвествует величине $f$ максимального потока в соответсвующей ему транспортной сети $G'$. +\end{consequence} +\begin{proof} +Докажем от противного. Пусть $M$ -- максимальное паросочетание в $G$, но соответсвующий ему поток $f$ в $G'$ не максимален. Тогда в $G'$ существует максимальный поток $f'$ такой, что $|f'| > |f|$. Исходя из предыдущей леммы о соответствии потоков и паросочетаний, для поиска максимального паросочетания в $G$ можно применять алгоритмы поиска максимального потока в $G'$. Тогда применим метод Форда-Фалкерсона для нахождения максималльного потока $f'$. Возникает вопрос: а что если поток, который вернул алгоритм, окажется нецелым? Ведь $|f'|$ должен быть целым. Докажем, что такого произойти не может. +\begin{theorem} + Если функция пропускной способности $c$ принимает только целые значения, то максимальный поток $f$, полученыый с помощью метода Форда-Фалкерсона, таков, что $|f| \in \Z$. Более того, $\forall u,\ v \in V \Rightarrow f(u,\ v) \in \Z$. +\end{theorem} +\begin{proof} +Докажем индукцией по числу итераций цикла \textbf{while} алгоритма Форда-Фалкерсона. +\end{proof} +Пропускные способности в $G'$ -- целые, значит, поток $f'$ -- целочисленный. Тогда он соответсвует некоторому паросочетанию $M'$ в $G$ мощностью $|M'| = |f'| > |f| = |M|$, что противоречит нашему предположению о том, что $M$ -- максимальное паросочетание. + +Аналогично показывается, что если $f$ -- максимальный поток в $G'$, то соответствующее ему паросочетание в $G$ является максимальным. +\end{proof} + +Таким образом, для заданного неориентированного двудольного графа $G$ можно найти максимальное паросочетание путём создания транспортной сети $G'$ и применения на ней метода Форда-Фалкерсона. + +Любое паросочетание в двудольном графе имеет мощность $\leqslant \min(L,\ R) = O(V)$, то величина максимального потока в $G'$ равна $O(V)$. Тогда максимальное паросочетание в двудольном графе можно найти за $O(V\cdot E') = O(V \cdot E)$, так как $|E'| = \Theta(E)$. + +\subsection{Задача об устойчивом паросочетании и алгоритм Гейла – Шепли.} + +Есть $N$ мужчин и $N$ женщин. Они обладают следующими особенностями: +\begin{enumerate} + \item Каждый человек оценивает лишь людей противоположного пола (все гетеросексуальны). + \item Каждый мужчина может отсортировать женщин от "наименее привлекательной" к "наиболее привлекательной", причем его предпочтения не меняются (у каждого мужчины своя функция оценки). + \item Каждая женщина может отсортировать мужчин от "наименее привлекательного" к "наиболее привлекательному", причем её предпочтения не меняются (у каждой женщины своя функция оценки). +\end{enumerate} +По этим данным можно построить двудольный граф $G = (V, E)$, где $V = M \cup W$ -- разбиение ($M$ -- множество мужчин, $W$ -- множество женщин). Весами рёбер $(m,\ w)\ |\ m \in M,\ w \in W$ будут результаты функции оценки $c_w(m)$ женщины $w$ для мужчины $m$. Дальнейшую терминологию можно путём ассоциативного анализа перевести на формальный язык графов, потоков и паросочетаний. +\begin{definition} + Рассмотрим некоторое паросочетание $P$ в $G$. Пара $A-b$($A \in M,\ b \in W$) называется неустойчивой, если: + \begin{enumerate} + \item В паросочетании есть пары $A-a$ и $B-b$ ($B \in M,\ a \in W$, $A$ женат на $a$, $B$ женат на $b$) + \item $A$ считает $b$ привлекательней, чем $a$ + \item $b$ считает $A$ привлекательней, чем $B$ + \end{enumerate} + Тогда \textbf{устойчивым паросочетанием} называется паросочетание без неустойчивых пар. +\end{definition} + +Наша задача -- нахождение полного устойчивого паросочетания по данным спискам предпочтений. + +\paragraph{Агоритм Гейла-Шепли} + +Примерное описание алгоритма: + +\begin{enumerate} + \item мужчины делают предложение наиболее предпочитаемой женщине; + \item каждая женщина из всех поступивших предложений выбирает наилучшее и отвечает на него «может быть» (помолвка), на все остальные отвечает «нет» (отказ) + \item мужчины, получившие отказ, обращаются к следующей женщине из своего списка предпочтений, мужчины, получившие ответ «может быть», ничего не делают; + \item если женщине пришло предложение лучше предыдущего, то она прежнему претенденту (которому ранее сказала «может быть») говорит «нет», а новому претенденту говорит «может быть»; + \item шаги 1-4 повторяются, пока у всех мужчин не исчерпается список предложений, в этот момент женщины отвечают «да» на те предложения «может быть», которые у них есть в настоящий момент. +\end{enumerate} + +Псевдокод: + +\begin{algorithm} + \caption{\algname{Gale-Shepli}($G = (V,\ E),\ men\_rates[][],\ women\_rates[][]$} + \begin{algorithmic} + \Require Двудольный граф $G$, где $V = M \cup W$, списки значений функции оценки для каждого мужчины и женщины. Изначально все мужчины и все женщины не женаты (не замужем) + \Ensure Устойчивое паросочетание + \State + \While{существует $m$ -- некоторый свободный мужчина, не делавший предложения всем женщинам} + \State $w$ -- первая женщина из списка $men\_rates[m][]$, которой $m$ ещё не делал предложение + \If{$w$ свободна} + \State помечаем $m$ и $w$ помолвленными + \ElsIf{$women\_rates[w][m] > women\_rates[w][M]$, где $M$ -- текущий кавалер $w$ }\Comment{$w$ предпочитает $m$ своему "текущему" жениху $M$} + \State помечаем $m$ и $w$ помолвленными, $M$ -- свободным + \Else + \State $w$ отказывает $m$ + \end{algorithmic} +\end{algorithm} + +\paragraph{Корректность} + +Заметим, что все мужчины делают предложения женщинам в порядке убывания симпатии. Кроме того, как только женщина была помолвлена, она не может стать непомолвленной, она может только улучшить свой выбор (сказать «может быть» более предпочтительному кандидату). + +Покажем теперь, что что по завершении алгоритма все мужчины и женщины будут заняты. Предположим, что некоторый мужчина $m$ не женат по завершении алгоритма. Тогда некоторая женщина $w$ не замужем, значит, никто из свободных мужчин не делал ей предложение. Однако, поскольку $m$ не женат, то он сделал предложение абсолютно всем женщинам -- противоречие. Аналогичные рассуждения приводятся для случая, если некторая женщина $w$ окажется не замужем. + +Докажем теперь, что по завершении алгоритма не останется неустойчивых пар. Предположим $A-b$ ($A,\ B$ - мужчины; $a,\ b$ - женщины; $A$ женат на $a$, $B$ женат на $b$) - неустойчивая пара в паросочетании, найденном алгоритмом Гейла-Шепли. Рассмотрим два случая: +\begin{enumerate} + \item $A$ не делал предложения $b$. Но тогда $A$ находит $a$ более привлекательной, чем $b$, и $A-b$ - устойчивая пара. + \item $A$ делал предложение $b$. Но тогда $b$ отказала $A$ (сразу или на одной из последующих итераций), значит, $b$ находит $B$ более привлекательным, чем $A$, и $A-b$ - устойчивая пара. +\end{enumerate} + +Таким образом, по завершении алгоритма все мужчины и женщины будут заняты и неустойчивых пар не останется. Значит, алгоритм Гейла-Шепли работает корректно. + +\paragraph{Асимптотика} + +Отметим, что алгоритм завершается после максимум $n^2$ итераций цикла \textbf{while} -- на каждой итерации мужчина делает предложение очередной женщине. Но всего может быть не более $n^2$ предложений. Можно заранее сопоставить каждому мужчине и каждой женщине по списку (рейтингу) соответственно женщин и мужчин. Это займёт $O(n^2)$ времени. Тогда внутренний цикл \textbf{while} будет работать за $O(1)$. Таким образом, итоговая асимптотика составляет $O(n^2) + \big[O(n^2) \cdot O(1)\big] = O(n^2)$. + +\newpage +\section{Минимальный разрез в неориентированном графе. Алгоритм Каргера. Задача о назначениях (поиск совершенного паросочетания с минимальным весом во взвешенном двудольном графе). Алгоритм, последовательно находящий самые дешевые увеличивающие пути.} +Пусть $G$ — неориентированный мультиграф с множеством вершин $V$ и множеством ребер $E$, и $|V| = n$, $|E| = m$. +\begin{definition} + \textbf{Стягиванием} ребра $(u,\ v)$ назовем следующую последовательность действий: + \begin{enumerate} + \item Добавляем новую вершину $y$. + \item Для всех ребер $(x,\ u)$ и $(x,\ v)$ (где $x \in V$, $x \neq v$, $x \neq u$) добавляем новые ребра $(x,\ y)$. При этом, если получаются кратные ребра — оставляем их. + \item Удаляем вершины $u$ и $v$ и все инцидентные (смотри ранее) им ребра. + \end{enumerate} + + \textbf{Мультивершиной} называется вершина, полученная из двух вершин стягиванием ребра между ними, каждая из которых, в свою очередь, может быть также мультивершиной. + + \textbf{Стянутым графом} называется граф, состоящий из двух мультивершин или одной мультивершины и одной обычной вершины (которую, чтобы избежать оговорок в дальнейшем, также будем называть мультивершиной), полученный из исходного графа последовательным стягиванием произвольных ребер. +\end{definition} +\begin{definition} + \textbf{Разрез}$(L,\ R)$ -- разбиение множества $V = L \cup R,\ L \cap R = \varnothing$ + + \textbf{Вес разреза} $(L,\ R)$ -- величина $w(L,\ R)$ и вычисляется по закону:\[w(L,\ R) = \sum\limits_{(u,\ v) \in E,\ u \in L,\ v \in R} w(u,\ v)\] где $w(u,\ v)$ -- вес ребра $(u,\ v)$ (в случае невзвешенного графа считаем $w(u,\ v) = 1$, и вес разреза будет равен количеству рёбер между $L$ и $R$). +\end{definition} + +\textbf{Задача поиска разреза минимальной веса} заключается в поиске разреза минимального веса среди всех возможных разрезов исходного графа. Эту задачу можно решить с помощью любого из алгоритмов поиска максимального потока, зафиксировав произвольную вершину $s$ в качестве истока и запуская его $O(n)$ раз для всех возможных стоков. Рассмотрим, однако, более простой и сравнимо эффективный алгоритм -- Алгоритм Каргера. Рассмотрим вариант для невзвешенного графа. + +\subsection{Алгоритм Каргера} + +Пусть дан невзвешенный граф $G = (V,\ E)$. Будем хранить минимальный вес разреза в переменной $min\_cut$, изначально равной бесконечности. Далее, выберем некоторое значение $count$ (подробнее будет описано ниже) и будем $count$ раз запускать функцию $getCut$. +Функция $getCut$ возвращает вес случайного потока, а не минимального, и для того, чтобы наверняка найти вес минимального, необходим вызвать эту функцию $count$ раз. Реализация функции $getCut$ — это и есть основа алгоритма. Будем действовать следующим образом: пока вершин больше двух, будем выбирать случайное ребро и стягивать его. Когда в графе останется две вершины, то количество ребер между этими вершинами будет равно весу некоторого разреза исходного графа. + +Псевдокод: + +\begin{algorithm}[H] + \caption{\algname{Karger}($G = (V,\ E),\ count$)} + \begin{algorithmic}[1] + \Require Взвешенный граф $G$ + \Ensure Вес минимального разреза графа + \State + \Function{getCut}{$G' = (V',\ E')$} + \State $vertex\_count = |V'|$\Comment{Количество вершин} + \While{$vertex\_count > 2$} + \State $edge$ -- случайное ребро из $G$ + \State стягиваем ребро $edge$ + \State $vertex\_count = vertex\_count - 1$ + \EndWhile + \State $edge\_count$ -- количество рёбер в получившемся $G'$ + \State \Return $edge\_count$ + \EndFunction + \State + \State + \State $min\_cut = \infty$ + \For{$k = 1\ \textbf{to}\ count$} + \State $Cut = getCut(G)$ + \If{$Cut < min\_cut$} + \State $min\_cut = Cut$ + \EndIf + \EndFor + \State \Return $min\_cut$ + \end{algorithmic} +\end{algorithm} + +\paragraph{Корректность} + + Для удобства доказательства и оценок вероятностей, будем считать, что мы ищем не просто вес минимального разреза, а величину конкретного минимального разреза. То есть зафиксируем какой-то один из минимальных разрезов, и если функция $getCut$ вернет правильный вес, но посчитает его на другом минимальном разрезе, то будем считать, что ответ получен неверный. Это условие не ухудшает оценки вероятностей и время работы алгоритма. + + \begin{fulllemma} + Следующие утверждения выполнены: + \begin{enumerate} + \item Пусть $y$ — некоторая мультивершина, $u$ и $v$ - какие-то две из вершин, которые были стянуты в вершину $y$. Тогда существует такой путь $p$ в исходном графе $G$ между вершинами $u$ и $v$, что ко всем ребрам этого пути была применена операция стягивания. + \item Если стянуть некоторое ребро $e = (u,\ v)$ в графе $G$, то вес минимального разреза в графе $G' = G\setminus e$ будет не меньше чем вес минимального разреза в исходном графе $G$. + \item Пусть $c$ — величина минимального потока в графе $G$. Тогда $m \geqslant (n\cdot c)/2$. + \item Функция $getCut$ после своего выполнения получит стянутый граф $G'$ соответствующий конкретному разрезу $(L,\ R)$ исходного графа $G$ тогда и только тогда, когда ни одно ребро, принадлежащее разрезу $(L,\ R)$, не будет стянуто. + \end{enumerate} + \end{fulllemma} +\begin{proof} +\begin{enumerate} + \item Рассмотрим подграф $G'$ исходного графа $G$ в который входят все ребра, которые были стянуты в вершину $y$. Очевидно, что $G'$ связен, а значит в нем существует путь между его любыми двумя вершинами. Следовательно, существует путь между $u$ и $v$, состоящий из стянутых ребер. + \item Составим биекцию между ребрами графов $G$ и $G'$, не рассматривая ребра между вершинами $u$ и $v$ в графе $G$. Очевидно, что это возможно, исходя из следующих соображений: Все ребра в $G$, не инцидентные вершинам $u$ и $v$, остались без изменений, а всем ребрам, инцидентным этим вершинам, по определению стягивания можно сопоставить новое ребро в $G'$. Пусть $(L',\ R')$ — минимальный разрез в графе $G'$, и, не уменьшая общности, $y \in L'$. Рассмотрим разрез $(L',\ R')$ в графе $G$. Исходя из биекции между ребрами и тем, что все ребра вида $(u,\ v)$ не пересекают разрез (так как $u \in L,\ v \in L)$, то $w(L',\ R') = w(L, R')$. Тогда если разрез $(L,\ R')$ в графе G — минимален, вес минимального разреза в $G'$ совпадает с весом минимального разреза в $G$. Если в $G$ существует разрез меньшего веса, то вес минимального разреза в $G'$ больше чем в $G$. + \item Заметим, что, чтобы выполнялось условие, степень каждой вершины должна быть не менее, чем $c$. Действительно, пусть $\deg(v) < c$ для некоторой вершины $v \in V$. Тогда $w(v, G \setminus v) = \deg(v) < c$, что противоречит условию. Далее, по лемме о рукопожатиях имеем, что $m \geqslant (n \cdot c)/2$. + \item $\Longrightarrow$ От противного. Если некоторое ребро $(u,\ v)$, принадлежащее разрезу $(L,\ R)$ в G будет стянуто, то обе вершины $u$ и $v$ будут принадлежать одной мультивершине, а значит $G'$ не соответствует разрезу $(L,\ R)$. Противоречие. + + $\Longleftarrow$ Пусть ни одно ребро, принадлежащее разрезу $(L,\ R)$ не было стянуто. Рассмотрим произвольную пару вершин $u \in L$ и $v \in R$ в графе $G$. Если алгоритм стянул $u$ и $v$ в одну мультивершину в $G'$, тогда по пункту 1 существует путь $path$ между вершинами $u$ и $v$, и все ребра этого пути были стянуты. Но $path$ пересекает разрез $(L,\ R)$, что противоречит предположению, что ни одно ребро не было стянуто. Значит, вершины из любой пары $u \in L$, и $v \in R$ были стянуты в разные мультивершины. А так как стянутый граф состоит только из двух мультивершин, значит одна из них была получена стягиванием всех вершин из $L$, а другая — из $R$. +\end{enumerate} +\end{proof} +\begin{theorem} + Для вероятности $p$ того, что функция $getCut$ после своего выполнения получит стянутый граф $G'$ соответствующий конкретному разрезу $(L,\ R)$ исходного графа $G$ верна следующая оценка снизу — \[p(L,\ R) \geqslant \frac{2}{n^2}\]. +\end{theorem} +\begin{proof} +По пункту 4 леммы искомый стянутый граф будет получен тогда и только тогда, когда ни одно из ребер разреза не будет стянуто. Так как на каждой итерации алгоритма мы случайно выбираем ребро для стягивания, то можно оценить вероятность того, что ни одно из ребер разреза не будет стянуто. Каждое стягивание уменьшает количество ребер на 1. Таким образом после $i$-ой итерации алгоритма количество вершин в текущем графе будет равно $n - i + 1$. Рассчитаем вероятность того, что на $i$-ой итерации будет стянуто ребро из разреза $(L,\ R)$. Пусть $w = w(L,\ R)$. По пункту 2 леммы величина минимального потока в текущем графе будет не меньше, чем $w$, и в нем будет не менее $\frac{w(n-i+1)}{2}$ вершин по пункту 3 леммы. Тогда вероятность того, что будет стянуто ребро из разреза $(L,\ R)$, при условии, что до этого не было стянуто ни одно из ребер разреза, будет не более \[\frac{2\cdot w(L,\ R)}{w\cdot (n-i+1)}=\frac{2}{n-i+1}\] +Обозначим за $\xi_i$ событие, что на $i$-ой итерации случайным образом будет выбрано ребро из разреза $(L,\ R)$. Тогда мы только что установили, что +\begin{gather*} +p(\xi_i | \overline{\xi_1} \wedge \ldots \wedge \overline{\xi_{i-1}}) \leqslant \frac{2}{n-i+1}\\ +p(\overline{\xi_i} | \overline{\xi_1} \wedge \ldots \wedge \overline{\xi_{i-1}}) = 1 - p(\xi_i | \overline{\xi_1} \wedge \ldots \wedge \overline{\xi_{i-1}}) \geqslant 1 - \frac{2}{n-i+1} = \frac{n-i-1}{n-i+1}. +\end{gather*} +Тогда вероятность того, что во время работы функции не будет стянуто ни одно ребро оценивается следующим образом: +\begin{gather*} +p(\overline{\xi_1} \wedge \ldots \wedge \overline{\xi_{n-2}}) = \prod\limits_{i=1}^{n-2} p(\overline{\xi_i} | \overline{\xi_1} \wedge \ldots \wedge \overline{\xi_{i-1}}) \geqslant\\ +\geqslant \prod\limits_{i=1}^{n-2} \frac{n-i-1}{n-i+1} = \frac{n - 2}{n} \cdot \frac{n-3}{n-1} \cdot \frac{n-4}{n-2} \cdot \ldots \cdot \frac{2}{4} \cdot \frac{1}{3} = \frac{2}{n(n-1)} \geqslant \frac{2}{n^2} +\end{gather*} +\end{proof} +Таким образом, мы видим, что вероятность получить правильный ответ после единичного запуска функции $getCut$ очень мала. Однако, вызвав эту функцию $count$ раз мы увеличим эту вероятность. Рассчитаем значение $count$ такое, чтобы вероятность успеха была близка к $1$. + +Для этого воспользуемся следующим неравенством:\[e^x \geqslant 1 + x\] для любого вещественного $x$. + +Вероятность того, что мы не получим правильный ответ после $count$ независимых запусков равна\[(1-\frac{2}{n^2})^c\]. +Пусть $count = n^2\ln(n)$. Тогда в силу указанного выше неравенства:\[(1-\frac{2}{n^2})^{count} \leqslant e^{count \cdot (-\frac{2}{n^2})} = e^{-2 \ln(n)} = \frac{1}{n^2}\] +То есть, если вызвать функцию $getCut$ $n^2\ln(n)$ раз, и после каждой итерации запоминать минимум, то вероятность того, что найденный ответ будет неверен, $\leqslant \frac{1}{n^2}$. Даже при небольших значениях $n$ алгоритм практически гарантированно выдает правильный ответ. + +\paragraph{Асимптотика} + +Время работы функции $getCut$ — $O(n^2)$. Функция работает $O(n^2\log(n))$ раз. Итоговое время работы — $O(n^4 \log(n))$. + +Можно модифицировать алгоритм. Заметим, что вероятность стягивания вершины, принадлежащей минимальному разрезу, в начале выполнения функции $getCut$ довольна мала, в то время, как вероятность стянуть ребро, которое не следует стягивать, ближе к концу работы функции существенно возрастает. Тогда будем использовать следующую рекурсивную версию алгоритма: +\begin{itemize} + \item Запускаем функцию $getCut$ и стягиваем ребра до тех пор, пока не останется $\frac{n}{\sqrt{2}}$ вершин. + \item Запускаем независимо эту же функцию для получившегося графа дважды и возвращаем минимальный из ответов. +\end{itemize} +Такая модификация алгоритма выдает правильный ответ с точностью, не менее $\frac{1}{\log(n)}$. Время работы функции $getCut$ вычисляется рекурсивной функцией:\[T(n) = O(n^2) + T(n/\sqrt{2}) = O(n^2\log(n))\] +Это медленнее, чем оригинальный алгоритм, однако вероятность нахождения разреза минимального веса экспоненциально выше. Достаточно запустить алгоритм $c\log^2(n$) раз, где $c$ - некоторая константа. Действительно, рассчитаем вероятность неправильного ответа также, как раньше:\[(1-\frac{1}{log(n)})^{c\log^2(n)} \leqslant e^{c\log^2(n) \cdot -\frac{1}{log(n)}} = \frac{1}{n^c}\] +Итоговое время работы — $O(n^2\log(n)) \cdot c\log^2(n) = O(n^2\log^3(n))$ + +\subsection{Задача о назначениях} +\begin{on1n} +Паросочетание $M$ графа $G$ называется совершенным (или полным), если оно покрывает все вершины графа. + +Пусть дан взвешенный полный двудольный граф c целыми весами ребер $G = (V,\ E)$ и $V = n$, нужно найти в нем полное паросочетание минимального веса. Вес паросочетания определяется как сумма весов его ребер. +\end{on1n} +Возьмём разбиение $V = L\cup R$.Далее будем обозначать вес ребра $(u,\ v)$ — как $c(u,\ v)$. +\begin{fulllemma} +Если веса всех ребер графа, инцидентных какой-либо вершине, изменить (увеличить или уменьшить) на одно и то же число, то в новом графе оптимальное паросочетание будет состоять из тех же ребер, что и в старом. +\end{fulllemma} +\begin{proof} +Полное паросочетание для каждой вершины содержит ровно одно ребро, инцидентное этой вершине. Указанная операция изменит на одно и то же число вес любого паросочетания. Значит, ребро, которое принадлежало оптимальному паросочетанию в старом графе, в новом графе тоже будет ему принадлежать. +\end{proof} +Далее будем рассматривать только графы с неотрицательной весовой функцией, так как, согласно этой лемме, задачу о назначениях на остальных графах можно свести к задаче о назначениях на них. +\begin{fulllemma} +Выделим в множествах $L$ и $R$ подмножества $L',\ R'$. Пусть $d = \min \{c(u,\ v) \mid u \in L \setminus L',\ v \in R'\}$. Прибавим $d$ ко всем весам ребер, инцидентных вершинам из $L'$. Затем отнимем $d$ от всех весов ребер, инцидентных вершинам из $R'$ (далее для краткости эта операция обозначается как $L' \uparrow\downarrow R'$). Тогда: +\begin{enumerate} + \item Веса всех ребер графа останутся неотрицательными. + \item Веса ребер вида $(u,\ v)$, где $u \in L',\ v \in R'$ или $u \in L \backslash L',\ v \in R \backslash R'$, не изменятся. +\end{enumerate} +\end{fulllemma} +\begin{proof} +Рассмотрим матрицу весов графа. Не умаляя общности, можно сказать, что множества $L'$ и $R'$ состоят из первых элементов множеств $L$ и $R$ соответственно (мы упорядочиваем множества по номерам вершин). Тогда вся матрица делится на 4 блока: +\ \\ + +\begin{tabular}{c||*{3}{r|}|} +& $R'$ & $R \backslash R'$\\ +\hline +\hline +$L'$ & $A + d - d$ & $C + d$\\ +$L \backslash L'$ & $B - d$ & $D$\\ +\hline +\end{tabular}\\ + +Веса группы $A$ будут сначала увеличены, а потом уменьшены на $d$, поэтому они не изменятся, веса группы $D$ вообще изменяться не будут. Все веса группы $B$ будут уменьшены на $d$, но $d$ — минимум среди этих весов, поэтому они останутся неотрицательными. +\end{proof} +\begin{fulllemma} +Если веса всех ребер графа неотрицательны и некоторое полное паросочетание состоит из ребер нулевого веса, то оно является оптимальным. +\end{fulllemma} +\begin{proof} +Действительно, паросочетание с какими-то другими весами ребер имеет больший вес и оптимальным не является. +\end{proof} + +\paragraph{Алгоритм, последовательно находящий самые дешевые увеличивающие пути -- Венгерский Алгоритм} + +Доказанные ранее утверждения позволяют придумать схему алгоритма, решающего задачу о назначениях: нужно найти полное паросочетание из ребер нулевого веса в графе, полученном из исходного преобразованиями, описанными в первых двух леммах. + +Алгоритм, решающий задачу, работает с графом, как с матрицей весов. +\begin{enumerate} + \item Вычитаем из каждой строки значение ее минимального элемента. Теперь в каждой строке есть хотя бы один нулевой элемент. + \item Вычитаем из каждого столбца значение его минимального элемента. Теперь в каждом столбце есть хотя бы один нулевой элемент. + \item Ищем в текущем графе полное паросочетание из ребер нулевого веса: + \begin{itemize} + \item Если оно найдено, то желаемый результат достигнут, алгоритм закончен. + \item В противном случае, покроем нули матрицы весов минимальным количеством строк и столбцов. Пусть $L_c$ и $R_c$ — множества вершин минимального вершинного покрытия из левой и правой долей (то есть, строк и столбцов) соответственно, тогда применим преобразование $L_c \uparrow\downarrow (R \setminus R_c$). Для этого преобразования $d$ будет минимумом по всем ребрам между $L \setminus L_c$ и $R \setminus R_c$, то есть, ребер нулевого веса здесь нет, поэтому, после его выполнения в матрице весов появится новый нуль. После этого перейдем к шагу 1. + \end{itemize} +\end{enumerate} +\paragraph{Асимптотика} +Поиск максимального паросочетания или минимального вершинного покрытия в двудольном графе совершается за $O(n^3)$ операций. При каждом повторении шагов 1-4 в матрице весов появляется новый нуль. Этот нуль соответствует некоторому новому ребру между вершинами из множеств $L \setminus L_c$ и $R \setminus R_c$. Всего в графе $n^2$ ребер, значит, всего будет совершено не более $O(n^2)$ итераций внешнего цикла. Поэтому, верхняя оценка времени работы данного метода — $O(n^5)$. Более точная оценка довольно сложна и зависит от порядка чисел в матрице весов графа. + +\paragraph{Эффективная реализация} +Данный алгоритм можно реализовать более эффективно, если будем добавлять в рассмотрение строки матрицы одну за одной, а не рассматривать их все сразу. + +Дальше идёт малость бред, который я сам плохо понимаю + +Назовём \textbf{потенциалом} два произвольных массива чисел $u[1 \ldots n]$ и $v[1 \ldots n]$ таких, что выполняется условие: +\[u[i] + v[j] \leqslant a[i][j] \forall\ i = 1 \ldots n\], где $a$ — заданная матрица. +\begin{enumerate} + \item Добавляем в рассмотрение очередную строку матрицы $a$. + \item Пока нет увеличивающей цепи, начинающейся в этой строке, пересчитываем потенциал. + \item Как только появляется увеличивающая цепь, чередуем паросочетание вдоль неё (включая тем самым последнюю строку в паросочетание), и переходим к началу (к рассмотрению следующей строки). +\end{enumerate} + +\paragraph{Идеи} +\begin{enumerate} + \item Для проверки наличия увеличивающей цепочки нет необходимости запускать обход Куна заново после каждого пересчёта потенциала. Вместо этого можно оформить обход Куна в итеративном виде: после каждого пересчёта потенциала мы просматриваем добавившиеся жёсткие рёбра и, если их левые концы были достижимыми, помечаем их правые концы также как достижимые и продолжаем обход из них. + \item Развивая эту идею дальше, можно прийти к такому представлению алгоритма: это цикл, на каждом шаге которого сначала пересчитывается потенциал, затем находится столбец, ставший достижимым (а таковой всегда найдётся, поскольку после пересчёта потенциала всегда появляются новые достижимые вершины), и если этот столбец был ненасыщен, то найдена увеличивающая цепь, а если столбец был насыщен — то соответствующая ему в паросочетании строка также становится достижимой. + \item Теперь алгоритм принимает вид: цикл добавления столбцов, на каждом из которых сначала пересчитывается потенциал, а затем какой-то новый столбец помечается как достижимый. + \item Чтобы быстро пересчитывать потенциал (быстрее, чем наивный вариант за $O(n^2))$, надо поддерживать вспомогательные минимумы по каждому из столбцов $j$. +\end{enumerate} +Положим: +$a[1 \dots n][1 \dots m]$ — прямоугольная входная матрица, где$n \leqslant m$. Матрица хранится в 1-индексации. + +$u[0 \dots n],\ v[0 \dots n]$ — потенциал. + +$p[0 \dots m]$ — массив паросочетания. Для каждого стобца $i = 0 \dots m$ он хранит номер соответствующей выбранной строки$p[i]$ (или 0, если ничего не выбрано). Полагаем, что $p[0]$ равно номеру рассматриваемой строки. + +$minv[1 \dots m]$ — массив, хранящий для каждого столбца $j$ вспомогательные минимумы, необходимые для быстрого пересчета потенциала. + +$minv[j] = \min\limits_{i \in Z_1}(a[i][j] - u[i] - v[j])$, где $Z_1$ — множество вершин первой доли, которые были посещены обходом алгоритма Куна при попытке поиска увеличивающей цепи. + +$way[1 \dots m]$ — массив, содержащий информацию о том, где эти минимумы достигаются, чтобы мы могли впоследствии восстановить увеличивающую цепочку. + +Псевдокод: +%function hungarianAlgorithm(a): +% for i = 1 to n // рассматриваем строки матрицы a +% p[0] = i // для удобства реализации + % j0 = 0 // свободный столбец + % заполняем массивы minv — \infty, used — false + % while true // ищем свободный столбец + % used[j0] = true, i0 = p[j0] // помечаем посещенными столбец j0 и строку i0 + % пересчитываем массив minv, находим в нем минимум \delta (изначально \infty) и столбец j1, в котором он достигнут + % for j = 0 to m // производим пересчет потенциала u и v, соответствующее изменение minv + % if used[j] + % u[p[j]] += \delta + % v[j] -= \delta + % else + % minv[j] -= \delta + % если нашли свободный столбец — выходим из цикла + % ищем увеличивающуюся цепочку, пользуясь массивом предков way + +\paragraph{Асимптотика} +Оценим время работы алгоритма. Во внешнем цикле мы добавляем в рассмотрение строки матрицы одну за другой. Каждая строка обрабатывается за время $O(n^2)$, поскольку при этом могло происходить лишь $O(n)$ пересчётов потенциала (каждый — за время $O(n)$), для чего за время $O(n^2)$ поддерживается массив $minv$; алгоритм Куна суммарно отработает за время $O(n^2)$ (поскольку он представлен в форме $O(n)$ итераций, на каждой из которых посещается новый столбец). + +Итоговая асимптотика составляет $O(n^3)$. + +\newpage +\section{Приближенные алгоритмы. PTAS для задачи о рюкзаке.} +\begin{definition} +Пусть $OPT$ -- оптимальный алгоритм. \textbf{Приближенный алгоритм} $A$ имеет относительную оценку точности +$\alpha$, если для любого входа $I$ +выполняется неравенство +\begin{itemize} + \item $A(I)\slash OPT(I) \geqslant \alpha$ для максимизационной задачи; + \item $A(I)/OPT(I)\leqslant \alpha$ для минимизационной задачи. +\end{itemize} +Такие алгоритмы мы называем $\alpha$-приближенными. + +Для оптимизационных задач $\alpha \leqslant 1$, для минимизационных — $\alpha \geqslant 1$. +Алгоритм тем лучше, чем ближе $\alpha$ к 1. +\end{definition} +\begin{definition} +Пусть дана максимизационная задача $\Pi$. + +$\pi$ имеет \textbf{полиномиальную приближенную схему} \textbf{(PTAS)}, если: +\begin{enumerate} + \item для любого $\epsilon \geqslant 0$ существует $(1 - \epsilon)$-приближенный алгоритм для $\Pi$. + \item для любого $\epsilon > 0$ время работы такого алгоритма зависит от $n$ полиномиально. +\end{enumerate} +Если же время работы такого алгоритма полиномиально не +только по $n$, но и по $1\slash\epsilon$, то полученная схема называется +\textbf{полностью полиномиальной приближенной схемой (FPTAS)}. +Определение для минимизационной задачи полностью +аналогично. +\end{definition} +\begin{on1n} +\begin{itemize} + \item Дано $n$ предметов с весами $w_1, \ldots , w_n \in \N$ и стоимостями $p_1, \ldots, p_n \in \N$, а также общий вес $W$. + \item Задача о рюкзаке заключается в нахождении такого множества предметов $I \subseteq [1\ldots n]$, что $\sum\limits_{i \in I}w_i \leqslant W$ и $\sum\limits_{i \in I}p_i$ максимально. + \item Необходимое условие оптимальности: $\max\limits_{i \in [1\ldots n]}w_i \leqslant W$. +\end{itemize} +\end{on1n} + +\begin{algorithm}[H] + \caption{Псевдополиномиальный Рюкзак} + \label{algo:Knapsack} + \begin{algorithmic}[1] + \Require Веса $\{w_i\}$, стоимости $\{p_i\}$, максимальный вес $W$. + \Ensure Максимальное $p$, для которого минимальный объем, необходимый, чтобы уложить предметы с номерами, не превосходящими $n$, общей стоимостью не менее $p \leqslant W$. + \\ + \State $S = \sum\limits_{i \in [1\ldots n]}$ + \State $P = \max\limits_{i \in [1\ldots n]}p_i$ + \State за $w(k,\ p)$ обозначим минимальный объем, необходимый для того, чтобы уложить предметы с номерами, не превосходящими $k \in [1\ldots n]$, общей стоимостью не менее $p \leqslant S$. + \State $w(0,\ 0) = 0$ + \For{p = 1 \textbf{to} S} + \State $w(0,\ p) = \infty,\ p > 0$ + \EndFor + \For{k = 1 \textbf{to} n} + \For{p = 1 \textbf{to} S} + \State вычисляем $w(k,\ p)$ + \State $w(k ,\ p) = \min{w(k - 1,\ p),\ w(k - 1,\ p - p_{k}) + w_{k}}$ + \EndFor + \EndFor + \State \Return максимальное $p$, для которого $w(n,\ p) \leqslant W$ + \end{algorithmic} +\end{algorithm} + + +\paragraph{Асимптотика} + +Ясно, что алгоритм работает не более, чем $n\cdot S$, то есть не более $n^2\cdot P$. Значит, мы могли бы решить задачу за полиномиальное время, +если бы $p_i$ были достаточно маленькими. + +Идея: выберем достаточно большое число и разделим на него все стоимости. Оптимальное решение не перестанет быть оптимальным, а время работы алгоритма уменьшится. В чем же тогда подвох? Стоимости могут перестать быть целыми после деления. Округлим их и будем надеяться, что потеряли мы от этого не +очень много. + +Итак, пусть задан $\epsilon$, определяющий, с какой точностью мы хотим +найти ответ. Пусть\[K_\epsilon = \frac{P}{(1 + 1\slash\epsilon)\cdot n}\] +Поделим все $p_i$ на $K_\epsilon$ и округлим:$p_i'= [p_i\slash K_\epsilon]$ + +Запустим Псевдополиномиальный Рюкзак на полученном наборе стоимостей. Время работы алгорита не превосходит $n^2\cdot\max p_i' \leqslant n^3\cdot P(1 + 1\slash\epsilon)\slash P$. + +Осталось доказать, что полученный алгоритм дает достаточно +хорошее приближение. + +Пусть $A_\epsilon$ — общая стоимость набора предметов, который вернул +алгоритм. Заметим, что $A_\epsilon \geqslant A_{opt} - K_\epsilon n$: псевдополиномиальный алгоритм находит точное решение, поэтому отклонение могло появиться только при округлении. При округлении могло потеряться не более 1 на каждом предмете, эта потеря домножается на $K_\epsilon$ при обратном переходе от $p_i'$ к $p_i$. + +$A_{opt} \geqslant P$, так как в рюкзак можно просто засунуть самый дорогой предмет. Тогда: +\begin{gather*} + \frac{A_\epsilon}{A_{opt}} \geqslant \frac{A_{opt} - K_\epsilon}{A_{opt}} = 1 - \frac{P_n}{A_{opt}n(1 + 1\slash\epsilon)} \geqslant 1 - \frac{1}{1 + 1\slash\epsilon} = \frac{1}{1 + \epsilon} +\end{gather*} +Следовательно, $A_\epsilon \geqslant (1 - \epsilon)A_{opt}$. + +\end{document} \ No newline at end of file diff --git a/algorithms-old/mini-cormen/mini-cormen.pdf b/algorithms-old/mini-cormen/mini-cormen.pdf new file mode 100644 index 0000000..8372466 Binary files /dev/null and b/algorithms-old/mini-cormen/mini-cormen.pdf differ diff --git a/algorithms-old/mini-cormen/mini-kormen.jpg b/algorithms-old/mini-cormen/mini-kormen.jpg new file mode 100644 index 0000000..cbcf46d Binary files /dev/null and b/algorithms-old/mini-cormen/mini-kormen.jpg differ diff --git a/algorithms-old/mini-cormen/spanning.pdf b/algorithms-old/mini-cormen/spanning.pdf new file mode 100644 index 0000000..b7f1fa5 Binary files /dev/null and b/algorithms-old/mini-cormen/spanning.pdf differ diff --git a/algorithms-old/tex/algorithms_01_[12.01.2016].tex b/algorithms-old/tex/algorithms_01_[12.01.2016].tex new file mode 100644 index 0000000..55747fb --- /dev/null +++ b/algorithms-old/tex/algorithms_01_[12.01.2016].tex @@ -0,0 +1,191 @@ +\input{header.tex} + +\begin{document} + +\section{Оргмоменты} +Одна контрольная~--- контест на реализацию какого-то алгоритма. Пользоваться своим кодом запрещено. + +Домашние задания представляют собой следующее: необходимо привести алгоритм, провести его теоретический анализ (доказать корректность и оценить время работы) и запрограммировать. Сначала сдаётся теория, потом практика. + +Экзамен устный. + +\[O_{\text{итоговая}} = 0.7 \cdot O_{\text{накопленная}}+0.3 \cdot O_{\text{экзамен}}\] +\[O_{\text{накопленная}} = 0.2 \cdot O_{\text{КР}} + 0.12 \sum\limits_{i = 1}^{5} O_{\text{ДЗ i}} + 0.2 \cdot O_{\text{семинары}}\] + +Списывание, как обычно, \emph{не поощряется}. С обсуждением ДЗ ситуация аналогична. + +\href{http://wiki.cs.hse.ru/}{Здесь} можно найти ссылки на ДЗ и краткое содержание лекций. + +Автоматов \emph{пока} не предусмотрено. + +\textbf{Литература:} +\begin{itemize} + \item \href{https://yadi.sk/i/1enAa7YHmruFw}{Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К.~--- <<Алгоритмы. Построение и анализ>>} + \item \href{https://yadi.sk/i/E_0-SVipmrvPz}{Дасгупта С., Пападимитриу Х., Вазирани У.~--- <<Алгоритмы>>} +\end{itemize} + +\section{Лекция 1 от 12.01.2016} + +\subsection{Задача о Ханойских башнях. Три стержня.} +Рассмотрим классическую задачу, предложенную Эдуардом Люка в 1883 году. Есть три стержня, при этом на первый стержень нанизано 8 дисков. Нужно перенести все диски на другой стержень, соблюдая два правила: диски можно двигать только по одному и нельзя класть +диск большего радиуса на диск меньшего радиуса. Возможно ли это? + +Придуманная профессором Люка легенда гласит, что в Великом храме города Бенарес, под собором, отмечающим середину мира, находится бронзовый диск, на котором укреплены 3 алмазных стержня, высотой в один локоть и толщиной с пчелу. Давным-давно, в самом начале времён, монахи этого монастыря провинились перед богом Брахмой. Разгневанный Брахма воздвиг три высоких стержня и на один из них возложил 64 диска, сделанных из чистого золота. Причем так, что каждый меньший диск лежит на большем. + +Как только все 64 диска будут переложены со стержня, на который Брахма сложил их при создании мира, на другой стержень, башня вместе с храмом обратятся в пыль и под громовые раскаты погибнет мир. + +Интуиция подсказывает, что это возможно. Но каков тогда алгоритм и сколько операций ему необходимо? + +Пусть \(T_n\)~--- минимальное количество операций, за которое можно перенести \(n\) дисков. Сразу же заметим, что для переноса 0 дисков действий вообще не нужно. Тогда \(T_0 = 0\). + +Эксперименты с тремя дисками показывают, что наиболее оптимальный алгоритм состоит в следующем: перенести два диска на второй стержень, перенести третий диск на третий стержень, после чего перенести два диска со второго стержня на третий. Достаточно очевидно, что такое рассуждение работает для любого числа дисков. Отсюда можно сделать вывод, что \[T_n \leqslant 2T_{n - 1} + 1\text{ для } n > 0.\] + +Возникает логичный вопрос: а можно ли быстрее? Увы, но нет. Рано или поздно придётся перенести самый широкий диск. Но для этого необходимо поставить \(n - 1\) диск на один стержень. Тогда можно сделать вывод, что \[T_n \geqslant 2T_{n - 1} + 1\text{ для } n > 0.\] + +Отсюда получаем, что минимальное количество операций задаётся следующим \emph{рекуррентным соотношением}: + +\[T_n = \begin{cases} +2T_{n - 1} + 1, & n > 0 \\ +0, & n = 0 +\end{cases}\] + +Псевдокод для оптимального алгоритма перестановки дисков будет выглядеть так: + +\begin{algorithm}[H] + \caption{Рекурсивный алгоритм решения задачи о Ханойской башне} + \begin{algorithmic}[1] + \Function{Hanoi3}{$n,i,j,k$}\Comment{$n$~--- количество дисков, $i,j,k$~--- номера стержней} + \If{$n > 0$}\Comment{если есть, что переставлять} + \State \textsc{Hanoi3}($n-1,i,j,k$)\Comment{перенесём \(n - 1\) диск со стержня \(i\) на стержень \(j\)} + \State move $i \to k$\Comment{переставим верхний диск со стержня \(i\) на стержень \(k\)} + \State \textsc{Hanoi3}($n-1,k,j,i$)\Comment{перенесём \(n - 1\) диск со стержня \(j\) на стержень \(k\)} + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Покажем с помощью дерева операций, как алгоритм работает для трёх дисков: + +\begin{center} + \begin{forest} + for tree={ + parent anchor=south, + child anchor=north, + if n children=0{ + font=\itshape, + tier=terminal, + }{}, + } + [{H(3,1,2,3)} [{H(2,1,3,2)} [{H(1,1,2,3)} [$1 \to 2$]] + [$1 \to 3$] + [{H(1,2,3,1)} [$2 \to 3$]]] + [$1 \to 2$] + [{H(2,3,2,1)} [{H(1,3,1,2)} [$3 \to 1$]] + [$3 \to 2$] + [{H(1,1,2,3)} [$1 \to 2$]]]] + \end{forest} +\end{center} + +По сути, данный алгоритм обходит дерево в глубину, выполняя необходимые перестановки. + +Прекрасно. Мы знаем, что этот алгоритм наиболее оптимален и знаем рекуррентное соотношение, задающее количество операций. Но можно ли найти \emph{замкнутую} формулу~--- такую, что она сразу даст нужное значение? Да, можно. + +\begin{hanoi_recurrent} + \(T_n = 2^{n} - 1\) +\end{hanoi_recurrent} +\begin{proof} + Докажем это по индукции. База верна, так как $T_0 = 0 = 2^{0} - 1$. Теперь пусть предположение верно для \(n - 1\), то есть \(T_{n - 1} = 2^{n - 1} - 1\). Тогда \[T_{n} = 2T_{n - 1} + 1 = 2(2^{n - 1} - 1) + 1 = 2^n - 2 + 1 = 2^n - 1\qedhere\] +\end{proof} + +Теперь немного изменим условие задачи. +\subsection{Задача о Ханойской башне на четырёх стержнях} +Условия те же, что и в стандартной задаче, но добавляется ещё один стержень. Можно ли сказать, что задача стала проще? Сложнее стать она точно не могла~--- никто не мешает игнорировать новый стержень. + +Попробуем следующий алгоритм: +\begin{itemize} + \item Перенесём \(n - 2\) диска с первого стержня на второй. + \item Перенесём два диска с первого стержня на четвёртый, используя третий в качестве временного. + \item Перенесём \(n - 2\) диска со второго стержня на четвёртый. +\end{itemize} +Псевдокод для данного алгоритма будет иметь следующий вид: +\begin{algorithm}[H] + \caption{Рекурсивный алгоритм решения задачи о Ханойской башне на 4-х стержнях, версия 1} + \begin{algorithmic}[1] + \Function{Hanoi4}{$n,i,j,k,l$}\Comment{$n$~--- количество дисков, $i,j,k,l$~--- номера стержней} + \If{$n > 0$} + \State \textsc{Hanoi4}($n-1,i,l,k,j$) + \State move $i \to k$ + \State move $i \to j$ + \State move $k \to j$ + \State \textsc{Hanoi4}($n-1,l,j,i,k$) + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Количество операций для данного алгоритма задаётся следующим рекуррентным соотношением: +\[T_{n} = \begin{cases} +2T_{n - 2} + 3 & n > 1 \\ +1 & n = 1 \\ +0 & n = 0 +\end{cases}\] +Достаточно логично, что \(T_{n}\) будет иметь вид \(a\cdot2^{\left\lfloor\frac{n}{2}\right\rfloor} + c\). В обозначениях, которые мы введём немного дальше, это будет иметь вид \(\Theta(2^{\left\lfloor\frac{n}{2}\right\rfloor})\). Грубо говоря, это означает, что функция растёт примерно так же. + +Неплохо. Но можно лучше? \emph{Да.} + +Рассмотрим принципиально другой алгоритм. Пусть количество дисков \(n\) имеет вид \(n = \frac{m(m + 1)}{2}\) для какого-то \(m\). Тогда алгоритм будет иметь следующий вид: +\begin{algorithm} + \caption{Рекурсивный алгоритм решения задачи о Ханойской башне на 4-х стержнях, версия 2} + \begin{algorithmic}[1] + \Function{Hanoi4}{$n,i,j,k,l$}\Comment{$n$~--- количество дисков, $i,j,k,l$~--- номера стержней} + \If{$n > 0$} + \State \textsc{Hanoi4}($n-m,i,l,k,j$) + \State \textsc{Hanoi3}($m,i,j,k$) + \State \textsc{Hanoi4}($n-m,l,j,i,k$) + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Если же \(n = \frac{m(m + 1)}{2} + c\), где \(c \leqslant m\), то в первом шаге этого алгоритма вызывается тело функции с \textsc{Hanoi3}($c,i,j,k$). + +Идейно данный алгоритм похож на то, что было предложено ранее. Но сколько операций он требует? + +Построим дерево операций. Достаточно логично, что это будет полным бинарным деревом. Покажем, что в нём \(m\) уровней. Действительно, если \(n_{m} = \frac{m(m + 1)}{2}\), то \(n_{m} - m = \frac{m(m + 1)}{2} - m = \frac{m(m - 1)}{2} = n_{m - 1}\). На каждом уровне выполняется \(2^{i}(2^{m - i} - 1) = 2^{m} - 2^{i}\). Тогда всего операций будет \[\sum_{i = 0}^{m} (2^{m} - 2^{i}) = \sum_{i = 0}^{m} 2^{m} - \sum_{i = 0}^{m} 2^{i}\] +Заметим, что \(1 + 1 + 2 + 4 + \ldots + 2^m = 2 + 2 + 4 + \ldots + 2^m = 4 + 4 + \ldots + 2^m = \ldots = 2^{m + 1}\). Тогда +\[\sum_{i = 0}^{m} 2^{m} - \sum_{i = 0}^{m} 2^{i} = (m + 1)\cdot2^{m} - 2^{m + 1} + 1 = (m - 1)2^{m} + 1\] + +Теперь оценим время работы на большом количестве дисков. Так как \(n = \frac{m(m + 1)}{2} + c\) и \(n \gg c\), то можно сказать, что \(m \approx \sqrt{2n}\). Тогда \[T_n \approx (\sqrt{2n} - 1)2^{\sqrt{2n}} + 1\] +Если воспользоваться обозначением \(\Theta\), то \(T_n = \Theta(\sqrt{n}2^{\sqrt{2n}})\). + +Данный алгоритм носит название \emph{алгоритма Фрейма-Стюарта}. Есть гипотеза (названная в честь авторов этого алгоритма), что он является оптимальным (то есть нет алгоритма, работающего быстрее). Но пока что она не доказана. + +Дальше пойдут теоретические изыски. Попробуем обобщить этот алгоритм для любого числа стержней: + +\begin{algorithm}[H] + \caption{Рекурсивный алгоритм решения задачи о Ханойской башне, общий случай} + \begin{algorithmic}[1] + \Function{Hanoi}{$n,i,j,P$}\Comment{$n$~--- количество дисков, $i,j,$~--- основные стержни} + \State \Comment{$P$~---множество вспомогательных стержней} + \If{$n > 0$} + \State choose $p \in P$ + \State $R \mathrel{:=} P \setminus p$ + \If{$R = \varnothing$} + \State \textsc{Hanoi3}($n,i,j,p$) + \Else + \State \textsc{Hanoi}($n-m,i,p,R \cup \{j\}$) + \State \textsc{Hanoi}($m,i,j,R$) + \State \textsc{Hanoi}($n-m,p,j,R \cup \{i\}$) + \EndIf + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Пусть для перемещения $n$ дисков с помощью алгоритма на $k$ стержнях ($k \geq 3$) нужно $h(n,k)$ операций. Тогда верно следующее: +\[h(n_m, k) = \begin{cases} +0& n=0\\ +2^{n_m}-1& n>0, k=3\\ +2h(n_{m-1}, k) + h(m, k-1)& n > 0, k > 3 +\end{cases}\] +\end{document} \ No newline at end of file diff --git a/algorithms-old/tex/algorithms_02_[14.01.2016].tex b/algorithms-old/tex/algorithms_02_[14.01.2016].tex new file mode 100644 index 0000000..ee76707 --- /dev/null +++ b/algorithms-old/tex/algorithms_02_[14.01.2016].tex @@ -0,0 +1,177 @@ +\input{header.tex} + +\begin{document} + +\section{Лекция 2 от 14.01.2016} + +\subsection{Задача сортировки. Сортировка вставками} +На сегодняшней лекции мы будем рассматривать классическую задачу мира алгоритмов, встречающуюся на практике повсеместно~--- \emph{задачу сортировки}. Поставим её формально. + +\textbf{Вход:} последовательность из \(n\) чисел \([a_{1}, a_{2}, \ldots, a_{n}]\). + +\textbf{Выход:} последовательность из \(n\) чисел \([a'_{1}, a'_{2}, \ldots, a'_{n}]\) такая, что \(a'_{1} \leqslant a'_{2} \leqslant \ldots \leqslant a'_{n}\). + +Как её решить? Один из самых простых алгоритмов сортировки устроен рекурсивно. Пусть на вход подаётся массив из \(n\) элементов и последний элемент в нём равен \(k\). Тогда вызываем этот же алгоритм от первых \(n - 1\) элемента, после чего делаем следующее: до тех пор, пока элемент, стоящий перед \(k\), больше \(k\), меняем их местами. В псевдокоде это будет записано так: + +\begin{algorithm}[H] + \caption{Неэффективный алгоритм сортировки} +\begin{algorithmic}[1] + \Function{Recursive-Sort}{$A$} + \If{\(A.length > 1\)} + \State \textsc{Recursive-Sort}($A[1:A.length - 1]$) + \State \(key \mathrel{:=} A[j]\) + \State \(i \mathrel{:=} j - 1\) + \While{\(i > 0\) \textbf{and} \(A[i] > key\)} + \State \(A[i + 1] \mathrel{:=} A[i]\) + \State \(i \mathrel{:=} i - 1\) + \EndWhile + \State \(A[i + 1] \mathrel{:=} key\) + \EndIf + \EndFunction +\end{algorithmic} +\end{algorithm} +Покажем, как работает этот алгоритм, на примере массива \([6, 8, 3, 4]\): + +\begin{itemize} + \item Сначала вызовем этот алгоритм от массива \([6, 8, 3]\). Легко проверить, что в итоге получится массив \([3, 6, 8]\). + \item Далее сравниваем 4 с стоящим впереди элементом и меняем их местами, если необходимо: + \[[3, 6, 8, 4] \mapsto [3, 6, 4, 8] \mapsto [3, 4, 6, 8]\] +\end{itemize} +В итоге получилась отсортированная последовательность. По сути, алгоритм вставляет элементы на нужные места в уже отсортированный массив. + +Теперь рассмотрим алгоритм \emph{сортировки вставками}: + +\begin{algorithm}[H] + \caption{Алгоритм сортировки вставками} + \begin{algorithmic}[1] + \Function{Insertion-Sort}{$A$} + \For{\(j \mathrel{:=} 2\) \textbf{to} \(A.length\)}\Comment{вставка \(A[j]\) в отсортированный массив \(A[1..j - 1]\)} + \State \(key \mathrel{:=} A[j]\) + \State \(i \mathrel{:=} j - 1\) + \While{\(i > 0\) \textbf{and} \(A[i] > key\)} + \State \(A[i + 1] \mathrel{:=} A[i]\) + \State \(i \mathrel{:=} i - 1\) + \EndWhile + \State \(A[i + 1] \mathrel{:=} key\) + \EndFor + \EndFunction + \end{algorithmic} +\end{algorithm} + +Нетрудно заметить, что он делает то же самое, что и описанный ранее алгоритм, только без рекурсивных вызовов. + +Возникает логичный вопрос~--- а можем ли мы сказать, что этот алгоритм делает именно то, что нам нужно? Другими словами, \emph{корректен} ли он? Оказывается, что да. Докажем это. + +Для этого стоит рассмотреть так называемый \emph{инвариант цикла}~--- нечто, что не изменяется при переходе на следующую итерацию цикла. В данном случае он будет таков: на \(j\)-й итерации цикла первые \(i - 1\) элементов массива будут упорядочены. + +Далее нужно рассмотреть три свойства инварианта цикла: +\begin{itemize} + \item \textbf{Инициализация:} Инвариант цикла выполняется на первой итерации; + + \item \textbf{Переход:} Инвариант сохраняется при переходе на следующую итерацию; + + \item \textbf{Завершение:} При окончании цикла инвариант даёт какое-то ценное свойство полученного массива. +\end{itemize} +Можно сказать, что первые два свойства доказывают корректность инварианта. Приступим: +\begin{itemize} + \item \textbf{Инициализация:} На первой итерации цикла элемент вставляется в массив из одного элемента. Но он, очевидно, отсортирован. Тогда инвариант цикла выполняется для первой итерации. + + \item \textbf{Переход:} Пусть массив \([a_1, \ldots, a_{j - 1}]\) уже отсортирован. В теле цикла делается следующее: до тех пор, пока \(a_{j}\) меньше стоящего перед ним элемента, они меняются местами. По сути, элемент просто вставляется на нужное место. Тогда инвариант выполняется при переходе на следующую итерацию. Следовательно, инвариант корректен. + + \item \textbf{Завершение:} Цикл завершается тогда, когда \(j = n + 1\). Заметим, что это будет итерация под номером \(n\). Но тогда (согласно инварианту цикла) первые \(n\) элементов массива, то есть весь массив, будут упорядочены. Тогда в конце массив окажется отсортированным. Тем самым мы доказали, что алгоритм корректен. +\end{itemize} + +Хорошо, он корректен. Но насколько быстро он работает? Достаточно очевидны три факта: +\begin{itemize} + \item Скорость работы зависит от входных данных; + \item Чем больше элементов, тем дольше будет работать алгоритм; + \item Если алгоритм уже отсортирован, то он будет работать быстрее. +\end{itemize} +Обычно время работы рассматривают в трёх случаях~--- в худшем, в лучшем и в среднем. Хотя оценка в лучшем случае не несёт особо ценной информации, так как всегда можно модифицировать алгоритм так, что на некоторых наборах данных он будет работать очень быстро. + +Для оценки времени работы введём асимптотическую оценку \(\Theta\): +\[\Theta(g(n)) = \{f(n)\mid\exists\,c_1, c_2 > 0: \forall n\geqslant n_0 \implies 0 \leqslant c_1g(n) \leqslant f(n) \leqslant c_2g(n)\}\] + +Рассмотрим следующий пример. Пусть \(f(n) = 3n^2 + 2n + 6\). Тогда \(f(n) \in \Theta(n^2)\). Хотя правильней писать так, но на практике все пишут, что \(f(n) = \Theta(n^2)\). + +Стоит обратить внимание, что асимтотическая оценка показывает рост функции. Но не стоит забывать про константы~--- может выйти так, что для достаточно маленьких \(n\) функция из \(\Theta(n^3)\) работает быстрее, чем функция из \(\Theta(n)\): +\begin{center} + \begin{tikzpicture} + \begin{axis} + \addplot [domain=0:5, samples=101,unbounded coords=jump]{x+30} node[below,pos=0.9] {$x + 30$}; + \addplot [domain=0:5, samples=101,unbounded coords=jump]{0.2 * x^3} node[below,pos=0.85] {$\quad \frac{x^3}{5}$}; + \end{axis} + \end{tikzpicture} +\end{center} + +Вернёмся к оценке времени работы алгоритма. Пусть его скорость работы равна \(T(n)\). + +Рассмотрим худший случай. Когда он достигается? Когда приходится делать максимальное число перестановок. Тогда на \(i\)-й итерации совершается \(\Theta(i)\) операций. Следовательно, \[T(n) = \sum_{k = 0}^{n} \Theta(k) = \Theta(n^2).\] + +В среднем случае все исходы равновероятны. Тогда в среднем будет выполняться половина всех возможных перестановок. А это \(\Theta(n^2)\). + +В лучшем случае не совершается ни одной перестановки. Это означает, что массив уже отсортирован. Тогда алгоритм работает за \(\Theta(n)\) (так как он просто проходится по массиву). + +\subsection{Сортировка слиянием} + +% TODO: добавить доказательство корректности Merge-Sort и нормальное оценивание времени работы. + +Рассмотрим другой алгоритм --- \emph{сортировку слиянием}. + +\begin{algorithm}[H] + \caption{Алгоритм сортировки слиянием} + \begin{algorithmic}[1] + \Function{Merge-Sort}{$A$} + \State \(n \mathrel{:=} A.length\) + \If{\(n > 1\)} + \State \(B_1 \mathrel{:=} \textsc{Merge-Sort}\left(A\left[1:\left\lfloor\frac{n}{2}\right\rfloor\right]\right)\) + \State \(B_2 \mathrel{:=} \textsc{Merge-Sort}\left(A\left[\left\lfloor\frac{n}{2}\right\rfloor + 1 : n\right]\right)\) + \State \(A \mathrel{:=} \textsc{Merge}(B_1, B_2)\) \Comment{сливаем два отсортированных массива в один} + \EndIf + \State return \(A\) + \EndFunction + \end{algorithmic} +\end{algorithm} + +Рассмотрим, как может работать \textsc{Merge}\((B_1, B_2)\) на примере. Пусть даны массивы \(B_1 \mathrel{:=} [2,5,6,8]\) и \(B_2 \mathrel{:=} [1,3,7,9]\). + +Будем сливать элементы из массивов в результирующий массив $b$, сравнивая поочерёдно минимальные элементы, которые ещё не вошли в результирующий массив. + +\begin{itemize} + \item $2 > 1$. Тогда $b[1] \mathrel{:=} b_2[1] = 1$ (будем считать, что нумерация идёт с единицы). + \item $2 < 3$. Тогда $b[2] \mathrel{:=} b_1[1] = 2$. + \item Аналогично продолжаем для всех остальных элементов массивов. +\end{itemize} +Очевидно, что алгоритм корректен, а его сложность --- линейная, так как мы один раз проходим по массивам, то есть $\Theta(n)$. + +Пусть худшее время для \textsc{Merge-Sort}~--- $T(n)$. Тогда + +\[T(n) = \begin{cases} +\Theta(1), & n = 1\\ +2T(n/2)+\Theta(n), & n > 1 +\end{cases}\] + +Построим дерево рекурсии: + +\begin{center} + \begin{forest} + for tree={ + %parent anchor=south, + %child anchor=north, + if n children=0{ + font=\itshape, + %tier=terminal, + }{}, + } + [$T(n)$ [$T(n/2)$ [$T(n/4)$ [\ldots] [\ldots] [\ldots]] + [$cn/2$] + [$T(n/4)$ [\ldots] [\ldots] [\ldots]]] + [$cn$] + [$T(n/2)$ [$T(n/4)$ [\ldots] [\ldots] [\ldots]] + [$cn/2$] + [$T(n/4)$ [\ldots] [\ldots] [\ldots]]]] + \end{forest} +\end{center} + +На каждом уровне $\Theta(n)$ работы, а высота дерева~--- $\log_{2} n$. Общее время работы~--- $\Theta(n)\log n = \Theta(n\log{n})$. +\end{document} diff --git a/algorithms-old/tex/algorithms_03_[19.01.2016].tex b/algorithms-old/tex/algorithms_03_[19.01.2016].tex new file mode 100644 index 0000000..e42a993 --- /dev/null +++ b/algorithms-old/tex/algorithms_03_[19.01.2016].tex @@ -0,0 +1,174 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 3 от 19.01.2016} + +\subsection*{Нотация} + +\[\Theta(g(n)) = \left\{ f(n)\mid \exists c_1>0, c_2>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant c_1g(n)\leqslant f(n) \leqslant c_2g(n) \right\},\] + +$\Theta$ --- \emph{асимптотическое} $=$. Например, $2n = \Theta(n)$. По определению, $c_1n \leqslant 2n \leqslant c_2n$. Тогда $c_1 = 1, c_2 = 2$. + +\[O(g(n)) = \left\{ f(n)\mid \exists c_2>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant f(n) \leqslant c_2g(n) \right\}\] + +$O$ --- \emph{асимптотическое} $\leqslant$. Например, по этому определению $n = O(n \log{n})$, так как при достаточно больших $n_0$ $\log n > 1$. Тогда $c_2 = 1$. + +\[\Omega(g(n)) = \left\{ f(n)\mid \exists c_1>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant c_1g(n)\leqslant f(n) \right\}\] + +$\Omega$ --- \emph{асимптотическое} $\geqslant$. Например, $n \log n = \Omega(n \log n)$ и $n \log n = \Omega(n)$. В обоих случаях подходит $c_1 = 1$. + +\[o(g(n)) = \left\{ f(n)\mid \forall c_2>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant f(n) \leqslant c_2g(n) \right\}\] + +$o$ --- \emph{асимптотическое} $<$. Например, $n = o(n \log n)$. Покажем это. Пусть $n < c_2 n \log n \iff 1 < c_2 \log n \iff n > 2^{1/c_2}$. Тогда $n_0 = [2^{1/c_2} + 1]$ + +\[\omega(g(n)) = \left\{ f(n)\mid \forall c_1>0 \exists n_0: \forall n \geqslant n_0 \implies 0\leqslant c_1g(n)\leqslant f(n) \right\}\] + +$\omega$ --- \emph{асимптотическое} $>$. Например, нельзя сказать, что $n \log n = \omega(n \log n)$. Но можно сказать, что $n \log n = \omega(n)$. + +\ + +Когда мы пишем такую нотацию, мы подразумеваем функции, а не числа. Если же указывать функции явно, то это можно сделать с помощью $\lambda$-нотации: + +\[\lambda n.n \in o(\lambda n.n \log_2 n)\] + +\textbf{Примечание:} данная нотация очень похожа на лямбда-функции в Python: +\[\verb|lambda x: x * x| \iff \lambda x. x^2\] + +Заметим, что в логарифмах можно свободно менять основание: $\log_c n = \frac {\log_2 n}{\log_2 c}$. Именно поэтому не пишут основание логарифма. + +\subsection*{Разделяй и властвуй. Быстрая сортировка} + +Ход действий при алгоритме \textbf{"разделяй и властвуй"}: +\begin{enumerate} + \item Разбить задачу на подзадачи. + \item Каждую подзадачу решить рекурсивно. + \item Объединяем решения подзадач некоторым образом. +\end{enumerate} +Этот алгоритм даст решение общей задачи. + +\ + +Вернёмся к \emph{сортировке слиянием}. Алгоритм состоит из трёх шагов: +\begin{enumerate} + \item Раделить массив напополам --- $\Theta(1)$ + \item Рекурсивно решить подзадачи --- $2 T(\frac{n}{2})$ + \item Слияние уже отсортированных массивов --- $\Theta(n)$ +\end{enumerate} + +\[T(n) = 2T\left(\frac n2\right) + \Theta(n) \implies \Theta(n\log n)\] + +Задача та же --- отсортировать массив. + +Воспользуемся методом ``Разделяй и властвуй''. Разобьем по-другому: + +Выберем в массиве опорный элемент $x$ (как угодно). Выбор важен, от него может много зависить. Пройдем по всем элементам и запишем те элементы, что меньше $x$ до него, а те, что больше --- после. + +Две подзадачи: сортировка двух подмассивов. + +Третий шаг --- соединить их. + +\begin{algorithm} +\caption{Разбитие массива на подмассивы} +\begin{algorithmic}[1] +\Function{partition}{$a, p, q$}\Comment{$a$ --- массив, $p$ и $q$ --- индексы начала и конца соотвественно} + \State $i \mathrel{:=} p$ + \For{$j \mathrel{:=} p + 1$ to $q$} + \If{$a[j] < a[p]$} + \State $i \mathrel{:=} i + 1$ + \State $\textsc{swap}(a[i], a[j])$ + \EndIf + \EndFor + \State return $i$ +\EndFunction +\end{algorithmic} +\end{algorithm} + +Рассмотрим работу алгоритма на примере массива $\{6, 3, 8, 7, 5 ,1\}$: +\begin{enumerate} + \item $j = 1$. Так как $6 > 3$, то запускается тело цикла. Тогда $i = 1$ и 3 остаётся на месте. + + \item $j = 2$. Так как $6 < 8$, то ничего не изменяется. + + \item $j = 3$. Так как $6 < 7$, то ничего не изменяется. + + \item $j = 4$. Так как $6 > 5$, то запускается тело цикла. Тогда $i = 2$ и числа 5 и 8 меняются местами. + \[\begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & \textbf{8} & 7 & \textbf{5} & 1 \\ + \hline + \end{array} + \longrightarrow + \begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & \textbf{5} & 7 & \textbf{8} & 1 \\ + \hline + \end{array}\] + + \item $j = 5$. Так как $6 > 1$, то запускается тело цикла. Тогда $i = 3$ и 7 и 1 меняются местами. + + \[\begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & 5 & \textbf{7} & 8 & \textbf{1} \\ + \hline + \end{array} + \longrightarrow + \begin{array}{|c|c|c|c|c|c|} + \hline 6 & 3 & 5 & \textbf{1} & 8 & \textbf{7} \\ + \hline + \end{array}\] + + \item Последний шаг --- переставить опорный элемент на место $i$: + + \[\begin{array}{|c|c|c|c|c|c|} + \hline \textbf{6} & 3 & 5 & \textbf{1} & 8 & 7 \\ + \hline + \end{array} + \longrightarrow + \begin{array}{|c|c|c|c|c|c|} + \hline \textbf{1} & 3 & 5 & \textbf{6} & 8 & 7 \\ + \hline + \end{array}\] +\end{enumerate} + +\ + +Теперь рассмотрим скорость работы алгоритма. + +\begin{enumerate} + \item Разбить задачу на подзадачи --- $\Theta(n)$ + \item Рекурсивно решить подзадачи. Пусть индекс опорного элемента равен $r$. Тогда на выполнение уйдёт $T(r-1) + T(n-r)$. + \item Объединить решения задач в одно глобальное --- $0$ (уже сделано). +\end{enumerate} + +Тогда скорость работы алгоритма задаётся следующим рекуррентным соотношением: +\[T(n) = T(r-1) + T(n-r) + \Theta(n)\] + +Рассмотрим возможные случаи: + +\begin{enumerate} + \item \textbf{Оптимальный вариант} --- $r$ всегда посередине: + + \[T(n) = 2T\left(\frac{n}{2}\right) + \Theta(n) \implies T(n) = \Theta(n\log n)\] + + \item \textbf{Худший случай} --- $r$ всегда минимален/максимален (массив уже <<почти>> отсортирован): + + \[T(n) = T(n-1) + \Theta(n) \implies T(n) = \Theta(n^2)\] + + \item \textbf{Средний случай.} Пусть каждый раз обе части не меньше четверти. + + \emph{Подзадачей типа $j$} называется задача такая, что размер входного массива $n'$ соответсвтует следующему неравенству: + \[n\left(\frac{3}{4}\right)^{j+1} < n' \leqslant n\left(\frac{3}{4}\right)^{j}\] + + Не считая рекурсии, на каждую подзадачу типа $j$ уходит $O\left(\left(\frac{3}{4}\right)^{j}n\right)$. + + Стоит заметить, что подзадачи типа $j$ не пересекаются по разбиению. При этом из них получаются подзадачи типа не меньше $j+1$. + + При этом количество подзадач типа $j$ не больше $\left(\frac{4}{3}\right)^{j+1}$. Отсюда получаем, что на все подзадачи типа $j$ нужно $O\left(\left(\frac{4}{3}\right)^{j+1}\left(\frac{3}{4}\right)^{j}n\right) = O(n)$. + + Так как максимальный тип подзадачи можно ограничить сверху $\log_{4/3} n$, то оценка работы в среднем случае равна $O(n \log n)$. При условии, что <<везёт>> всегда. +\end{enumerate} + +\subsection*{Как обеспечить везение?} + +Мы хотим, чтобы опорный элемент был близок к середине (в отсортированном массиве). Условно, в пределах средних двух четвертей. Если выбирать наугад, вероятность $50\%$. + +Предположим, что мы выбираем случайный элемент. Распределим все прочие, и если одна из частей меншь четверти, забудем про этот элемент и выберем другой. Повторим, пока не получим хороший элемент. В среднем на это уйдёт две попытки $\left( \frac1P \right)$. На сложности алгоритма это не сказывается никак, т.к. меняется только константа. Зато теперь так не только в лучшем, но и в среднем случае. +\end{document} diff --git a/algorithms-old/tex/algorithms_04_[21.01.2016].tex b/algorithms-old/tex/algorithms_04_[21.01.2016].tex new file mode 100644 index 0000000..990948b --- /dev/null +++ b/algorithms-old/tex/algorithms_04_[21.01.2016].tex @@ -0,0 +1,143 @@ +\input{header.tex} + +\begin{document} +\section*{Лекция 4 от 21.01.2016} + +\subsection*{Двоичное дерево поиска} + +Так как курс всё же называется <<Алгоритмы и \emph{структуры данных}>>, рассмотрим такую структуру данных, как \textbf{двоичное дерево поиска}. + +Во-первых, это двоичное дерево --- есть узлы и связи между ними, при этом у каждого узла не более двух детей. +В вершинах дерева --- числа, при этом в левом поддереве узла все числа не больше, чем в самом узле; в правом же поддереве, наоборот, не меньше. + +Введём обозначения: пусть $x$ --- некоторый узел. Тогда +\begin{itemize} + \item $x$.key --- число в узле; + \item $x$.left --- левый потомок; + \item $x$.right --- правый потомок; + \item $x$.p --- родитель. +\end{itemize} + +При этом считаем, что у каждого узла есть оба наследника, но некоторые могут узлами не являться и иметь значение NULL. + +Указанные выше свойства двоичного дерева поиска можно записать так: + +$y\in \text{Tree($x$.left)} \implies \text{$y$.key} \leqslant \text{$x$.key}$ + +$y\in \text{Tree($x$.right)} \implies \text{$y$.key} \geqslant \text{$x$.key}$ + +\vspace{0.6cm} + +Что с этим деревом можно делать? Для начала, это дерево можно обойти так, чтобы перечислить элементы в порядке возрастания: + +\begin{lstlisting} +inorder_tree_walk(x) + if x != NULL then + inorder_tree_walk(x.left) + output x.key + inorder_tree_walk(x.right) +\end{lstlisting} + +Сложность алгоритма --- $\Theta(n)$; каждый узел мы посещаем не более одного раза, при этом операции внутри узла занимают константное время. + +Запишем алгоритм сортировки с помощью дерева: + +\begin{lstlisting} +tree_sort(a) + t := Tree() + for x in a do + tree_insert(x, t) + inorder_tree_walk(t) +\end{lstlisting} + +Пусть $a = [6,2,3,5,8,1]$. Тогда построение дерева может выглядеть так (может и по-другому, дерево далеко не всегда строится однозначно): + +\[ +\begin{array}{c|c} + 1\includegraphics[width=8cm]{images/04_tree_1.pdf}& + 2\includegraphics[width=8cm]{images/04_tree_2.pdf}\\\hline + 3\includegraphics[width=8cm]{images/04_tree_3.pdf}& + 4\includegraphics[width=8cm]{images/04_tree_4.pdf}\\\hline + 5\includegraphics[width=8cm]{images/04_tree_5.pdf}& + 6\includegraphics[width=8cm]{images/04_tree_6.pdf} +\end{array}\] + +Заметим, что в общем и целом, это довольно похоже на алгоритм быстрой сортировки (особенно, если не двигать корневой элемент при вставке новых), а корень (под-)дерева --- опорный элемент. + +Время работы влгоритма: +$T(n) = 2T(\frac n2) + cn \implies \Theta(n\log n)$ + +Предположим, что слияние дорогое: + +$T(n) = 2T(\frac n2) + cn^2 \implies O(n^2 \log n)$ + +\vspace{1.5cm} +\textbf{HERE BE KARTINKA} +\vspace{1.5cm} + +$i$-ый уровень: +\begin{itemize} + \item Число подзадач = $2^i$ + \item Размер подзадачи = $\frac{n}{2^i}$ + \item Время на решение подзадачи = $c\left( \frac{n}{2^i} \right)^2$ + \item Всего работы = $\frac{cn^2}{2^{2i}}\cdot2^i = \frac{cn^2}{2^i}$ +\end{itemize} + +$T(n) \leqslant \sum\limits_{i=0}^{\log_2n-1}\frac{cn^2}{2^i} = cn^2 \sum \frac1{2^i} \leqslant2cn^2 = O(n^2)$ + +$T(n) = kn^d$ + +Удобно начинать индукцию с шага: + +Пусть $T(m)\leqslant km^d$ для $m b^d$: $\sum \left( \frac{a}{b^d} \right)^i = O\left( \left( \frac{a}{b^d} \right)^{log_bn} \right)$ \dots\dots\dots $O\left( n^{\log_bn} \right)$ +\end{enumerate} +\end{document} diff --git a/algorithms-old/tex/algorithms_05_[26.01.2016].tex b/algorithms-old/tex/algorithms_05_[26.01.2016].tex new file mode 100644 index 0000000..7c124d7 --- /dev/null +++ b/algorithms-old/tex/algorithms_05_[26.01.2016].tex @@ -0,0 +1,221 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 5 от 26.01.2016} + +\subsection*{Быстрая сортировка. Продолжение} +Говоря об алгоритме быстрой сортировки (\textsc{QSort}), мы рассматривали только случаи, когда все элементы различны. Однако это далеко не всегда так. Если в входном массиве есть равные элементы, то алгоритм может застопориться. Для того, чтобы избежать этого, изменим алгоритм \textsc{Partition}. Попытаемся преобразовывать массив таким образом, чтобы в левой части стояли элементы строго меньшие опорного, в правой --- строго большие, а в середине --- равные ему: +\[\begin{array}{|c|c|c|c|c|} + \hline + \phantom{x} & \dots & x & \dots & \phantom{x} \\ + \hline +\end{array} +\longrightarrow +\begin{array}{|c|c|c|} + \hline + x\\ + \hline +\end{array}\] + +Обозначим за опорный элемент последний. Будем проходиться по массиву от начала до конца, выставляя элементы в нужном порядке (? — ещё не просмотренные элементы): +\[\begin{array}{lllll} + \hline + \multicolumn{1}{|c|}{x} & \multicolumn{1}{|c|}{ ? } & \multicolumn{1}{|c|}{=x} & \multicolumn{1}{|c|}{x}\\ + \hline + [1, i) & [i, j) & [j, k) & [k, n) & n +\end{array}\] + +\begin{algorithm} +\caption{Модифицированный алгоритм \textsc{Partition}} +\begin{algorithmic}[1] +\Function{Partition}{$a$} +\State $i \mathrel{:=} 1$ +\State $j \mathrel{:=} 1$ +\State $k \mathrel{:=} n - 1$ +\While{$j < k$} + \If{$a[j] = a[n]$} + \State $k \mathrel{:=} k - 1$ + \State $a[j], a[k] \mathrel{:=} a[k], a[j]$ + \Else \If{$a[j] < a[n]$} + \State $a[i], a[j] \mathrel{:=} a[j], a[i]$ + \State $j \mathrel{:=} j + 1$ + \State $i \mathrel{:=} i + 1$ + \Else + \State $j \mathrel{:=} j + 1$ + \EndIf + \EndIf +\EndWhile +\EndFunction +\end{algorithmic} +\end{algorithm} + +Заметим, что $j = k$ (так как алгоритм не закончит работу до тех пор, пока это не станет верно). Тогда на выходе получится массив вида: + +\[\begin{array}{lll} + \hline + \multicolumn{1}{|c|}{x} & \multicolumn{1}{|c|}{=x}\\ + \hline + [1, i) & [i, j) & [k, n] +\end{array}\] + +Остаётся только переставить части массива: + +\begin{algorithm} +\begin{algorithmic}[1] +\State $j \mathrel{:=} n$ +\While{$i < k$ and $j \geqslant k$} + \State $a[i], a[j] \mathrel{:=} a[j], a[i]$ + \State $i \mathrel{:=} i + 1$ + \State $j \mathrel{:=} j - 1$ +\EndWhile +\end{algorithmic} +\end{algorithm} + +\ + +\textbf{В:} Самая быстрая из наших сортировок --- $O(n \log n)$. А можно ли быстрее? + +\textbf{О:} На основе только сравнений --- нет. + +Использовать разобранные нами сортировки можно на любых сущностях, для которых определена операция сравнения. + +Предположим теперь, что мы сортируем натуральные числа, не превосходящие некоторого числа $C$. + +Создадим массив $b$ размера $C$, заполненный нулями. Будем проходить по исходному массиву $a$ и на каждом шаге будем добавлять 1 к соответствующему элементу массива $b$: +\[b[a[i]] \mathrel{:=} b[a[i]] + 1\] +Потом, проходя по получившемуся массиву $b$, будем восстанавливать исходный массив уже в отсортированном виде. + +Такая сортировка будет работать за $O(n)$, однако, она не универсальна. + +Вернёмся к универсальным сортировкам. Рассмотрим дерево для массива $a = [6, 5, 2]$: + +\begin{center} +\begin{forest} +for tree={ + %parent anchor=south, + %child anchor=north, + if n children=0{ + font=\itshape, + %tier=terminal, + }{}, +} +[{$\mathbf{a[1] < a[2]}$} + [{$a[1] < a[3]$} + [{$a[2] < a[3]$} + [{$(6, 5, 2)$} + ] + [{$(5, 6, 2)$} + ] + ] + [{$(2, 6, 5)$} + ] + ] + [{$\mathbf{a[2] < a[3]}$} + [{$a[1] < a[3]$} + [{$(5, 6, 2)$} + ] + [{$(5, 2, 6)$} + ] + ] + [{$\mathbf{(2, 6, 5)}$} + ] + ] +] +\end{forest} +\end{center} + +Подобное дерево можно составить для любого детерминированного\footnote{Детерминированный алгоритм — алгоритмический процесс, который выдаёт предопределённый результат для заданных входных данных. Например, \textsc{QSort}, выбирающий опорный элемент случайным образом, не является детерминированным.} алгоритма сортировки, зафиксировав $n$. Сложность алгоритма будет являться высота $h$ дерева. Посчитаем это $h$: +\begin{itemize} + \item[$\blacktriangleright$] Так как алгоритм должен работать на любой перестановке из $n$ элементов, то у дерева не может быть меньше, чем $n!$ листов. + \item[$\blacktriangleright$] Так как сравнение --- бинарная операция, то у каждой вершины не более двух потомков. Тогда в дереве не может быть больше, чем $2^h$ листьев. + \item[$\blacktriangleright$] Тогда $2^h \geqslant n! \iff h \geqslant \log_2 n!$. + Заметим, что: + \[n! = 1 \cdot 2 \cdot \ldots \cdot \left\lfloor\frac{n}{2}\right\rfloor \cdot \underbrace{ \left(\left\lfloor\frac{n}{2}\right\rfloor + 1\right) \cdot \ldots (n - 1) \cdot n}_\text{каждый из $\frac{n}{2}$ элементов не меньше $\frac{n}{2}$} \geqslant \left(\frac{n}{2}\right)^{\frac{n}{2}} \] + Тогда $h \geqslant \log_2 \left(\frac{n}{2}\right)^{\frac{n}{2}} = \frac{n}{2} \log_2 \frac{n}{2} = \Omega(n \log n)$. Из этого следует, что отсортировать произвольный массив с помощью только сравнений меньше, чем за $\Omega(n \log n)$ операций, невозможно. +\end{itemize} + +\subsection*{Поиск медианы} + +Медиана --- такой элемент массива, что не меньше половины элементов меньше неё, и не меньше половины --- больше. + +Для отсортированного массива размера $n$ медиана будет находиться под номером $\dfrac{n + 1}{2}$ для нечётных $n$ и $\dfrac{n}{2}$ для чётных $n$. +Пример: для массива (8, 1, 3, 5, 6, 9) медианой будет являться~5. + +Как же найти медиану? +Очевидно, что можно отсортировать и взять средний --- $\Theta(n)$. + +А можно ли найти медиану ли за линейное время? +Можно. +Напишем алгоритм, находящий элемент, стоящий на k-ом месте в массиве, получающемся из входного после сортировки. +Это называется поиском $k$-ой порядковой статистики. +Составим этот алгоритм, немного модифицировав QSort: + +\begin{algorithm} +\caption{Поиск $k$-ой порядковой статистики} +\begin{algorithmic}[1] +\Function{Select}{$a, k$} + \State choose pivot $a[p]$ + \State $i \mathrel{:=} \textsc{Partition}(a, p)$ + \If{$i \mathrel{:=} k$} + \State return $a[i]$ + \EndIf + \If{$i > k$} + \State return $\textsc{Select}(a[1 \ldots i - 1], k)$ + \Else + \State return $\textsc{Select}(a[i + 1 \ldots n], k - i)$ + \EndIf +\EndFunction +\end{algorithmic} +\end{algorithm} + +Как и в быстрой сортировке, неправильно выбранный опорный элемент портит скорость до $n^2$. Будем выбирать опорный элемент случайным образом. Попробуем посчитать время работы в среднем случае. + +$j$-подзадача размера $n'$. $\left( \frac{3}{4} \right)^{j+1}n < n' \leqslant \left( \frac{3}{4} \right)^{j}n$ + +Как и в QSort, в среднем мы потратим две попытки на переход к следующему $j$. + +Максимальное $j$ --- $O(\log_\frac{4}{3} n)$ + +$T(n) \leqslant \sum\limits_{j=0}^{\log_{\frac{4}{3}}n} 2\cdot c\cdot \left( \frac{3}{4} \right)^jn = 2cn\sum\limits_{j=0}^{\log_{\frac{4}{3}}n}\left( \frac{3}{4} \right)^j \leqslant 2cn$ + +Время работы алгоритма в худшем случае всё ещё $O(n^2)$. +Худший случай — когда на каждом шаге мы отщеплем всего один элемент. +Для достижения лучшего случая, на каждом шаге нужно выбирать в качестве опорного элемента медиану. + +\subsection*{Медиана медиан} +Попробуем несколько модифицировать наш алгоритм. +Разобьём входной массив на группы по 5 элементов. +Отсортируем каждую такую группу. +Так как размер каждой группы зафиксирован, время сортировки не зависит от $n$. +Зависит только количество сортировок. +Возьмём медиану в каждой группе и применим алгоритм нахождения медианы к получившемуся массиву медиан. +Выберем её в качестве опорного элемента. + +\begin{algorithm} +\caption{Поиск $k$-ой порядковой статистики 2} +\begin{algorithmic}[1] +\Function{Select}{$a, k$} + \State Divide a into groups of 5 + \State Choose medians $m_1,\ldots m_\frac{n}{5}$ + \State $x = \textsc{Select}([m_1,\ldots, m_\frac{n}{5}], \frac{n}{10})$ + \State choose $x$ as pivot $a[p]$ + \State $i \mathrel{:=} \textsc{Partition}(a, p)$ + \If{$i \mathrel{:=} k$} + \State return $a[i]$ + \EndIf + \If{$i > k$} + \State return $\textsc{Select}(a[1 \ldots i - 1], k)$ + \Else + \State return $\textsc{Select}(a[i + 1 \ldots n], k - i)$ + \EndIf +\EndFunction +\end{algorithmic} +\end{algorithm} + +$T(n) \leqslant cn + T\left(\frac{n}{5}\right) + T\left( \frac{7}{10}n \right)$ + +$T(n) \leqslant ln$ для некоторого $l$ + +$T(n) \leqslant cn + T(\frac{n}{5}) + T(\frac{7}{10}) \leqslant cn + \frac{ln}{5} + \frac{7}{10}ln$ +\end{document} diff --git a/algorithms-old/tex/algorithms_06_[28.01.2016].tex b/algorithms-old/tex/algorithms_06_[28.01.2016].tex new file mode 100644 index 0000000..6d0cbf6 --- /dev/null +++ b/algorithms-old/tex/algorithms_06_[28.01.2016].tex @@ -0,0 +1,58 @@ +\input{header.tex} + +\begin{document} +\maketitle + +Вход --- множество точек $(x_i, y_i)$. Выход --- $i, j: d((x_i, y_i), (x_j, y_j))$ --- минимально. + +``Разделяй и властвуй'': + +\begin{lstlisting} +closest_pair_rec(P_x, P_y) + if n < 4 then + solve directly + L_x := P_x[1..ceil(n/2)]. L_y = ... + R_x := P_x[ceil(n/2)+1..n], R_y = ... + (l_1, l_2) := closest_pair_rec(L_x, L_y) + (r_1, r_2) := closest_pair_rec(R_x, R_y) + delta := min(d(l_1, l_2), d(r_1, r_2)) + + S_x^l := {(x, y) \in L_x | x^*-x < delta} + S_x^r := {(x, y) \in L_x | x-x^* < delta} + + S_y := {(x, y) \in P_y | |x-x^*| \leqslant delta} + + for i := 1 to |S_y| do + c_i := argmin_{i-15\leqslant j\leqslant i+15}(d(S_y[i], S_y[j])) + if d(S_y[i], s_y[c]) < delta then + + WAAAAAAAAT +\end{lstlisting} + +\begin{lstlisting} +closest_pair(P) + P_x := sort P by x + P_y := sort P by y + closest_pair_rec(P_x, P_y) +\end{lstlisting} + +Теперь нужно объединить. Сколько времени у нас есть? + +Для $n\log n$ $T(n) = 2T(\frac{n}{2}) + O(n)$, то есть у нас остаётся $O(n)$ + +Теперь нам нужно проверить, нет ли пары ближе, не по рзные стороны от границы. Нам интересна ближайшая такая пара, но только если расстояние меньше delta. + +Пусть $x^* = max\left\{ x\mid(x, y)\in L_x \right\}$ + +\begin{lstlisting} +\end{lstlisting} + +Тут картинка + +Рассмотрим точки, попавшие в полосу. Для всех точек в $L_x$ нам не обязательно рассматривать все точки в полосе в $R_y$. Рассмотрим только те, что по $y$ лежат в delta-окрестности + + +Возьмём полосу и поделим на квадраты со стороной $\delta/2$. Сколько точек в каждом таком квадрате? Если там есть две точки, то расстояние между ними меньше $\delta$, а это невозможно. + +Понятно, что между точками на расстоянии $<\delta$ не более трёх рядов квадратов. Значит, всегда будет достаточно рассмотреть 15 ближайших точек. +\end{document} diff --git a/algorithms-old/tex/algorithms_07_[02.02.2016].tex b/algorithms-old/tex/algorithms_07_[02.02.2016].tex new file mode 100644 index 0000000..e4c9775 --- /dev/null +++ b/algorithms-old/tex/algorithms_07_[02.02.2016].tex @@ -0,0 +1,150 @@ +\input{header.tex} + +\begin{document} + +\section{Лекция 7 от 02.02.2016} + +\subsection{Умножение чисел. Алгоритм Карацубы} + +Пусть \(x = \overline{x_1 x_2 \ldots x_n}\) и \(y = \overline{y_1 y_2 \ldots y_n}\). Распишем их умножение в столбик: +\begin{center} + \[ + \renewcommand{\arraystretch}{0.8} + \arraycolsep=1pt + \begin{array}{r} + \times\begin{array}{rrrr} + x_1 & x_2 & \ldots & x_n \\ + y_1 & y_2 & \ldots & y_n \\ + \hline + \end{array} + \\ + +\begin{array}{rrrrrrr} + & & & z_{11} & z_{12} & \ldots & z_{1n} \\ + & & z_{21} & z_{22} & \ldots & z_{2n} & \\ + & \hdotsfor{4} & & \\ + z_{n1} & z_{n2} & \ldots & z_{nn} & & & \\ + \hline + \end{array} + \\ + \begin{array}{rrrrrrrr} + z_{11} & z_{12} & \dots & \dots & \dots & \dots & z_{2n} & z_{2n+1} \\ + \end{array} + \end{array}\] +\end{center} + + +Какова сложность такого умножения? Всего \(n\) строк. На получение каждой строки тратится \(O(n)\) операций. Тогда сложность этого алгоритма --- \(nO(n) = O(n^2)\). Теперь вопрос: \emph{а можно ли быстрее?} Один из величайших математиков XX века, А.Н. Колмогоров, считал, что это невозможно. + +Попробуем воспользоваться стратегией <<Разделяй и властвуй>>. Разобьём числа в разрядной записи пополам. Тогда +\[\begin{array}{c} +\times \begin{cases} +x = 10^{n/2}a + b\\ +y = 10^{n/2}c + d\\ +\end{cases} \\ +\Downarrow\\ +xy = 10^{n}ac + 10^{n/2}(ad+bc)+bd +\end{array}\] + +Как видно, получается 4 умножения чисел размера \(\frac{n}{2}\). Так как сложение имеет сложность \(\Omega(n)\), то + +\[T(n) = 4T\left( \frac{n}{2} \right) + \Theta(n)\] + +Чему равно \(T(n)\)? Воспользуемся основной теоремой. Напомним: в общем виде неравенство +имеет вид: + +\[T(n) \leqslant aT\left( \frac{n}{b} \right) + cn^d\] + +В нашем случае \(a = 4, b = 2, d = 1\). Заметим, что \(4 > 2^1 \implies a > b^d\). Тогда \(T(n) = O(n^{\log_2 4}) = O(n^2)\). + +Как видно, it’s not very effective. Хотелось бы свести число умножений на каждом этапе к +трём, так как это понизит сложность до \(O(n^{\log_2 3}) \approx O(n^{1.58})\)Но как? + +Вернёмся к началу. Разложим \((a + b)(c + d)\) + +\[(a+b)(c+d) = ac+(ad+bc) + bd \implies ad + bc = (a + b)(c + d) - ac - bd\] + +Подставим это в начальное выражение для \(xy\): + +\[xy = 10^{n}ac + 10^{n/2}((a + b)(c + d) - ac - bd)+bd\] + +Отсюда видно, что достаточно посчитать три числа размера \(\frac{n}{2}\): \((a + b)(c + d), ac\) и \(bd\). Тогда: + +\[T(n) = 3T\left( \frac{n}{2} \right) + \Theta(n) \implies T(n) = O(n^{\log_2 3})\] + +Полученный алгоритм называется \emph{алгоритмом Карацубы}. +На данный момент доказано, что для любого $\varepsilon > 0$ существует алгоритм, который совершает умножение двух чисел с сложностью \(O(n^{1 + \varepsilon})\). Также стоит упомянуть \emph{алгоритм Шёнхаге-Штрассена}, работающий за \(O(n \log n \log \log n)\) + +\subsection{Перемножение матриц. Алгоритм Штрассена} + +Пусть у нас есть квадратные матрицы +\[A = \begin{pmatrix} +a_{11} & a_{12} & \ldots & a_{1n} \\ +a_{21} & a_{22} & \ldots & a_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +a_{n1} & a_{n2} & \ldots & a_{nn} \\ +\end{pmatrix} +\text{и } +B = \begin{pmatrix} +b_{11} & b_{12} & \ldots & b_{1n} \\ +b_{21} & b_{22} & \ldots & b_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +b_{n1} & b_{n2} & \ldots & b_{nn} \\ +\end{pmatrix}\] + +Сколько операций нужно для умножения матриц? Умножим их по определению. Матрицу +\(C = AB\) заполним следующим образом: +\[c_{ij} = \sum\limits_{k = 1}^{n} a_{ik}b_{kj}\] + +Всего в матрице \(n^2\) элементов. На получение каждого элемента уходит \(O(n)\) операций (умножение за константное время и сложение \(n\) элементов). Тогда умножение требует \(n^2O(n) = O(n^3)\) +операций. + +А можно ли быстрее? Попробуем применить стратегию «Разделяй и властвуй». Представим +матрицы \(A\) и \(B\) в виде: + +\[A = \begin{pmatrix} +A_{11} & A_{12}\\ +A_{21} & A_{22} +\end{pmatrix} +\text{и } +B = \begin{pmatrix} +B_{11} & B_{12}\\ +B_{21} & B_{22} +\end{pmatrix}\] +где каждая матрица имеет размер \(\frac{n}{2}\). Тогда матрица \(C\) будет иметь вид: +\[C = \begin{pmatrix} +A_{11}B_{11}+A_{12}B_{21} & A_{11}B_{12}+A_{12}B_{22}\\ +A_{21}B_{11}+A_{22}B_{21} & A_{21}B_{12}+A_{22}B_{22} +\end{pmatrix}\] + Как видно, получаем 8 перемножений матриц порядка \(\frac{n}{2}\). Тогда + +\[T(n) = 8T\left( \frac{n}{2} \right) + O(n^2)\] + +По основной теореме получаем, что $T(n) = O\left(n^{\log_{2} 8}\right) = O(n^{3})$. + +Можно ли уменьшить число умножений до 7? \emph{Алгоритм Штрассена} утверждает, что можно. Он предлагает ввести следующие матрицы (даже не спрашивайте, как до них дошли): + +\[\begin{cases} + M_1 = (A_{11} + A_{22})(B_{11} + B_{22}); \\ + M_2 = (A_{21} + A_{22})B_{11}; \\ + M_3 = A_{11}(B_{12} - B_{22}); \\ + M_4 = A_{22}(B_{21} + B_{11}); \\ + M_5 = (A_{11} + A_{12})B_{22}; \\ + M_6 = (A_{21} - A_{11})(B_{11} + B_{12}); \\ + M_7 = (A_{12} - A_{22})(B_{21} + B_{22}); \\ +\end{cases}\] +Тогда +\[\begin{cases} + C_1 &= M_1+M_4-M_5+M_7; \\ + C_2 &= M_3+M_5; \\ + C_3 &= M_2+M_4; \\ + C_4 &= M_1-M_2+M_5+M_6; \\ +\end{cases}\] + +Можно проверить что всё верно (оставим это как \sout{наказание} упражнение читателю). Сложность алгоритма: + +\[T(n) = 7T\left( \frac{n}{2} \right) + O(n^2) \implies T(n) = O\left(n^{\log_{2} 7} \right)\] + +На данный момент один из самых быстрых алгоритмов имеет сложность \(\approx O(n^{2.3})\) (\emph{ал- +горитм Виноградова}). Но этот алгоритм быстрее только в теории — из-за астрономически +огромной константы. +\end{document} diff --git a/algorithms-old/tex/algorithms_08_[04.02.2016].tex b/algorithms-old/tex/algorithms_08_[04.02.2016].tex new file mode 100644 index 0000000..63dbf41 --- /dev/null +++ b/algorithms-old/tex/algorithms_08_[04.02.2016].tex @@ -0,0 +1,103 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 8 от 4.02.2016} + +\subsection{Быстрое возведение в степень} +Пусть \(x = \overline{x_1 \ldots x_n}\), \(y = \overline{y_1 \ldots y_n}\). Можно ли за полиномиальное время возвести число $x$ в степень $y$? + +Тупо умножать $x$ на себя $y$ совершенно неоптимально --- несложно показать, что сложность алгоритма будет $O(2^n)$ (где $n$ --- число цифр в числе). При этом само число $x^y$ содержит \(10^{n}n\) цифр. Получается, что один только размер результата экспоненциален, то есть полиномиальной сложности не хватит даже на вывод результата. + +А если по модулю (т.е. результатом будет \(x^y \pmod{p}\) для некоторого указанного \(p\))? Прямое умножение всё равно достаточно медленно. Можно ли быстрее? Оказывается, что да. + +\begin{algorithm} + \caption{Быстрое возведение в степень} + \begin{algorithmic}[1] + \Function{Power}{$x, y, p$}\Comment{алгоритм считает \(x^y \pmod{p}\)} + \If{\(y = 0\)} + \State return 1 + \EndIf + \State \(t \mathrel{:=} \textsc{Power}\left(x, \lfloor\frac{y}{2}\rfloor, p \right)\) + \If{\(y \equiv 0 \pmod{2}\)} + \State return \(t^2\) + \Else + \State return \(xt^2\) + \EndIf + \EndFunction + \end{algorithmic} +\end{algorithm} + +Легко понять, что глубина рекурсии для данного алгоритма равна $O(\log y) = O(n)$. + +Покажем, как он работает на примере \(x = 4, y = 33\): \[x^{33} = x(x^{16})^{2} = x((x^{8})^2)^2 = x(((x^4)^2)^2)^2 = x((((x^2)^2)^2)^2)^2 \]. +Как видно, для возведения числа в 33-ю степень достаточно 7 умножений. + +\subsection{Обратная задача} + +Пусть нам известны числа $x,\ z,\ p$, каждое по $n$ цифр. Можно ли за полиномиальное время найти число $y$ такое, что $x^y = z \pmod{p}$. + +Сказать сложно --- с одной стороны, такой алгоритм ещё не смогли придумать. С другой стороны, не могут доказать того, что его нет. Это всё, вообще говоря, висит на известной проблеме $\mathrm{P} \mathrel{\overset{?}{=}} \mathrm{NP}$ и подробнее мы об этом поговорим ближе к концу курса. + +\subsection{Обработка текста} +Предположим, у нас есть $n$ слов, и эти слова мы хотим разместить на странице (порядок, разумеется, не меняя --- это же, в конце концов, текст). При этом, шрифт моноширинный, а ширина строки ограничена. Что мы хотим --- разместить текст так, чтобы он был выровнен по обоим краям. При этом хотелось бы, чтобы пробелы были примерно одинаковы по ширине. + +Введём такую ??? (меру? хз): $\varepsilon(i, j) = L-\sum\limits_{t=i}^j|w_t|-(j-i)$ --- число дополнительных пробелов в строке с $i$-го по $j$-ое слово. + +Также введём $c(i, j)$ --- стоимость размещения. + +\[ + c(i, j) = \begin{cases} + +\infty, \epsilent(i, j) < 0\\ + \left( \frac{\epsilent(i, j)}{j-i} \right)^3, \epsilent(i, j) \geqslant 0\\ + \end{cases} +\] + +И как это решать? Можно попробовать жадным алгоритмом --- просто ``впихивать'' слова в строку, пока влезают. Он тут не работает, так как он вообще не учитывает стоимость. + +Попробуем наш извечный ``разделяй и властвуй''. Базовый случай --- слова помещаются в одну строку, а если не помещаются --- переносим и повторяем. Но тут тоже не учитывается стоимость, так что вряд ли будет сильно лучше. + +Вход: $w_1, \ldots, w_n; c(i, j)$. + +Выход: $j_0, \ldots, j_{l+1}$, такие что $j_0 = 1,\ j_{l+1} = n,\ \sum c(j_i, j_{i+1})$ минимальна. + +Сколько всего таких наборов? Мест, где в принципе может оказаться разрып строки --- $n-1$, в каждом можно поставить или не поставить --- итого $2^{n-1}$ разбиений. + +Пусть $OPT(j)$ --- стоимость оптимального размещения слов с $j$-ого по $n$-ное. Наша задача --- вычислить $OPT(1)$. А как? + +\[ + OPT(1) = \min\limits_{i\leqslant n}\{c(1, i)+OPT(i+1)\} +\] + +\begin{lstlisting} +OPT(j): + if j = n+1 then return 0 + f:= +inf + for i:= j to n do + f:= min(f, c(i, j)+OPT(i+1)) +\end{lstlisting} + +$(*)\ \mathrm{OPT}(3) =\begin{cases} + 0, & j>n\\ + \min\limits_{i = j\ldots n}\left\{ c(j, i) + \mathrm{OPT}(3)(i+1) \right\}, & \text{иначе} +\end{cases}$ + +А сложность? Построив дерево, заметим, что $\mathrm{OPT}(3)$ вычисляется два раза; $\mathrm{OPT}(4)$ -- три раза и так далее. + +Будем сохранять результаты: + +\begin{algorithmic} + \Function{OPT\_cache}{$t$} + \If{\(M[j] \neq \textrm{NULL}\)} + \Else + \State \(M[j] \mathrel{:=} \textsc{OPT}(j)\) + \EndIf + \State return \(M[j]\) + \EndFunction +\end{algorithmic} + +Такая методика называется \emph{динамическим программированием}. + +Основная идея --- каждая задача зависит от полиномиального числа других задач. + +\end{document} diff --git a/algorithms-old/tex/algorithms_09_[09.02.2016].pdf b/algorithms-old/tex/algorithms_09_[09.02.2016].pdf new file mode 100644 index 0000000..0f672c0 Binary files /dev/null and b/algorithms-old/tex/algorithms_09_[09.02.2016].pdf differ diff --git a/algorithms-old/tex/algorithms_09_[09.02.2016].run.xml b/algorithms-old/tex/algorithms_09_[09.02.2016].run.xml new file mode 100644 index 0000000..9a1c4a5 --- /dev/null +++ b/algorithms-old/tex/algorithms_09_[09.02.2016].run.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + latex + + algorithms_09_[09.02.2016].bcf + + + algorithms_09_[09.02.2016].bbl + + + blx-dm.def + blx-compat.def + biblatex_.def + numeric.bbx + standard.bbx + numeric.cbx + biblatex.cfg + russian.lbx + english.lbx + + + + biber + + biber + algorithms_09_[09.02.2016] + + + algorithms_09_[09.02.2016].bcf + + + algorithms_09_[09.02.2016].bbl + + + algorithms_09_[09.02.2016].bbl + + + algorithms_09_[09.02.2016].bcf + + + diff --git a/algorithms-old/tex/algorithms_09_[09.02.2016].tex b/algorithms-old/tex/algorithms_09_[09.02.2016].tex new file mode 100644 index 0000000..f6c343c --- /dev/null +++ b/algorithms-old/tex/algorithms_09_[09.02.2016].tex @@ -0,0 +1,191 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 9 от 9.02.2016} + +\subsection{Продажа земли} + +Предположим, что у нас есть участок земли у берега и мы хотим его продать. +При этом у нас есть несколько покупателей и каждый из них готов отдать некоторую сумму за некоторый фрагмент участка. +Как максимизировать выгоду? + +Формализуем: у нас есть $n$ предложений и каждое характеризуется тремя числами — началом $s$, концом $f$ и весом $w$. +Таким образом, вход выглядит так: + +$s_1, \ldots, s_n$ --- начала + +$f_1, \ldots, f_n$ --- концы + +$w_1, \ldots, w_n$ --- веса\\ + +Пример: + +\includegraphics[width=5cm]{09_intervals.png}\\ + +На выходе мы хотим получить максимальную сумму весов непересекающихся интервалов: + +\[ +\max\limits_{T\subseteq \left\{ 1,\ldots, n \right\}} \sum\limits_{i\in T}w_i +\] +\[ +T: \forall i 0\)} + \If{\(OPT[i - 1] > w_i + OPT[p(i)]\)} + \State \(i = i - 1\) + \Else + \State \(T = T \cup {i}\) + \State \(i = p(i)\) + \EndIf + \EndWhile + \State return \(p(i)\) + \EndFunction + \end{algorithmic} +\end{algorithm} + +\subsection{В общем о динамическом программировании} +Чем оно отличается от ``Разделяй и властвуй''? А тем, что задачи могут пересекаться. Ведь при использовании классического ``разделяй и властвуй'' мы бы получили экспоненциальное решение. + +Для эффективного использования этого принципа необходимы следующие условия: +\begin{itemize} + \item Небольшое число задач; например, полиномиальное; + \item Возможность их упорядочить и выразить решения следующих через предыдущие. +\end{itemize} + +\subsection{Задача с прошлой лекции --- выравнивание текста} + +Дано:\\ +$w_1,\ldots, w_n$ --- длины слов. + +$c(i, j)$ --- штраф за размещение $w_i,\ldots, w_j$ на одной строке.\\ + +Преобразуем наше рекурсивное решение в итеративное. + +OPT$(i)$ --- оптимальное размещение $w_i, \ldots, w_n$. + +OPT(i) = $\min\limits_{i\leqslant j\leqslant n} \left\{ c(i, j)+ \mathrm{OPT}(j+1) \right)\}$.\\ + +Запишем итеративный алгоритм для этой формулы. +Так как $i$-ая задача зависит от задач с большим индексом, будем заполнять массив с конца. + +\begin{algorithm} + \caption{Выравнивание текста} + \begin{algorithmic} + \Function{ComputeOpt}{$w_1, \ldots, w_n$} + \State \(best = [0] \times n\) + \State \(OPT = [+\infty] \times (n + 1)\) + \State $OPT[n + 1] = 0$ + \For{\(i \mathrel{:=} n\) \textbf{downto} 1} + \For{\(j \mathrel{:=} i\) \textbf{to} n} + \If{\(c(i, j) + OPT[j + 1] \leqslant OPT[i]\)} + \State \(OPT[i] = c(i, j) + OPT[j + 1]\) + \State \(best[i] = j\) + \EndIf + \EndFor + \EndFor + \State return $OPT[i]$ + \EndFunction + \end{algorithmic} +\end{algorithm} + +Как видно, в данном алгоритме решение строится по ходу, потому что в данном случае это допустимо. + +\end{document} diff --git a/algorithms-old/tex/algorithms_10_[11.02.2016].tex b/algorithms-old/tex/algorithms_10_[11.02.2016].tex new file mode 100644 index 0000000..766c146 --- /dev/null +++ b/algorithms-old/tex/algorithms_10_[11.02.2016].tex @@ -0,0 +1,152 @@ +\input{header.tex} + +\begin{document} + +\section{Лекция 10 от 11.02.2016} + +\subsection{Расстояние редактирования (расстояние Левенштейна)} + +Пусть у нас есть два слова и мы хотим из первого сделать второе. При этом мы можем произвольно расставлять пробелы и заменять буквы. Например: + +\begin{center} + enewcommand{\arraystretch}{0.7} + \setlength{\tabcolsep}{1pt} + \begin{tabular}{cccccc} + п & е & р & в & о & е \\ + \small{$\downarrow$} & \small{$\downarrow$} & \small{$\downarrow$} & \small{$\downarrow$} & & \\ + в & т & о & р & о & е + \end{tabular} + \quad + \begin{tabular}{cccccccccccc} + \cancel{п} & \cancel{е} & \cancel{р} & \cancel{в} & \cancel{о} & \cancel{е} & & & & & & \\ + & & & & & & \small{$\downarrow$} & \small{$\downarrow$} & \small{$\downarrow$} & \small{$\downarrow$} & \small{$\downarrow$} & \small{$\downarrow$}\\ + & & & & & & в & т & о & р & о & е + \end{tabular} + \quad + \begin{tabular}{ccccccc} + & п & е & р & \cancel{в} & о & е \\ + \small{$\downarrow$}& \small{$\downarrow$} & \small{$\downarrow$} & & & & \\ + в & т & о & р & & о & е + \end{tabular} +\end{center} + +Применяется это почти повсеместно: +\begin{itemize} + \item Проверка орфографии. Введённое слово сравнивается с теми, которые есть в словаре. Если в слове есть ошибка, то программа предложит заменить слово на наиболее похожее верное слово. + + \item Проверка работ на плагиат. Опять же, идёт сравнение фраз с фразами из ранее написанных работ. + + \item Также его используют для изучения и сравнения последовательностей ДНК. +\end{itemize} + +Теперь формализуем ранее сказанное. Пусть даны строки $s = s_1\ldots s_m$ и $t = t_1\ldots t_n$. Тогда \emph{выравнивание} $M$ --- множество пар $(i,j)$ таких, что $1 \leqslant i \leqslant m, 1 \leqslant i \leqslant m$, при этом: +\[(i_1, j_1)\in M, (i_2, j_2)\in M, i_1 = i_2 \implies j_1 = j_2\] +\[(i_1, j_1)\in M, (i_2, j_2)\in M, i_1 < i_2 \implies j_1 < j_2\] + +\emph{Расстояние редактирования (оно же расстояние Левенштейна)} --- минимальное число операций, переводящее $s$ в $t$. Доступные операции --- удаление букв, добавление букв и замена одной буквы на другую. + +Сколько вообще существует возможных выравниваний? + +Для простоты положим, что \(n = m\). + +\begin{itemize} + \item Так как каждую букву слова можно либо заменить, либо убрать, то их явно не меньше, чем $2^{n}$. + \item Пусть мы выбрали $k$ букв первого слова, которые будут сопоставлены \(k\) буквам другого слова. Тогда получаем, что есть \((C_{n}^{k})^{2}\) выравниваний для фиксированного \(k\) (так как мы вольны в выборе этих букв). Следовательно, всего существует \(\sum\limits_{k = 0}^{n} (C_{n}^{k})^{2}\) выравниваний. + \item Или по-другому: есть \(2n\) букв. Из них надо выбрать \(k\) букв первого слова для замены и \(n - k\) букв второго слова для вставки. Тогда существует \(C_{2n}^{n}\) выравниваний. +\end{itemize} + +Пусть $d(s, t)$ --- расстояние редактирования между $s$ и $t$. + +Рассмотрим первые буквы слов. У нас есть три варианта +\begin{enumerate} + \item Удалить $s_1$ и как-то превратить остаток первого слова во второе; + \item Удалить $t_1$ и превратить первое слово в остаток второго; + \item Сопоставить $s_1$ и $t_1$ и превратить то, что осталось, друг в друга. +\end{enumerate} + +Логично, что нужно выбрать наиболее оптимальный вариант. Тогда значение расстояния будет равно минимальному из этих трёх. + +Базовый случай --- когда одно из слов пустое. Тогда достаточно вставить все буквы из непустого слова. Следовательно, $d(w, \text{\enquote{}}) = d(\text{\enquote{}}, w) = |w|$ + +В итоге получаем, что расстояние Левенштейна определяется следующим образом: +\[d(s_1 \ldots s_m, t_1 \ldots t_n) = +\begin{cases} +|t|, & s = \text{\enquote{ }} \\ +|s|, & t = \text{\enquote{ }} \\ +\min\begin{cases} +d(s_1\ldots s_{m - 1}, t_1 \ldots t_n) + 1 \\ +d(s_1\ldots s_{m}, t_1 \ldots t_{n - 1}) + 1 \\ +d(s_1\ldots s_{m - 1}, t_1\ldots t_{n - 1}) + (s_1=t_1) \\ +\end{cases} & \text{иначе} +\end{cases}\] + +Составим таблицу размером $(m + 1) \times (n + 1)$, где $T[i][j] = d(s_i\ldots s_m, t_j\ldots t_n)$. Пользуясь базовыми случаями заполним верхнюю строку и правый столбец. Теперь заполним $T[6][6]$, как минимум из \(1+T[6][7], 1+T[7][6] \text{ и } T[7][7]+(s_6 \neq t_6)\). Будем продолжать так до тех пор, пока не дойдём до ячейки \(T[1][1]\), в которой и будет записано искомое расстояние Левенштейна: +\begin{center} + $\begin{tabular}{c|ccccccc} + \enquote{} & 6 & 5 & 4 & 3 & 2 & 1 & 0 \\ + е & 5 & 4 & 3 & 2 & 1 & 0 & 1 \\ + о & 4 & 3 & 2 & 1 & 0 & 1 & 2 \\ + в & 3 & 3 & 2 & 1 & 1 & 2 & 3 \\ + р & 4 & 3 & 2 & 2 & 2 & 3 & 4 \\ + е & 4 & 3 & 3 & 3 & 3 & 4 & 5 \\ + п & \(\mathbf{4}\) & 4 & 4 & 4 & 4 & 5 & 6 \\ + \hline + & в & т & о & р & о & е & \enquote{} + \end{tabular}$ +\end{center} + +Из данной таблицы видно, что \(d(\text{\enquote{первое}}, \text{\enquote{второе}}) = 4\). + +Напишем псевдокод для этого алгоритма: + +\begin{algorithm} + \caption{Нахождение расстояния Левенштейна} + \begin{algorithmic}[1] + \Function{EditDistance}{$s, t$}\Comment{$p$ и $q$ --- слова} + \State create \(T[1..(m + 1), 1..(n + 1)]\) + \For{\(k \mathrel{:=} 1\) \textbf{to} \(m + 1\)} + \State \(T[k][n + 1] = m + 1 - k\) + \EndFor + \For{\(k \mathrel{:=} 1\) \textbf{to} \(n + 1\)} + \State \(T[m + 1][k] = n + 1 - k\) + \EndFor + \For{\(j \mathrel{:=} n\) \textbf{downto} \(1\)} + \For{\(i \mathrel{:=} m\) \textbf{downto} \(1\)} + \State \(T[i][j]:= \min(1+T[i+1][j], 1+T[i][j+1], T[i+1][j+1] + (s[i] \neq t[i]))\) + \EndFor + \EndFor + \State \textbf{return} \(T[1][1]\) + \EndFunction + \end{algorithmic} +\end{algorithm} + +Данный алгоритм можно улучшить, если рассматривать отдельно случаи, когда две соседние буквы переставлены местами. Тогда +\[d(s_1 \ldots s_m, t_1 \ldots t_n) = +\begin{cases} +|t|, & s = \text{\enquote{ }} \\ +|s|, & t = \text{\enquote{ }} \\ +\min\begin{cases} +d(s_1\ldots s_{m - 1}, t_1 \ldots t_n) + 1 \\ +d(s_1\ldots s_{m}, t_1 \ldots t_{n - 1}) + 1 \\ +d(s_1\ldots s_{m - 1}, t_1\ldots t_{n - 1}) + (s_1=t_1) \\ +d(s_1\ldots s_{m - 2}, t_1 \ldots t_{n - 2}) + 1 +\end{cases} & \text{если } s_i = t_{i - 1} \text{ и } s_{i - 1} = t_i \\ +\min\begin{cases} +d(s_1\ldots s_{m - 1}, t_1 \ldots t_n) + 1 \\ +d(s_1\ldots s_{m}, t_1 \ldots t_{n - 1}) + 1 \\ +d(s_1\ldots s_{m - 1}, t_1\ldots t_{n - 1}) + (s_1=t_1) \\ +\end{cases} & \text{иначе} +\end{cases}\] +Данная функция называется \emph{расстоянием Дамерау-Левенштейна}. + +\subsection{Сравнение алгоритмов} + +\[\begin{array}{c|ccc} + & \text{Интервалы} & \text{Ширина} & \text{Редактирование}\\ + \hline + \text{Число подзадач}&O(n)&O(n)&O(n^2)\\ + \text{Число подзадач, от которых зависит задача}&2&O(n)&3\\ + \text{Время}&O(n)&O(n^2)&O(n^2)\\ +\end{array}\] + +\end{document} diff --git a/algorithms-old/tex/algorithms_11_[16.02.2016].tex b/algorithms-old/tex/algorithms_11_[16.02.2016].tex new file mode 100644 index 0000000..ef079d6 --- /dev/null +++ b/algorithms-old/tex/algorithms_11_[16.02.2016].tex @@ -0,0 +1,78 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 11 от 16.02.2016} + +\subsection{Алгоритмы на графах} +Графы бывают ориентированными и неориентированными, при этом неориентированные --- частный случай ориентированных. Сегодня мы будем говорить исключительно о неориентированных. + +\subsection{Достижимость} +Вход: $G(V, E); s, t \in V$. +Вопрос: есть ли путь из $s$ в $t$ в $G$? + +Небольшое отступление: ещё бывают взвешенные графы, где каждому ребру сопоставлен его вес (например, длина). + +А можно поставить задачу поиска \emph{кратчайшего пути}: +Вход: $G(V, E); s, t \in V, W_i$. +Выход: длина кратчайшего пути из $s$ в $t$. + +Но о взвешенных графах мы тоде говорит сегодня не будем. + +Вообще говоря, многие задачи на графах не сразу бросаются в глаза как задачи, собственно, на графах --- например, та же задача о расстоянии редактирования; если рассмотреть слова как вершины графа, а рёбра провести между теми вершинами, которые можно перевести одну в другую одой операцией; а хотим мы найти кратчайшее расстояние межды dthibyjq $s$ и $t$. Понятно, что такое решение не очень эффективно просто потому, что граф получается бесконечный, но тем не менее, как решение вполне годится. + +Итак, задача достижимости. Что можно сделать в самом начале? Посмотреть на соседей $s$. Если среди них есть $t$, то мы выиграли; если нет, то посмотрим на соседей этих соседей и так далее. Запишем алгоритм, который обойдёт всевершины, достижимые из $s$ и пометит их: + +Пусть $Q$ --- множество тех, кого мы уже нашли, но чьих соседей ещё не проверили; +\begin{lstlisting} +Explore(G, s) + Q := {s} + while Q != {} do + extract u from Q + mark u + for v such that (u, v) in E do + if v is not marked then + add v to Q +\end{lstlisting} + +Однако, алгоритм ещё не идеален; мы не уточнили, какую именно вершину мы извлекаем из $Q$; проверим, что будет, если $Q$ работает как стек. + +(тут неплохо бы как-то это описать) + +Заметим, что такой алгоритм будет ``углубляться'' в граф на каждой итерации, двигаясь по неокоторому ациклическому пути пока ему есть кда идти; как только идти стало некуда, он начнёт ``отступать'', пока не окажется в вершине, из которой можно попасть в некоторую ещё не исследованную. То есть, попав в вершину $f$, мы не вернёмся назад, пока не обойдём всех соседей $f$. Такой алгоритм называется \emph{поиск в глубину} (\emph{depth-first search}). + +Можно записать его рекурсивно: + +\begin{lstlisting} +DFS(G, S) + mark s + for v such that (s, v) in E do + if v is not marked + DSF(G, v) +\end{lstlisting} + +А теперь попробуем сделать $Q$ очередью. Пройдясь по графу вручную, становится понятно, что для улучшения алгоритма стоит помечать вершины перед их добавлением в очередь. Порядок обхода это не меняет, впрочем; наш алгоритм обходит алгоритм как бы ``по слоям'': + +Пусть $L_0 = \left\{ s \right\}$. определим слои рекуррентно: $L_{j+1} = \left\{ v\mid \forall i \leqslant j: v\not\in L_i, \exists u \in L_j:(u, v) \in S \right\}$. Заметим, что номер слоя, в который входит вершина, есть длина кратчайшего пути из $s$ в неё, то есть \emph{поиск в ширину} (\emph{breadth-first search}) можно использовать для поиска кратчайшего пути. Перепишем его для этого: + +Пусть $d$ --- список расстояний. +\begin{lstlisting} +BFS(G, s) + for v in V do + d[v] := infinity + d[s] := 0 + Q := [s] + while Q is not empty do + u := dequeue(Q) + for v such that (u, v) in E do + if d[v] = infinity then + enqueue(v) + d[v] = d[u]+1 +\end{lstlisting} + +При этом, мы получим расстояния, но не получим пути; для этого, впрочем, достаточно завести массив $P$ и сохранять в него родителя текущей вершины. + +\subsection{Компоненты связности} + +Для поиска компонент связности, вообще говоря, можно использовать любой алгоритм обхода графа: +\end{document} diff --git a/algorithms-old/tex/algorithms_12_[18.02.2016].tex b/algorithms-old/tex/algorithms_12_[18.02.2016].tex new file mode 100644 index 0000000..eb65544 --- /dev/null +++ b/algorithms-old/tex/algorithms_12_[18.02.2016].tex @@ -0,0 +1,90 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 12 от 18.02.2016} + +\subsection{Представление графов в памяти компьютера} + +Пусть у нас есть граф $G = (V, E)$. Пусть $n = |V|, m = |E|$. Если мы говорим о линейном времени работы, то подразумеваем $\Theta(n+m)$. + +Можем заметить, что если наш граф ориентированный, да ещё и с петлями, то $ m \leqslant n^2$. В более привычном случае неориентированного графа без петель, $m \leqslant \frac{n(n-1)}{2}$, но это всё равно $\Theta(n^2)$. + +Минимальная же граница для связного графа --- $n-1$, но как правило, для большинства графов можно считать, что $m = \Omega(n)$. + +Как можно представить граф в памяти? Самый известный способ --- \emph{матрица смежности}. Представляет она собой матрицу размера $n\times n$, где на пересечении $i$-ой строки и $j$-го столбца стоит 1 тогдjа и только тогда, когда в графе есть ребро $(i, j)$: $A_{ij} = (i, j) \in E$. Проверить существование ребра можно за константное время, просто найдя нужную ячейку таблицы. + +Также существует представление \emph{списками смежности} --- используется $n$ списков, где каждой вершине сопоставлен один из них, и в список $N[i]$ входят только те вершины, что связаны с $i$-ой. Заметим интересную особенности таких списков --- каждое ребро входит ровно в два списка (в один, если мы говорим об ориентированном графе); плюс нужна память на хранение пустых списков, если таковые имеются. + +Выигрыш по памяти у списков смежности, по сравнению с матрицей, очень существенен для \emph{разреженных графов} (граф, где $m= \Theta(n)$ \emph{или около того} (цитата) ). И действительно --- веб-граф, представление всех связей между веб-страницами, имеет миллиарды и мииллиарды вершин. Построить и обрабатывать матрицу такого размера --- вообще довольно нетривиальная задача, но тут это ещё и оверкилл --- большая часть ячеек будет равна 0 --- в среднем на странице несколько десятков ссылок, но никак не миллиарды. +\[ +\begin{array}{c|ccc} + &\text{Память}&(i, j)\in E?&\mathrm{for}\ v \in E\\\hline\\ + \text{Матрица смежности}&\Theta(n^2)&\Theta(1)&\Theta(n)\\ + \text{Списки смежности}&\Theta(m+n)&\Theta(\deg(i))&\Theta(\deg(i))\\ +\end{array} +\] + +А ещё бывают мультиграфы, где может быть несколько рёбер в одной паре вершин, и взвешенные графы, но оба представления несложно модифицируются для их поддержки. + +\subsection{Оценка BFS} + +Запишем несколько отличающийся псевдокод: +%\begin{algorithm} +% \caption{Поиск в ширину} +% \begin{algorithmic}[1] +% \Function{BFS}{$G, s$} +% \State discovered[s]\mathrel{:=} True +% \For{$v\in V\setminus\left\{ s \right\}$} +% +% \EndFor +% \end{algorithmic} +%\end{algorithm} +% СЛООЖНААА + +\begin{lstlisting} +BFS(G, s) + discovered[s] := true + for v in V\setminus{s} do + discovered[v] := false + i := 0 + T := {} + L[0] := {s} + while L[i] != {} do + L[i+1] := {} + for u in L[i] do + for (u, v) in E do + if not discovered[v] then + discovered[v] := true + T := T\cup{(u, v)} + L[i+1] := L[i+1]\cup{v} + i := i+1 +\end{lstlisting} + +*тут снова офигительно долгий пример работы алгоритма* + +Алгоритм работает примерно так же, как тот, что мы уже рассмотрели, но теперь он явно демонстрирует ``послойность'' BFS. Сложность алгоритма --- $O(n+m)$; $n$ как минимум потому, что мы создаём $n$ списков; $m$ же берётся из того, что мы рано или поздно посмотрим на все рёбра. Однако эта оценка верна для списков смежности; матрица смежности медленнее перебирает соседей вершины и с ней мы получили бы $O(n^2)$. + +\subsection{Оценка DFS} + +Тут тоже запишем несколько другой алгоритм: + +\begin{lstlisting} +DFS(G, s) + for v in V do + explored[v] := false + S := [s] // stack + while not empty(S) do + u := pop(s) + if not explored[u] then + explored[u] := true + for (u, v) in E do + if not explored[v] then + push(v, S) + parent[v] := u +\end{lstlisting} + +*и ещё одна десятиминутная демонстрация* *А, нет, не успели* + +Сложно +\end{document} diff --git a/algorithms-old/tex/algorithms_14_[01.03.2016].tex b/algorithms-old/tex/algorithms_14_[01.03.2016].tex new file mode 100644 index 0000000..f6c631d --- /dev/null +++ b/algorithms-old/tex/algorithms_14_[01.03.2016].tex @@ -0,0 +1,87 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 14 от 01.03.2016} + +\subsection{Поиск компонент связности в неориентированном графе} +(третий аргумент DFS --- то, чем помечаются вершины) +\begin{lstlisting} +i := 1 +for v in V do + if v is not marked then + DFS(G, v, i) + i := i + 1 +\end{lstlisting} + +Сколько времени, если в графе $m$ вершин и $n$ рёбер? $O(m_n)$. Почему? Потому что в DFS мы проходим по каждому ребру в компоненте связности не более двух раз. + +А для ориентированного графа? + +Проверка сильной связности в ориентированном графе. Очевидно, это сложнее, потому что, если мы рассмотрим граф из двух вершин и одного ребра, то из одной DFS до другой доберётся, а в обратную сторону --- уже нет. + +\begin{lstlisting} +DFS(G, s, 1) +if exists u in V: u is not marked then + return false +return DFS(Grev, s, 2) +\end{lstlisting} + +Если $G = (V, E)$, то $G^{rev} = (V, E^{rev})$ + +Вот как мы определяем $DFS$, кстати: + +\begin{lstlisting} +DFS(G, s, i) + mark s with i + for (s, v) in E do + if v is not marked + DFS(G, v, i) + t := t+1 + f[s] = t +\end{lstlisting} + +Поиск компонент сильной связности: + +\begin{lstlisting} +Explore(Grev) +unmark all +Explore(G) // for v in V v poryadke ubyvuaniya f[v] +\end{lstlisting} + +Пусть $C_1$ и $C_2$ --- две компоненты сильной связности; $i\in C_1,\ j\in C_2,\ (i,j)\in E$. Тогда $\max\limits_{u\in C_1} f[u] < \max\limits_{v\in C_2} f[v]$ + +Каждый вызов DFS внутри Explore(G) обходит некоторую компоненту сильной связности. + +S --- множество вершин, обойдённых в Explore(G). + +Базис: $S = \varnothing$. +Шаг: Пусть $S = C_1 \cup\ldots\cup C_k$, где $C_i$ --- компоненты сильной связности. + +Пусть $C_v$ --- к.с.с., содержащая $v$ и $S_v$ --- множество вершин, обойдённых в DFS(G, v, i). Тогда $C_v \subseteq S_v$; $u\not\in C_v \implies \forall w \in C_u: f[v] < f[w]$. + +\subsection{Матрицы смежности} +Пусть $A$ --- матрица смежности $G$; тогда $(A^t)_{ij}$ --- число путей из $i$ в $j$ длины $t$. + +Существует ли путь из $i$ в $j$? Возведём $E+A$ в степень $n-1$ и проверим, что $ij$-ый элемент больше нуля. Используя быстрое возведение в степень можно обойтись $\lceil\log_2n\rceil$ перемножениями матриц. + +\begin{lstlisting} +B := E + A +for x := 1 to log2 n do + b_ij := \Lor (b_ik\land b_kj) +\end{lstlisting} + +\subsection{Кратчайшие пути} +Вход: $G, W$; +Выход: $B$ такое, что $B_{ij}$ --- длина кратччайшего пути из $i$ в $j$. + +Алгоритм Флойда-Уоршелла: + +\begin{lstlisting} +B := W +for k in V do + for i in V do + for j in V do + B_{ij}:= min(B_{ij}, B_{ik} + B_{kj}) +\end{lstlisting} +\end{document} diff --git a/algorithms-old/tex/algorithms_15_[03.03.2016].tex b/algorithms-old/tex/algorithms_15_[03.03.2016].tex new file mode 100644 index 0000000..bf838b5 --- /dev/null +++ b/algorithms-old/tex/algorithms_15_[03.03.2016].tex @@ -0,0 +1,147 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 15 от 03.03.2016} + +\subsection{Алгоритм Флойда-Уоршелла} + +Вход: $G = (V, E)$ с весами $W_{ij}$; $V = \{1,\ldots, n\}$; в $G$ нет циклов с отрицательными весами. +Выход: $B_{ij}$ --- длина кратчайшего пути из $i$ в $j$. + +Пусть OPT$(i, j, k)$ --- длина кратчайшего пути из $i$ в $j$ с промежуточными вершинами в $V_k = \{1,\ldots,k\}$. +Мы хотим найти OPT$(i, j, n)$. Воспользуемся методом динамического программирования и будем сводить нашу задачу к меньшим. + +\[ + \mathrm{OPT}(i, j, 0) = + \begin{cases} + 0, i=j;\\ + w_{ij}, i\neq j,\ (i,j) \in E;\\ + +\infty, i\neq j,\ (i,j) \not\in E;\\ + \end{cases} +\] + +А если $k$ не равно нулю? + +Рассмотрим кратчайший путь из $i$ в $j$ через вершины в $V_k$. +\begin{enumerate} + \item $k \not \in i \longrightarrow j$; тогда OPT$(i, j, k) = \mathrm{OPT}(i, j, k-1)$ + \item $k \in i \longrightarrow j$; тогда $i \xrightarrow{\ \ k\ \ } j = i \longrightarrow k \longrightarrow j$ +\end{enumerate} + +Несколько важных замечаний: +\begin{itemize} + \item Если в $G$ нет циклов с отрицательным весом (если есть, то понятие ``кратчайший путь'' вообще неприменимо к той компоненте связности, в которую входит этот цикл), то хотя бы один из кратчайший путей является простым. Это несложно доказать, заметив, что если в путь в таком графе входит цикл, его можно отбросить и не увеличить длины пути. + \item Любой сегмент кратчайшего пути является кратчайшим путём. Это утверждение очевидным образом следует из предыдущего --- если в каком-то сегменте есть цикл, то при его удалении длина пути не увеличится. +\end{itemize} + +Вернёмся ко второму случаю, который мы пока не рассмотрели полностью. Заметим, что ни на отрезке $i \longrightarrow k$, ни на отрезке $k \longrightarrow j$ не может быть промежуточной вершины $k$. Тогда OPT$(i, j, k) = \mathrm{OPT}(i, k, k-1) + \mathrm{OPT}(k, j, k-1)$. + +Однако мы не знаем, входит ли $k$ в кратчайший путь. Что делать? Самый простой вариант --- вычислить кратчайший путь из тех, что проходят через $k$, кратчайший путь из тех, что не проходят, и взять тот из двух, что короче. + +Итак, итоговая формула выглядит так: + +\[ + \mathrm{OPT}(i, j, k) = \min + \begin{cases} + \mathrm{OPT}(i, j, k-1); \\ + \mathrm{OPT}(i, k, k-1) + \mathrm{OPT}(k, j, k-1) + \end{cases} +\] + +Запишем алгоритм: + +\begin{lstlisting} +for i:= 1 to n + for j:= 1 to n + // * + if i = j then + B[i, j, 0] := 0 + else if (i, j) in E then + B[i, j, 0] := w_{ij} + else + B[i, j, 0] := Infinity + +for k:= 1 to n + for i:= 1 to n + for j:= 1 to n + if B[i, j, k-1] < B[i, k, k-1] + B[k, j, k-1] then + B[i, j, k] := B[i, j, k-1] + else + B[i, j, k] := B[i, k, k-1] + B[k, j, k-1] +\end{lstlisting} + +Сложность алгоритма, очевидно, $O(N^3)$ --- три вложенных цикла до $N$. При этом сложность алгоритма не зависит от способа представления графа. + +Очевидная оптимизация --- хранить не все значения, а только те, что соответствуют текущим $k$ и $k-1$. + +Однако нам хватит даже одной матрицы размера $i\times j$: + +\begin{lstlisting} +if B[i,j] > B[i, k] + B[k, j] then + B[i,j]:= B[i, k] + B[k, j] +\end{lstlisting} + +Заметим, что так делать действительно можно. Кажется, что есть опасность случайно воспользоваться уже пересчитанным значением и, вообще говоря, пользоваться значениями для различных $k$. Однако при пересчёте ничего страшного не происходит --- (тут, вообще говоря, нужно расписать то, что он говорил). + +Мы предполагали, что отрицательных циклов нет. А если мы всё же запустим такой алгоритм на ``неподходящем'' графе? А ничего страшного, но для всех вершин $i$ в этом отрицательном цикле после завершения алгоритма будет выполняться $B_{ii} < 0$. Разумеется, в таком случае остальным значениям в $B$ верить вообще нельзя --- в таком графе не определено само понятие ``кратчайший путь''. + +А давайте введём ещё матрицу $C$ и будем заполнять её так, чтобы можно было восстановить ответ: + +\begin{lstlisting} +if B[i,j] > B[i, k] + B[k, j] then + B[i,j]:= B[i, k] + B[k, j] + C[i, j]:= k +\end{lstlisting} + +А как восстановить решение? + +\begin{lstlisting} +Reconstruct(C, i, j) + if C[i, j] = NULL then return * + k = C[i, j] + return Reconstruct(C, i, k) + [k] + Reconstruct(C, k, j) +\end{lstlisting} + +\subsection{Алгоритм Беллмана-Форда} +Вход: $G = (V, E)$ с весами $W_{ij}$; $V = \{1,\ldots, n\}$; в $G$ нет циклов с отрицательными весами; $s \in V$. +Выход: $B_{ij}$ --- длина кратчайшего пути из $i$ в $j$. + +OPT$(k, j)$ --- длина кратчайшего пути из $s$ в $j$, содержащих не более $k$ рёбер. + +Базовый случай: + +\[ + \mathrm{OPT}(0, j) = \begin{cases} + 0, j = s; + +\infty, j\neq s + \end{cases} +\] + +В общем случае, на $k$-ом шаге мы либо пользуемся путём с прошлого шага, либо путём длины ровно $k$. Как их рассмотреть? + +\[ + \mathrm{OPT}(k, j) = \min \begin{cases} + \mathrm{OPT}(k-1, j),\\ + \min\{\mathrm{OPT}(k-1,l)+w_{lj}\mid (l, j)\in E\} + \end{cases} +\] + +Заметим, что так как кратчайший путь --- простой, ответом на задачу будет являться OPT$(n-1, j)$. + +Алгоритм: + +\begin{lstlisting} +for j:=1 to n do + if j = s then + B[0, j] = 0 + else + B[0, j] = Infinity +for k:= 1 to n-1 do + B[k, j] = B[k-1, j] + for (l, j) in E do + if B[k, j] > B[k-1, l] + w_{lj} then + B[k, j] := B[k-1, l] + w_{lj} +\end{lstlisting} + +\end{document} diff --git a/algorithms-old/tex/algorithms_17_[15.03.2016].tex b/algorithms-old/tex/algorithms_17_[15.03.2016].tex new file mode 100644 index 0000000..82eb416 --- /dev/null +++ b/algorithms-old/tex/algorithms_17_[15.03.2016].tex @@ -0,0 +1,105 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция ?? от 15.03.2016} + +\subsection{?} + +Пусть у нас есть некоторая функция Init$(n)$, создающая массив из $n$ нулей; +Read$(i)$; +Write$(a, i)$ + +Также будем исходить из предположения, что памядь под $n$ элементов можно выделить за время $O(1)$; чтение и запись тоже будем считать константными. + +Соответственно Init$(n)$ работает за линейное время --- выделение за константу и $n$ присваиваний. А если мы хотим инициализацию тоже за константу? + +Давайте сдеаем так --- не будем ничего хранить, пока не надо, а когда будет запрос в ранее незанятую ячейку, возвращать ноль. + +Перепишем наш Read: + +\begin{lstlisting} +Read(i) + if IsInitialized(i) then + return A[i] + else return 0 +\end{lstlisting} + +\begin{lstlisting} +IsInitialized(i) + if B[i] > k then + return False + if C[B[i]] = i then + return True + else return False +\end{lstlisting} + +\begin{lstlisting} +Write(a, i) + A[i] := a + if not IsInit(i) + k := k+1 + B[i] := k + C[k] := 1 +\end{lstlisting} + +\begin{lstlisting} +Init(m) + A := Malloc(n) + B := Malloc(n) + C := Malloc(n) + k := 0 +\end{lstlisting} + +\subsection{??} + +Пусть у нас есть восьмибитное число 0; будем прибавлять к нему единицу. Заметим, что в первый раз понадобится одна операция, потом две, потом одна, потом три\ldots + +Получается, что инкремент имеет сложность $O(k)$; логично предположить, что $n$ инкрементов --- $O(nk)$. Это действительно так, но это грубая оценка --- $O(k)$ ведь только в худшем случае. + +\begin{lstlisting} +Increment(A) + for i := 0 to k-1 do + if A[i] = 0 then + A[i] := 1 + break + A[i] = 0 +\end{lstlisting} + +Заметим, что при $n$ инкрементах последний знак числа меняется $n$ раз, предпоследний --- $\frac{n}{2}$ и так далее.В сумме это составит не более $2n$ изменений ---$O(n)$. + +\subsection{Банковский метод}. + +$c_i$ --- реальная стоимость + +$\hat c_i$ --- учётная стоимость. + +$\sum \hat c_i \geqslant \sum c_i$ --- вчёт всегда больше 0. + +Если $\hat c_i > c_i$ то разность поступает на счёт, иначе списывается. + +При этом учётная стоимость является оценкой сверху для реальности. + +В нашей задаче с инкрементом введём такие стоимости: + +$\hat c (0\to 1) = 2;\ c (1\to 0) = 0$ + +Учётная стоимость одного инкремента не больше двух. + +\subsection{Метод потенциалов} + +$D_i$ --- структура данных после $i$ операций. + +$\Phi(D_0) = 0$ + +$\Phi(D_i) \geqslant 0$ + +$\hat c_i := c_i + \Phi(D_i) - \Phi(D_{i-1})$ + +$\sum\limits_{i=1}^n\hat c_i = \sum\limits_{i=1}^n c_i +\Phi(D_n) - \Phi(D_0)$ + +Пусть $\Phi(D_i)$ --- количество единиц. + +$\hat c_i = c_i + \Phi(D_i) - \Phi(D_{i-1}) \leqslant t+1+1-t = 2$ + +\end{document} diff --git a/algorithms-old/tex/algorithms_18_[17.03.2016].tex b/algorithms-old/tex/algorithms_18_[17.03.2016].tex new file mode 100644 index 0000000..4d837a4 --- /dev/null +++ b/algorithms-old/tex/algorithms_18_[17.03.2016].tex @@ -0,0 +1,67 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция ?? от 15.03.2016} + +\subsection{Ассоциативный массив} + +Продолжаем говорить про структуры данных. Ассоциативный массив (он же map в C++, он же словарь в Python). Это структура данных такая, что с каждой записью ассоциирован уникальный ключ и реализованы следующие операции: + +Insert(S, x) + +Delete(S, x) + +Find(S, k) + +Возможные способы: + +Таблица с прямой адресацией: + +Ключи берутся из $U = \{0,\ldots, m-1\}$; данные будем хранить в массиве размера m; все операции быстры, ожнако если мы хотим, чтобы ключи были, например, long'ами, то у нас такая таблица в память не поместится вообще никак. А что делать, если $U$ большое, бесконечное, например? + +Хеш-функция: + +Пусть есть функция $h: U\to \{0, \ldots, m-1\}$. При этом, записывать элемент будем в ячейку $h(k)$. Возможно, что двум ключам соответствует один хеш; тогда возникает \emph{коллизия}, и их можно решать разными способами. Например, можно хранить не элементы, а списки элементов с соответствующим хешем; необходимо только модифицировать наши функции. + +\begin{lstlisting} +Find(T, k) + list := T[h(k)] + return k in list +\end{lstlisting} + +Проблема этого подхода --- случай, когда хеши всех ключей равны. Тогда таблица вырождается в список, а он очень неэффективен. Худший случай для Find --- $O(n)$, в отличие от $O(1)$ в лучшем. А давайте рассмотрим средний случай? + +Будем считать, что $h$ хорошая и распределяет $n$ ключей по $m$ хешам примерно равномерно. Пусть $\alpha = \frac{n}{m}$ --- коэффициент заполнения. + +Ожидаемое время поиска отсутствующего элемента --- $O(1+\alpha)$. При этом, если $n = O(m)$, то поиск занимает $O()$ + +Но нам нужна хорошая функция. Где её взять? + +Метод деления: + +$h(x) = x \pmod{m}$. + +Однако, если у нас, например, $m$ чётное, а так сложилось, что мы работаем с чётными числами, то половина ячеек нашей хеш-таблицы будет пустой. (Вообще, обычно $m$ берут простым и всё хорошо) + +Метод умножения: + +$h(k) = (ak\pmod{2^w}) >> (w-r)$, где $w$ --- длина слова. + + +А теперь снова к коллизиям. Можно использовать не списки, а таблицу с открытой адресацией, где используются по очереди несколько ($m$) хеш-функций, пока очередной хеш от ключа не окажется незанят. При этом мы хотим хоть какой-то эффективности, поэтому иметь больше чем $m$ функций --- излишне; значит, мы хотим, чтобы для всех $k,\ i\neq j$ выполнялось $h(k, i) \neq h(k, j)$. + +Самый простой способ --- имея одну функцию $h'(k)$ определить $h(k, i) = (h'(k) + i) \pmod{m}$. Этот вариант не очень хорош --- будут образовываться большие подряд занятые блоки и они будут замедлять работу. + +Лучше сделать так: $h(k, i) = (h'(k) + ih''(k)) \pmod{m}$. + +А теперь поговорим об эффективности поиска: + +Для каждого ключа все $m!$ перестановок равновероятны. + +$\alpha = \frac{n}{m} < 1$ + +\[ + 1+\frac{n}{m}\left(1+\frac{n-1}{m-1}\left(1+\frac{n-2}{m-2}\cdots\right)\right) \leqslant 1+\alpha(1+\alpha(1+\alpha\cdots)) \leqslant \frac{1}{1-\alpha} +\]<++> +\end{document} diff --git a/algorithms-old/tex/algorithms_19_[22.03.2016].tex b/algorithms-old/tex/algorithms_19_[22.03.2016].tex new file mode 100644 index 0000000..2cad1ab --- /dev/null +++ b/algorithms-old/tex/algorithms_19_[22.03.2016].tex @@ -0,0 +1,102 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 19 от 22.03.2016} + +\subsection{Хорошая хеш-функция} + +Пусть $H$ --- семейство хеш-функций $h: U \to \{0, 1, \ldots, m-1\}$. Назовём $H$ \emph{универсальной}, если выплолняется +\[\forall x\in U, y\in U \left|\left\{ h(x) = h(y)\mid h\in H \right\}\right| = \frac{|H|}{m}\] + +При случайном выборе $h\in H$ $\mathrm{Pr}[h(x) = h(y)] = \frac{1}{m}$ + +Будем считать, что пользуемся такой $h$. + +Пусть $m = n^2$, где $n$ --- число хранимых ключей. Выберем $h\in H$; сколько будет коллизий (таких пар $(x, y)$, что $h(x) = h(y)$)? Утверждается, что немного. + +Давайте оценим матожидание коллизии: + +\[ + E(\text{число коллизий}) = Pr(\text{коллизия})*{n \choose 2} = \frac{1}{m}\cdot\frac{n(n-1)}{2} = \frac{n-1}{2n}<\frac{1}{2} +\] + +\[ + Pr(\text{\# коллизий} \geqslant 1) \leqslant \frac{ E(\text{\# коллизий})}{1} = \frac{1}{2} +\] + +\[ + Pr(\text{коллизий нет}) \geqslant \frac{1}{2} +\] + +Заметим, что тогда (мы опираемся на то, что данные сохраняются единожды) получается, что потратив в среднем две попытки мы можем найти такую $h$, что хеширование произойдёт без коллизий и поиск будет за константное время (это, кстати, называется \emph{идеальным хешированием}). + +Или давайте так: + +Создадим таблицу из $m = n$ ячеек; но таблица будет не простой, а состоящей из хеш-таблиц; при этом внутри каждой такой таблицы коллизий не будет (мы об этом позаботимся). + +Пусть $n_j$ --- число элементов таких, что $h(x) = j$. $\sum\limits_j n_j = n$, как несложно заметить. Введём также $m_j$ --- число ячеек в $j$-ой таблице второго уровня. Если мы хотим обеспечить отсутствие коллизий (и не потратить на это кучу времени), то $m_j$ должно быть равно $n_j^2$. Вопрос --- а чем такой способ лучше предыдущего? А давайте посмотрим на память: внешняя таблица имеет линейное количество ячеек, где каждая имеет константную память (там хранятся лишь ссылки на таблицы второго уровня). А память на таблицы второго уровня --- $\sum\limits_{j=0}^{m-1} \Theta(n_j^2)$. Понятно, что если придумать худший случай, то все будут в одной ячейке. Давайте тогда считать матожидание: + +\[ + E\left[ \sum\limits_{j=0}^{m-1} \Theta(n_j^2) \right] +\] + +Но сначала вот что: + +\[ + n_j^2 = n_j +n_j^2 - n_j = n_j+n_j(n_j-1) = n_j + 2{n_j \choose 2} +\] + +\begin{multline*} + E\left[ \sum\limits_{j=0}^{m-1} n_j^2 \right] = + E\left[ \sum\limits_{j=0}^{m-1} n_j + 2{n_j \choose 2} \right] = + E\left[ \sum\limits_{j=0}^{m-1} n_j \right] + 2E\left[{n_j \choose 2} \right] = \\ = + n + 2E\left[ \text{\# коллизий для $h$} \right] \leqslant + n + 2\cdot\frac{1}{m}\cdot\frac{n(n-1)}{2} = + n + n - 1 = + 2n - 1 +\end{multline*} + +Ой! Линейная память! Вот и искомое преимущество. + +Но пока всё довольно абстрактно. Где брать такие универсальные хеш-функции? Давайте приведём пример: + +Рассмотрим $H_{p\, m}$, где $p$ --- простое число, большее всех ключей. +Пусть она состоит из функций $h(k) = \left( \left( ak+b \right)\mod{p} \right)\mod{m};\ a\in[1;p],\ b\in[0; p]$ + +\subsection{Красно-чёрное дерево} + +Что такое бинарное дерево поиска мы знаем; рассмотрим теперь \emph{сбалансированное} бинарное дерево. Его ключевое свойство: высота такого дерева --- $O(\log n)$. Разумеется, речь идёт о семействе деревьев; сказать, выполняется ли это для конкретного дерева нельзя. + +Рассмотрим один класс таких деревьев --- \emph{красно-чёрные} деревья. Ключевые характеристики: + +\begin{enumerate} + \item Любой узел --- красный или чёрный. + \item Корень и листья --- чёрные. + \item Родителем красного узла может быть только чёрный. + \item На всех простых путях из узла $x$ до листьев-наследников одинаковое количество чёрных узлов. +\end{enumerate} + +Вот как может выглядеть такое дерево: + +\includegraphics[width=15cm]{images/19_rb_tree.pdf} + +Высота RB-дерева с $n$ ключами не больше $2\log_2(n+1)$. Докажем это не вполне формально: + +``Подтянем'' красные узлы к чёрным родителям. Легко заметить, что высота дерева уменьшилась не больше, чем вдвое: $n \leqslant 2h'$. Число листьев, получившихся в итоге --- $n+1 \geqslant 2^{h'}$; $\log_2(n+1)\geqslant h'\geqslant\frac{h}{2}$. Значит, высота дерева --- $O(\log n)$ и поиск в дереве займёт логарифмическое время. + +\begin{lstlisting} +rb_insert(t, x): + tree_insert(t, x) + x.color = 'red' + while x != t.root and x.p.color = 'red' do + if x.p = x.p.p.right then + y:= x.p.p.left + if y.color = 'red' then + x.p.color:= 'black' + y.color:= 'black' + x.p.p.color = 'red' + else + AAAAAAAAAAAA +\end{lstlisting} +\end{document} diff --git a/algorithms-old/tex/algorithms_20_[24.03.2016].tex b/algorithms-old/tex/algorithms_20_[24.03.2016].tex new file mode 100644 index 0000000..7142f1a --- /dev/null +++ b/algorithms-old/tex/algorithms_20_[24.03.2016].tex @@ -0,0 +1,47 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 20 от 24.03.2016} + +\subsection{Вставка красно-чёрные деревья} + +В прошлый раз мы получили, что высота красно-чёрного дерева --- $O(\log n)$, где $n$ --- число ключей. + +Когда мы вставили новую вершину, мы назначаем ей красный цвет. При этом может нарушиться одно из свойств --- у красного только чёрный родитель. + +Править мы будем, используя только две операции: +\begin{enumerate} + \item Перекрашивание --- смена цвета на противоположный. + \item Поворот --- за картинкой полезайте в Кормена, в общем. +\end{enumerate} + +Вообще, тут куча графов, я не успеваю перерисовывать, я сфоткал, если что. + +Сложность такого алгоритма --- $O(\log n)$ --- на изначальную вставку уходит $O(\log n)$; ошибки двигаются вверх не больше чем за два поворота и ?? перекрашиваний --- тоже $O(\log n)$. + +\subsection{Самоорганизующийся список} +Представьте, что вы готовитесь к экзамену. У вас есть стопка книг (все в белых обложках) и вы ищете нужную вам, а найдя --- кладёте вверх. + +Формализуем: есть список $L$. Есть операции access$(x, L)$ за rank$(x)$; transpose$(x, y)$ --- за $O(1)$, но меняем только соседние элементы. + +Решать будем для онлайн-алгоритма --- он не знает всех наших будущих запросов. + +Пусть $|L| = n$, $S$ --- множество операций. + +Понятно, что сложность в худшем случае не может быть меньше $\Theta(n|S|)$, то есть $c_A(S) = \Omega(n|S|)$ + +Средний случай: пусть $p(x)$ --- вероятность обращения к $x$. + +$E(c_A(S)) = \sum\limits_{x\in L}\left(p(x)\rk(x)\right)$ + +Эвристика MTF --- после доступа помещаем элемент вверх списка. Оценим MTF: + +Для начала введём понятие $\alpha$-конкуррентности; алгоритм $\alpha$-конкуррентен, если $C_A(S) \leqslant \alpha\cdot C_{OPT}(S)+k$. + +Пусть $L_i^A$ --- список после $i$ операций по алгоритму $A$; $C_i^A$ --- стоимость $i$-ой операции по алгоритму $A$. + +$\Phi(L_i^{MTF}) = 2|\{(x, y)\mid\rk_{L_i^{MTF}}(x) < \rk_{L_i^{MTF}}(y),\ \rk_{L_i^{OPT}}(x) > \rk_{L_i^{OPT}}(y) \}|$ + +При этом после одной транспозиции $\Phi$ меняется на $\pm 2$ +\end{document} diff --git a/algorithms-old/tex/algorithms_21_[05.04.2016].tex b/algorithms-old/tex/algorithms_21_[05.04.2016].tex new file mode 100644 index 0000000..961583b --- /dev/null +++ b/algorithms-old/tex/algorithms_21_[05.04.2016].tex @@ -0,0 +1,20 @@ +\input{header.tex} + +\begin{document} + +\section*{Лекция 21 от 05.04.2016} + +\subsection{Применение красно-чёрных деревьев} + +Самое очевидное применение --- ассоциативный массив: словарь в Python, map в C++. Вставка, поиск и удаление за $O(\log n)$ --- довольно неплохо. Удаление мы не рассматривали, правда, да и не будем --- предполагается, что это вы прочитаете сами. + +Давайте лучше рассмотрим удаление из обычного двоичного дерева поиска. Если узел --- лист, то его можно просто ``оторвать'' --- просто удалить. Если ребёнок один --- тоже довольно просто: достаточно присоединить ребёнка к родителю удаляемого узла. + +Если же ребёнка два, то нам нужно заменить удаляемый узел на самый большой узел его левого поддерева (или наименьший --- правого). У такого узла не может быть больше одного ребёнка, поэтому с его удалением проблем нет. + + +Но вернёмся к применениям КЧ-деревьев. Несколько нестандартное применение: пусть у нас есть набор отрезков, заданных координатами конца и начала, и есть ещё один отдельный. Задача --- найти, с каким он пересекается. + +Для этого запишем отрезки в дерево, где ключи --- + +\end{document} diff --git a/algorithms-old/tex/compile.py b/algorithms-old/tex/compile.py new file mode 100644 index 0000000..2f5fd74 --- /dev/null +++ b/algorithms-old/tex/compile.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# Change coding to UTF-8 + +# Import section +import os +import subprocess +import re + +# Creating temp file with all lectures +with open('temp.tex', 'w', encoding="utf8") as temp: + # Adding header + with open('header.tex', 'r', encoding="utf8") as header: + temp.write(header.read()) + + # Adding necessary lines (beginning of document, title and table of contents) + temp.write('\n\\begin{document}\n\n') + temp.write('\\maketitle\n\n') + temp.write('\\tableofcontents\n\n') + + # Collecting text from separate lecture files + lectures = [] + + for elem in os.listdir('./'): + if os.path.isfile(os.path.join('./', elem)): + if elem.startswith('algorithms'): + if elem.endswith('.tex'): + lectures.append(elem) + lectures.sort() + + # Adding it to the temp file + for lecture_name in lectures: + with open(lecture_name, 'r', encoding='utf8') as lecture: + temp_lines = lecture.readlines() + for line in temp_lines[3:-1]: + temp_line = line.replace('section*', 'section') + temp.write(temp_line) + + # Adding the final line + temp.write(r'\end{document}') + +# In order to create table of contents, I have to compile it twice. +for _ in range(2): + proc=subprocess.Popen(['pdflatex', '--quiet', 'temp.tex']) + proc.communicate() + +# Saving the file +os.chdir('..') +for file in os.listdir('./'): + if file == 'algorithms_all_lectures.pdf': + os.remove(os.path.join('./', file)) + +os.rename('./tex/temp.pdf', 'algorithms_all_lectures.pdf') +os.chdir('tex') + +# Removing the litter +pattern = 'temp*' +for file in os.listdir('./'): + if re.search(pattern, file): + os.remove(os.path.join('./', file)) diff --git a/algorithms-old/tex/header.tex b/algorithms-old/tex/header.tex new file mode 100644 index 0000000..1868681 --- /dev/null +++ b/algorithms-old/tex/header.tex @@ -0,0 +1,71 @@ +% Размер страницы и шрифта +\documentclass[12pt,a4paper]{article} + +%% Работа с русским языком +\usepackage{cmap} % поиск в PDF +\usepackage{mathtext} % русские буквы в формулах +\usepackage[T2A]{fontenc} % кодировка +\usepackage[utf8]{inputenc} % кодировка исходного текста +\usepackage[english,russian]{babel} % локализация и переносы + +%% Изменяем размер полей +\usepackage[top=0.5in, bottom=0.75in, left=0.625in, right=0.625in]{geometry} + +%% Различные пакеты для работы с математикой +\usepackage{mathtools} % Тот же amsmath, только с некоторыми поправками +\usepackage{amssymb} % Математические символы +\usepackage{amsthm} % Пакет для написания теорем +\usepackage{amstext} +\usepackage{array} +\usepackage{amsfonts} +\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление + +%% Графика +\usepackage[pdftex]{graphicx} +\graphicspath{{images/}} + +%% Прочие пакеты +\usepackage{listings} % Пакет для написания кода на каком-то языке программирования +\usepackage{algorithm} % Пакет для написания алгоритмов +\usepackage[noend]{algpseudocode} % Подключает псевдокод, отключает end if и иже с ними +\usepackage{indentfirst} % Начало текста с красной строки +\usepackage[colorlinks=true, urlcolor=blue]{hyperref} % Ссылки +\usepackage{pgfplots} % Графики +\pgfplotsset{compat=1.12} +\usepackage{forest} % Деревья +\usepackage{titlesec} % Изменение формата заголовков +\usepackage[normalem]{ulem} % Для зачёркиваний +\usepackage[autocite=footnote]{biblatex} % Кавычки для цитат и прочее +\usepackage[makeroom]{cancel} % И снова зачёркивание (на этот раз косое) + +% Изменим формат \section и \subsection: +\titleformat{\section} + {\vspace{1cm}\centering\LARGE\bfseries} % Стиль заголовка + {} % префикс + {0pt} % Расстояние между префиксом и заголовком + {} % Как отображается префикс +\titleformat{\subsection} % Аналогично для \subsection + {\Large\bfseries} + {} + {0pt} + {} + +% Поправленный вид lstlisting +\lstset { % + backgroundcolor=\color{black!5}, % set backgroundcolor + basicstyle=\footnotesize,% basic font setting +} + +% Теоремы и утверждения. В комменте указываем номер лекции, в которой это используется. +\newtheorem*{hanoi_recurrent}{Свойство} % Лекция 1 +\let\epsilent\varepsilon % Лекция 8 +\DeclareMathOperator{\rk}{rank} % Лекция 20 + +% Информация об авторах +\author{Группа лектория ФКН ПМИ 2015-2016 \\ + Никита Попов \\ + Тамерлан Таболов \\ + Лёша Хачиянц} +\title{Лекции по предмету \\ + \textbf{Алгоритмы и структуры данных}} +\date{2016 год} diff --git a/algorithms-old/tex/images/04_tree_1.pdf b/algorithms-old/tex/images/04_tree_1.pdf new file mode 100644 index 0000000..d72e5ac Binary files /dev/null and b/algorithms-old/tex/images/04_tree_1.pdf differ diff --git a/algorithms-old/tex/images/04_tree_2.pdf b/algorithms-old/tex/images/04_tree_2.pdf new file mode 100644 index 0000000..4300f70 Binary files /dev/null and b/algorithms-old/tex/images/04_tree_2.pdf differ diff --git a/algorithms-old/tex/images/04_tree_3.pdf b/algorithms-old/tex/images/04_tree_3.pdf new file mode 100644 index 0000000..0f94702 Binary files /dev/null and b/algorithms-old/tex/images/04_tree_3.pdf differ diff --git a/algorithms-old/tex/images/04_tree_4.pdf b/algorithms-old/tex/images/04_tree_4.pdf new file mode 100644 index 0000000..716a329 Binary files /dev/null and b/algorithms-old/tex/images/04_tree_4.pdf differ diff --git a/algorithms-old/tex/images/04_tree_5.pdf b/algorithms-old/tex/images/04_tree_5.pdf new file mode 100644 index 0000000..e209d96 Binary files /dev/null and b/algorithms-old/tex/images/04_tree_5.pdf differ diff --git a/algorithms-old/tex/images/04_tree_6.pdf b/algorithms-old/tex/images/04_tree_6.pdf new file mode 100644 index 0000000..9fe310b Binary files /dev/null and b/algorithms-old/tex/images/04_tree_6.pdf differ diff --git a/algorithms-old/tex/images/09_intervals.jpg b/algorithms-old/tex/images/09_intervals.jpg new file mode 100644 index 0000000..84d6b1a Binary files /dev/null and b/algorithms-old/tex/images/09_intervals.jpg differ diff --git a/algorithms-old/tex/images/09_intervals.png b/algorithms-old/tex/images/09_intervals.png new file mode 100644 index 0000000..707bdb8 Binary files /dev/null and b/algorithms-old/tex/images/09_intervals.png differ diff --git a/algorithms-old/tex/images/19_rb_tree.pdf b/algorithms-old/tex/images/19_rb_tree.pdf new file mode 100644 index 0000000..a0b6c6a Binary files /dev/null and b/algorithms-old/tex/images/19_rb_tree.pdf differ diff --git a/algorithms-old/tex/images/19_rb_tree.svg b/algorithms-old/tex/images/19_rb_tree.svg new file mode 100644 index 0000000..ae64219 --- /dev/null +++ b/algorithms-old/tex/images/19_rb_tree.svg @@ -0,0 +1,812 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + 13 + + + + 8 + + + + 17 + + + + 1 + + + + 25 + + + + 6 + + + + 22 + + + + NIL + + + + NIL + + + + + + + + + + + + 27 + + + + NIL + + + + NIL + + + + + + + + + + + + + + + + 15 + + + + NIL + + + + NIL + + + + + + + + + + + + 11 + + + + NIL + + + + NIL + + + + NIL + + + + + + + + + + + + NIL + + + + NIL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/algorithms-old/tex/images/tree.ggb b/algorithms-old/tex/images/tree.ggb new file mode 100644 index 0000000..0aa7b5c Binary files /dev/null and b/algorithms-old/tex/images/tree.ggb differ diff --git a/calculus-3/calculus-3_01_[05.09.2016].pdf b/calculus-3/calculus-3_01_[05.09.2016].pdf new file mode 100644 index 0000000..48fa5bf Binary files /dev/null and b/calculus-3/calculus-3_01_[05.09.2016].pdf differ diff --git a/calculus-3/calculus-3_02_[12.09.2016].pdf b/calculus-3/calculus-3_02_[12.09.2016].pdf new file mode 100644 index 0000000..bea6c5e Binary files /dev/null and b/calculus-3/calculus-3_02_[12.09.2016].pdf differ diff --git a/calculus-3/calculus-3_03_[19.09.2016].pdf b/calculus-3/calculus-3_03_[19.09.2016].pdf new file mode 100644 index 0000000..6332a4f Binary files /dev/null and b/calculus-3/calculus-3_03_[19.09.2016].pdf differ diff --git a/calculus-3/calculus-3_04_[26.09.2016].pdf b/calculus-3/calculus-3_04_[26.09.2016].pdf new file mode 100644 index 0000000..3305341 Binary files /dev/null and b/calculus-3/calculus-3_04_[26.09.2016].pdf differ diff --git a/calculus-3/calculus-3_05_[03.10.2016].pdf b/calculus-3/calculus-3_05_[03.10.2016].pdf new file mode 100644 index 0000000..651866b Binary files /dev/null and b/calculus-3/calculus-3_05_[03.10.2016].pdf differ diff --git a/calculus-3/calculus-3_06_[10.10.2016].pdf b/calculus-3/calculus-3_06_[10.10.2016].pdf new file mode 100644 index 0000000..57784a9 Binary files /dev/null and b/calculus-3/calculus-3_06_[10.10.2016].pdf differ diff --git a/calculus-3/calculus-3_07_[17.10.2016] .pdf b/calculus-3/calculus-3_07_[17.10.2016] .pdf new file mode 100644 index 0000000..376adec Binary files /dev/null and b/calculus-3/calculus-3_07_[17.10.2016] .pdf differ diff --git a/calculus-3/calculus-3_08_[31.10.2016].pdf b/calculus-3/calculus-3_08_[31.10.2016].pdf new file mode 100644 index 0000000..9f2b007 Binary files /dev/null and b/calculus-3/calculus-3_08_[31.10.2016].pdf differ diff --git a/calculus-3/calculus-3_09_[07.11.2016].pdf b/calculus-3/calculus-3_09_[07.11.2016].pdf new file mode 100644 index 0000000..856780c Binary files /dev/null and b/calculus-3/calculus-3_09_[07.11.2016].pdf differ diff --git a/calculus-3/calculus-3_10_[14.11.2016].pdf b/calculus-3/calculus-3_10_[14.11.2016].pdf new file mode 100644 index 0000000..47d16b3 Binary files /dev/null and b/calculus-3/calculus-3_10_[14.11.2016].pdf differ diff --git a/calculus-3/calculus-3_all_lectures.pdf b/calculus-3/calculus-3_all_lectures.pdf new file mode 100644 index 0000000..23cdd8c Binary files /dev/null and b/calculus-3/calculus-3_all_lectures.pdf differ diff --git a/calculus-3/tex/calculus-3_01_[05.09.2016].tex b/calculus-3/tex/calculus-3_01_[05.09.2016].tex new file mode 100644 index 0000000..3eaf6b0 --- /dev/null +++ b/calculus-3/tex/calculus-3_01_[05.09.2016].tex @@ -0,0 +1,135 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} + +\begin{document} +\pagestyle{fancy} +\section{Лекция 01 от 05.09.2016 \\ Основные определения и свойства рядов. Критерий Коши. Необходимое условие сходимости} +\begin{Def} + Пусть \(\{a_n\}^{\infty}_{n=1}\) --- последовательность действительных чисел. \emph{Числовым рядом} называется выражение вида \(\sum\limits_{n=1}^{\infty}a_n\), записываемое также как \(a_1 + a_2 + \ldots + a_n + \ldots \). + +\end{Def} +\begin{Def} + \(N\)-й частичной суммой называется сумма первых \(N\) членов. + $$S_n = a_1~+~\ldots~+~a_N$$ +\end{Def} + +\begin{Def} + Последовательность \(\{S_n\}^{\infty}_{n=1}\) + называется последовательностью частичных сумм ряда $\series{1}{\infty}a_n$. +\end{Def} + +Говорят, что ряд \textit{сходится} (к числу $A$), если (к числу $A$) сходится последовательность его частичных сумм. Аналогично, ряд \textit{расходится к $+\infty$ (к $-\infty$)}, если к $+\infty$ (к $-\infty$) расходится последовательность его частичных сумм. Если последовательность частичных сумм расходится, ряд называют \textit{расходящимся}. + +\begin{Def} +Суммой ряда называется предел $\lim\limits_{n \to \infty} S_n$. +\end{Def} +Вспоминая, что $a_n = S_{n} - S_{n-1}$, можно заключить, что особой разницы между самим рядом и последовательностью его частичных сумм нет --- из одного можно получить другое и наоборот. Следовательно, вместо ряда можно рассматривать его частичные суммы. + +\begin{Examples}[Предел Коши для последовательностей] + Последовательность $\{S_n\}_{n=1}^\infty$ сходится тогда и только тогда, когда она удовлетворяет условию Коши, т.е. + $$ + \forall \varepsilon>0\; \exists N\in \N\colon \forall m,k > N \Rightarrow |S_m - S_k|<\varepsilon. + $$ +\end{Examples} +Таким образом, мы нахаляву получили первую теорему. +\begin{Theorem}[Критерий Коши сходимости ряда] + Для сходимости ряда $\sum\limits_{n=1}^{\infty} a_n$ необходимо и достаточно, чтобы + $$ + \forall \varepsilon>0\; \exists N\in \N\colon \forall k>N,\; \forall p\in \N \Rightarrow |a_{k+1} + a_{k+2} \ldots + a_{k+p}| < \varepsilon. + $$ + +\end{Theorem} +Отсюда сразу же очевидно следует утверждение. +\begin{Statement}[Необходимое условие сходимости ряда] + Если ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится, то $\lim\limits_{n\to \infty} a_n~=~0$. +\end{Statement} +\begin{proof} + Ряд сходится, значит, + $$ + \forall \varepsilon>0\; \exists N \in \N\colon \forall k>N, p = 1 \Rightarrow |a_{k+1}| < \varepsilon. + $$ + А это и есть определение предела, равного нулю. + \par Другой способ доказательства: вспомним, что $a_n = S_n - S_{n-1}$ и что $S_n$, как и $S_{n-1}$, стремятся к одному пределу при стремлении $n$ к бесконечности. Итого, получаем, что + $$ + \lim\limits_{n \to \infty} a_n = \lim\limits_{n\to \infty} S_n - \lim\limits_{n\to \infty} S_n = 0. + $$ +\end{proof} + +Теперь сформулируем и докажем несколько тривиальных свойств. +\begin{Properties} + Пусть $\sum\limits_{n = 1}^{\infty}a_n = A$, $\sum\limits_{n = 1}^{\infty}b_n = B$. Тогда $\sum\limits_{n = 1}^{\infty}\left(a_n + b_n\right) = A + B$. +\end{Properties} +\begin{proof} + Это напрямую следует из свойств предела последовательности и того, что $S^{a+b}_n = S_n^a + S_n^b$. +\end{proof} +\begin{Properties} + Пусть $\sum\limits_{n = 1}^{\infty} a_n~=~A$. Тогда $\sum\limits_{n = 1}^{\infty} \alpha a_n = \alpha A$ для любого действительного $\alpha$. +\end{Properties} +\begin{proof} + Аналогично вытекает из свойств предела последовательности. +\end{proof} + +Введём еще одно определение. + +\begin{Def} + Пусть дан ряд $\sum\limits_{n=1}^{\infty}a_n$. Обозначим некоторые его подсуммы, + $$ + \underbrace{a_1 + \ldots + a_{n_1}}_{b_1} + \underbrace{a_{n_1+1} + \ldots + a_{n_2}}_{b_2} + \underbrace{a_{n_2 + 1} \ldots + a_{n_3}}_{b_3} + a_{n_3 + 1} + \ldots, + $$ + где $\{n_j\}_{j=1}^{\infty}$ --- возрастающая последовательность натуральных чисел. В таком случае говорят, что ряд $\sum\limits_{k =1}^{\infty} b_k$ получен из исходного \emph{расстановкой скобок}. +\end{Def} +\begin{Statement} + Если ряд сходится или расходится к $\pm \infty$, то после любой расстановки скобок он сходится, неформально говоря, туда же. +\end{Statement} + +\begin{proof} + Достаточно заметить, что частичные суммы ряда, полученного расстановкой скобок, образуют подпоследовательость в последовательности частичных сумм исходного ряда: + $$ + S^b_1 = S^a_{n_1}, \quad S^b_{2} = S^a_{n_2}, \quad S^b_3 = S^a_{n_3}, \quad \ldots + $$ + Осталось только вспомнить, что любая подпоследовательность сходящейся последовательности сходится туда же, куда и сама последовательность. +\end{proof} +\emph{Обратное неверно!!!} Пример такого ряда: +$$ +1 - 1 + 1 - \ldots = \sum\limits_{n = 0}^{\infty} \left(-1\right)^n. +$$ +При расстановке скобок $(1 - 1) + (1 - 1) + \ldots = 0$ получается сходящийся ряд, в то время как исходный ряд расходится, хотя бы потому что не выполняется необходимое условие о стремлении членов ряда к нулю. + +Однако сходимость элементов к нулю не единственное препятствие. Например, можно <<распилить>> единицы из предыдущего примера и получить следующий ряд: +$$ +1 - 1 + \frac{1}{2} + \frac{1}{2} - \frac{1}{2} - \frac{1}{2} + \frac{1}{3} + \frac{1}{3} + \frac{1}{3} - \frac{1}{3} - \frac{1}{3} - \frac{1}{3} + \frac{1}{4} + \ldots +$$ +Его элементы стремятся к нулю, но он все еще расходится. Однако расставив скобки, можно получить сходящийся ряд: +$$ +(1 - 1) + \left(\frac{1}{2} + \frac{1}{2} - \frac{1}{2} - \frac{1}{2}\right) +\left( \frac{1}{3} + \frac{1}{3} + \frac{1}{3} - \frac{1}{3} - \frac{1}{3} - \frac{1}{3}\right) + \ldots = 0. +$$ +\begin{Statement} + Если $a_n \to 0$ и длины скобок ограничены (т.е. существует такое $C~\in~\R$, что $n_{k+1} - n_{k} < C$ при всех $k$), то из сходимости ряда, полученного расстановкой таких скобок, следует сходимость исходного ряда. +\end{Statement} +\begin{proof} +Доказать предлагается самостоятельно. Указание: ограничить через $\frac{\eps}{C}$. +\end{proof} +\begin{Statement} + Изменение, удаление или добавление конечного числа членов ряда не влияет на его сходимость. +\end{Statement} + +Поговорим теперь об абсолютной сходимости. +\begin{Def} + Если сходится ряд $\sum\limits_{n = 1}^{\infty}|a_n|$, то говорят, что ряд $\sum\limits_{n = 1}^{\infty}a_n$ сходится абсолютно. +\end{Def} +\begin{Def} + Если ряд сходится, но не сходится абсолютно, то говорят, что ряд сходится условно. +\end{Def} +\begin{Statement} + Если ряд $\sum\limits_{n=1}^{\infty}a_n$ сходится абслютно, то он сходится. +\end{Statement} +\begin{proof} + Сразу следует из критерия Коши. Возьмём произвольное $\varepsilon>0$. Так как ряд из модулей сходится, то $$\exists N\in \N\colon \forall k>N,\; \forall p\in \N \Rightarrow \sum\limits_{k+1}^{k+p}|a_k| < \varepsilon$$ + Тогда $$\left| \sum\limits_{n=k+1}^{k+p}a_n\right| \leqslant \sum\limits_{n=k+1}^{k+p}|a_n| < \varepsilon$$ +\end{proof} + +\begin{Def} + Для ряда $\sum \limits_{n=1}^{\infty}a_n$ $N$-м хвостом называется сумма $r_N = \sum \limits_{n=N+1}^{\infty}a_n$. +\end{Def} +Для сходящегося ряда очевидно, что каждый его хвост сходится. +\end{document} \ No newline at end of file diff --git a/calculus-3/tex/calculus-3_02_[12.09.2016].tex b/calculus-3/tex/calculus-3_02_[12.09.2016].tex new file mode 100644 index 0000000..67c9875 --- /dev/null +++ b/calculus-3/tex/calculus-3_02_[12.09.2016].tex @@ -0,0 +1,218 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} + +\begin{document} +\pagestyle{fancy} +\section{Лекция 02 от 12.09.2016 \\Признаки сравнения и другие признаки сходимости знакопостоянных рядов} + +\subsection{О знакопостоянных рядах} + +В рамках этой лекции будем рассматривать только ряды с неотрицательными членами! + +Очевидно, что последовательность частичных сумм $\{S_n \}$ в таких рядах не убывает. Следовательно, существует $\lim\limits_{n\rightarrow \infty}S_n \in [0, +\infty]$. + +\begin{Statement}[Критерий сходимости рядов с неотрицательными членами] + Ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится тогда и только тогда, когда последовательность его частичных сумм ограничена сверху. +\end{Statement} + +Это позволяет сократить запись для таких рядов. Однако для рядов общего вида такая запись смысла не имеет, поскольку ряды могут не иметь даже бесконечного придела частичных сумм, то есть не иметь предела вообще (как например любимый нами ряд $1 - 1 + 1 - 1 + \ldots$) +\begin{Designation} Ряд сходится: $\sum\limits_{n=1}^{\infty} a_n < \infty$; ряд расходится: $\sum\limits_{n=1}^{\infty} a_n = \infty$. +\end{Designation} + +\subsection{Признаки сравнения} + +\begin{Test}[Первый признак сравнения] + Пусть $\sum\limits_{n=1}^{\infty} a_n$ и $\sum\limits_{n=1}^{\infty} b_n$ --- два ряда с неотрицательными членами, и начиная с какого-то $N\in \N$ для всех $n > N$ имеет место неравенство $a_n \le b_n$. Тогда: + \begin{enumerate} + \item если $\sum\limits_{n=1}^{\infty} b_n < \infty$, то $\sum\limits_{n=1}^{\infty} a_n < \infty$; + \item если $\sum\limits_{n=1}^{\infty} a_n = \infty$, то $\sum\limits_{n=1}^{\infty} b_n = \infty$. + \end{enumerate} +\end{Test} + +\begin{proof} Достаточно доказать для случая, когда $a_n \le b_n$ уже при $n \ge 1$ (убрав, <<начало>> ряда, сходимость мы не поменяем). +\begin{enumerate} +\item Рассмотрим частичные суммы рядов: $S^a_n = a_1 + a_2 + \ldots + a_n,\ S^b_n = b_1 + b_2 + \ldots + b_n.$ +Так как ряд $\sum\limits_{n=1}^{\infty} b_n$ сходится, то $\lim\limits_{n\to\infty} S^b_n = C$ для некоторого $C$. Последовательность $S^b_n$ очевидно неубывающая, так что $S^b_n \le C$ для любого $n$. А значит, для всех $n$ верно, что +$$ 0 \le S^a_n = a_1 + a_2 + \ldots + a_n \le b_1 + b_2 + \ldots + b_n \le C.$$ +Это показывает, что $S^a_n$ монотонная ограниченная последовательность, а значит она обязательно имеет конечный предел. Так что ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится. + +\item Прямо следует из первого пункта. +\end{enumerate} +\end{proof} + +\begin{Test}[Второй признак сравнения] + Пусть $\sum\limits_{n=1}^{\infty} a_n$ и $\sum\limits_{n=1}^{\infty} b_n$ --- два ряда с положительными членами и $a_n \asymp b_n$ (то есть $\exists c, C> 0 $ такие, что начиная с некоторого индекса $N$, \\$c < \cfrac{a_n}{b_n}N$ верно $\cfrac{a_{n+1}}{a_n} \leqslant \cfrac{b_{n+1}}{b_n}$ Тогда: \begin{enumerate} + \item если $\sum\limits_{n=1}^{\infty} b_n < \infty$, то $\sum\limits_{n=1}^{\infty} a_n < \infty$; + \item если $\sum\limits_{n=1}^{\infty} a_n = \infty$, то $\sum\limits_{n=1}^{\infty} b_n = \infty$. + \end{enumerate} +\end{Test} +\begin{proof} + По сути говоря, данный признак сравнивает скорости роста, а в остальном это практически то же самое, что первый признак сравнения. Что ж, сведем его к нему. + + Достаточно считать, что $\frac{a_{n+1}}{a_n} \leqslant \frac{b_{n+1}}{b_n}$ уже при $n \ge 1$. Для любого натурального $k$ мы можем представить элементы $a_k$ и $b_k$ следующим образом: + \begin{align*} + a_k &= a_1 \frac{a_2}{a_1}\frac{a_3}{a_2} \ldots \frac{a_k}{a_{k-1}} \\ + b_k &= b_1 \frac{b_2}{b_1}\frac{b_3}{b_2} \ldots \frac{b_k}{b_{k-1}} + \end{align*} + Согласно условию, $\frac{a_{i}}{a_{i-1}} \le \frac{b_i}{b_{i-1}}$ при $1 \le i \le k$. Таким образом, мы почти получили, что $a_k \le \dfrac{a_1}{b_1}b_k$. Но мы не знаем, как соотносятся элементы $a_1$ и $b_1$. Что ж, избавимся от них, введя новый ряд: + $$ + \sum\limits_{n=1}^{\infty} b'_n = \sum\limits_{n=1}^{\infty}\frac{a_1}{b_1}b_n. + $$ + Для него будет выполняться неравенство $a_k \le b'_k$. Тем самым, мы свели задачу к первому признаку сравнения. +\end{proof} + +\begin{Comment} + Отметим, что для любого $q \in [0,1)$ ряд $\sum\limits_{n=1}^{\infty} q^n$ сходится. Действительно, $$\lim\limits_{N\rightarrow\infty} \sum\limits_{n=1}^{N} q^n=\lim\limits_{N\rightarrow\infty}\frac{q(q^N-1)}{q-1} = \frac{q}{1-q}.$$ +\end{Comment} + +\subsection{Прочие признаки} + +\begin{Test}[Признак д'Аламбера]\ + \begin{enumerate} + \item Пусть $\sum\limits_{n=1}^{\infty} a_n$ --- ряд с положительными членами, и существует такое $q \in [0, 1)$, что начиная с некоторого номера $N$ верно, что $\frac{a_{n+1}}{a_n} \leqslant q$. Тогда ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится. + \item Пусть $\sum\limits_{n=1}^{\infty} a_n$ --- ряд с положительными членами, и начиная с некоторого номера $N$ верно, что $\frac{a_{n+1}}{a_n} \geqslant~1$. Тогда $a_n \nrightarrow 0$ и ряд $\sum\limits_{n=1}^{\infty} a_n$ расходится. + \end{enumerate} +\end{Test} + +\begin{proof} +\ +\begin{enumerate} + \item Следует из третьего признака сравнения при $b_n = q^n$. + \item <<Тут и доказвать нечего>> \textcopyright\ лектор (\textit{прим. ред.:} утверждение очевидно из самой формулировки). +\end{enumerate} +\end{proof} + +Однако чаще используется признак д'Аламбера в предельной форме. + +\begin{Consequence}[Предельный признак д'Аламбера] +Пусть для ряда $\sum\limits_{n=1}^{\infty} a_n$ с положительными членами существует предел $\lim\limits_{n\rightarrow\infty} \frac{a_{n+1}}{a_n} = \alpha \in [0; +\infty]$. Тогда справедливы следующие утверждения: +\begin{enumerate} + \item если $\alpha < 1$, то ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится; + \item если $\alpha > 1$, то ряд $\sum\limits_{n=1}^{\infty} a_n$ расходится; + \item если $\alpha = 1$, то ряд $\sum\limits_{n=1}^{\infty} a_n$ может как сходиться, так и расходиться. +\end{enumerate} +\end{Consequence} + +\begin{proof} + \ + \begin{enumerate} + \item Если $\lim\limits_{n\rightarrow\infty} \frac{a_{n+1}}{a_n} = \alpha$ и $\alpha < 1$, то $\exists N \in \mathbb{N}$ такой, что при любом $n > N$ $\alpha-\eps<\frac{a_{n+1}}{a_n} < \alpha+\eps$, причём $\alpha+\eps <1$. А значит, ряд сходится по признаку д'Аламбера. + \item Аналогично. + \item Например, ряд $\sum\limits_{n=1}^{\infty} 1$ --- расходится, а ряд $\sum\limits_{n=1}^{\infty} \frac{1}{n^2}$ --- сходится. + + \end{enumerate} +\end{proof} +Заметим, что признак д'Аламбера довольно грубый, то есть существует некоторая <<мертвая зона>> рядов, про сходимость которых он ничего не может сказать (например, про ряд $\sum\limits_{n=1}^{\infty} \frac{1}{n}$). + +\begin{Consequence} + Если для ряда $\sum\limits_{n=1}^{\infty} a_n$ с положительными членами верно, что $\varlimsup\limits_{n\rarr \infty} \frac{a_{n+1}}{a_{n}} < 1$, то ряд сходится, а если $\varliminf\limits_{n \rarr \infty} \frac{a_{n+1}}{a_{n}} > 1$, то расходится. +\end{Consequence} + +\begin{Test}[Радикальный признак Коши]\ +Рассмотрим ряд $\sum\limits_{n=1}^{\infty} a_n$ с неотрицательными членами. + \begin{enumerate} + \item Пусть существует такое $q \in [0, 1)$, что начиная с некоторого номера $N$ верно, что $\sqrt[n]{{{a_n}}} \leqslant q$. Тогда ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится. + \item Пусть существует бесконечное множество индексов $n$, для которых верно, что $\sqrt[n]{{{a_n}}} \geqslant~1$. Тогда $a_n \nrightarrow 0$ и ряд $\sum\limits_{n=1}^{\infty} a_n $ расходится. + \end{enumerate} +\end{Test} + +\begin{proof} + \ + \begin{enumerate} + \item Следует из первого признака сравнения при $b_n = q^n$. + \item Очевидно по определению расходимости ряда. + \end{enumerate} +\end{proof} + +Аналогично признаку д'Аламбера, можно сформулировать данный признак в предельной форме. +\begin{Consequence}[Радикальный признак Коши в предельной форме] + Пусть для ряда $\sum\limits_{n=1}^{\infty} a_n$ с неотрицательными членами существует предел $\lim\limits_{n\rightarrow\infty} \sqrt[n]{a_n} = A$, где $A \in [0, \infty]$. Тогда: + \begin{enumerate} + \item если $A < 1$, то ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится; + \item если $A > 1$, то ряд $\sum\limits_{n=1}^{\infty} a_n$ расходится. + \end{enumerate} + Или, более общо: + \begin{enumerate} + \item если $\varlimsup\limits_{n\rarr \infty} \sqrt[n]{a_n} < 1$, то ряд $\sum\limits_{n=1}^{\infty} a_n$ сходится; + \item если $\varlimsup\limits_{n\rarr \infty} \sqrt[n]{a_n} > 1$, то $a_n \nrightarrow 0$ и ряд $\sum\limits_{n=1}^{\infty} a_n$ расходится. + \end{enumerate} +\end{Consequence} +Заметим, что так как тут используется только верхний предел, этот признак несколько удобней, чем предельный признак д'Аламбера. + +\begin{Examples} +Рассмотрим следующий ряд: +$$ +\sum\limits_{n=1}^{\infty} 2^{-n+(-1)^n} = \frac{1}{4} + \frac{1}{2} + \frac{1}{16} + \frac{1}{8} + \ldots +$$ +Как можно заметить, у соседних элементов ряда наблюдается то рост в 2 раза, то убывание в 8 раз, и предельный признак д'Аламбера ничего не может сказать про сходимость. Однако воспользуемся радикальным признаком Коши: +$$ +\lim_{n\rarr \infty} \sqrt[n]{2^{-n + (-1)^n}} = \lim_{n\rarr \infty} 2^{-1 + \left(\frac{-1}{n}\right)^n} = \frac{1}{2}. +$$ +Как мы видим, ряд сходится. +\end{Examples} + +\begin{Task} +Есть ли обратный пример, когда радикальный признак Коши не помогает, в отличие от признака д'Аламбера? +\end{Task} + +Для разных рядов может быть удобнее использовать разные признаки сходимости. Например, ряд $\sum\limits_{n=1}^{\infty} \dfrac{1}{n!}$ однозначно лучше исследовать с помощью признака д'Аламбера. + +Мы всё ещё не научились выяснять сходимость рядов вида $\sum\limits_{n = 1}^{\infty}\cfrac{1}{n^\alpha}$. Итуиция подсказвает, что он сходится при $\alpha > 1$, как и интеграл. Сейчас мы в этом убедимся. В этом нам поможет следующая теорема. + +\begin{Test}[Интегральный признак Коши--Маклорена] + +Пусть $f(x) \geqslant 0$ --- невозрастающая на $[1, \infty)$ функция. Тогда $\sum\limits_{n=1}^{\infty}f(n)$ и $\int\limits_1^{\infty}f(x)dx$ сходятся или расходятся одновременно. Причем в случае сходимости +$$ +\int\limits_{N+1}^{\infty}f(x)dx \leqslant r_N = f(N+1) + f(N+2) + \ldots \leqslant \int\limits_N^\infty f(x)dx. +$$ +\end{Test} + +\begin{proof} +Для удобства введем две вспомогательные функции: $f_S(x) = f(x-1)$ и $S(x) = f(\lfloor x \rfloor)$. + + + + +Тогда мы получаем, что $f(1) + f(2) + \ldots + f(N) = \int\limits_1^N S(x)dx$. Значит, ряд $\sum\limits_{n=1}^\infty f(n)$ сходится тогда и только тогда, когда сходится интеграл $\int\limits_1^\infty S(x)dx$. В свою очередь, несложно заметить, что сходимость этого интеграла влечет за собой сходимость интеграла $\int\limits^\infty_1 f(x)dx$, так как при наших ограничениях $S(x) \geqslant f(x)$. С другой стороны, сходимость интеграла $\int\limits_1^\infty f(x)dx$ эквивалентна сходимости интеграла $\int\limits_2^\infty f_S(x)dx$, а она влечет за собой сходимость интеграла $\int\limits_1^\infty S(x)dx$, так как $S(x) \leq f_S(x)$. + +Отсюда же следует оценка для остатка. Действительно: +\begin{align*} +r_{N} = \int\limits_{N+1}^\infty S(x) dx & \leqslant \int\limits_{N+1}^\infty f_S(x)dx = \int\limits_{N+1}^\infty f(x-1)dx = \int\limits_N^\infty f(x)dx, \\ +r_{N} = \int\limits_{N+1}^\infty S(x)dx & \geqslant \int\limits_{N+1}^{\infty}f(x)dx. +\end{align*} +\end{proof} + +\begin{Examples} +Допустим, мы хотим узнать сумму ряда $\sum\limits_{n=1}^{\infty}\frac{1}{n^3}$. Но поскольку ряд бесконечен, мы хотим обойтись первыми 100 членами, а чтобы оценить погрешность, посчитаем соответствующий интеграл. +$$ +\int\limits_{n}^\infty \frac{1}{x^3} = -\frac{1}{2x^2} \Big|^\infty_{n} = \frac{1}{2n^2} +$$ +Итого, +$$ +\sum\limits_{n=1}^{\infty}\frac{1}{n^3} = \sum\limits_{n=1}^{100}\frac{1}{n^3} + \theta, \quad \text{где } \theta \in \left[\frac{1}{2\cdot101^2}, \frac{1}{2\cdot 100^2}\right]. +$$ + +\end{Examples} + +Подобным способом можно оценить асимптотику частичных сумм расходящегося ряда, например: +$$ +\sum_{n=1}^{N} \frac{1}{\sqrt{n}} \sim 2\sqrt{N} +$$ + +Выводится это аналогично, просто теперь мы функциями $f(x)$, $f_S(x)$ и $S(x)$ оцениваем не остаток, а частичную сумму. + +\end{document} diff --git a/calculus-3/tex/calculus-3_03_[19.09.2016].tex b/calculus-3/tex/calculus-3_03_[19.09.2016].tex new file mode 100644 index 0000000..79937fb --- /dev/null +++ b/calculus-3/tex/calculus-3_03_[19.09.2016].tex @@ -0,0 +1,193 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} + +\begin{document} +\pagestyle{fancy} +\section{Лекция 03 от 19.09.2016 \\Признаки сходимости знакопостоянных и знакопеременных рядов} + +\subsection{Граница между сходящимися и расходящимися рядами} + +На прошлой лекции был сформулирован и доказан следующий признак: +\begin{Test}[Интегральный признак Коши--Маклорена] + +Пусть $f(x) \geqslant 0$ --- невозрастающая на $[1, \infty]$ функция. Тогда $\sum\limits_{n=1}^{\infty}f(n)$ и $\int\limits_1^{\infty}f(x)dx$ сходятся или расходятся одновременно. +\end{Test} + +С помощью него мы можем исследовать на сходимость семейство рядов +$$ +\series{1}{\infty} \frac{1}{n^\alpha}. +$$ +Как и для соответствующего интеграла, ряд сходится тогда и только тогда, когда $\alpha > 1$. + +Может сложиться впечатление, что ряд $\series{1}{\infty} \frac{1}{n}$ является своего рода граничным между сходящимися и расходящимися рядами. Но исследуем теперь другой ряд (он нам также понадобится в дальнейшем): +$$ +\sum\limits_{n=2}^{\infty} \frac{1}{n\ln n}. +$$ +Он сходится тогда и только тогда, когда сходится соответствующий интеграл. +$$ +\int\limits_{2}^{\infty} \frac{1}{x\ln x}dx = \int\limits_{2}^{\infty} \frac{1}{\ln x} d\ln x = \ln\ln x \Big|_2^{\infty} = \infty +$$ +Данный ряд меньше, чем гармоничный ряд, однако расходится. Причем, как несложно убедиться, семейство рядов $\sum\limits_{n=2}^{\infty}\frac{1}{n\ln^\beta n}$ при $\beta > 1$ уже сходится. Но при этом <<граница>> между сходящимися и расходящимися рядами не проходит по ряду $\sum\limits_{n=2}^{\infty} \frac{1}{n\ln n}$ --- взять, например, ряд $\sum\limits_{n=2}^{\infty}\frac{1}{n\ln n \ln\ln n}$, который тоже расходится. И так далее, <<границу>> можно <<уточнять>> бесконечно. Так что точной <<границы>> не существует. + +\subsection{Скорость роста частичных сумм расходящихся рядов} + +В прошлой лекции мы с помощью интегрального признака Коши--Маклорена научились оценивать остаток сходящихся сумм. Теперь научимся оценивать скорость роста частичных сумм расходящихся рядов. + +Возьмем, например, гармонический ряд. Утверждается, что его частичные суммы оцениваются следующим образом: +$$ +\series{1}{N} \frac{1}{n} = \ln N + C + o(1), +$$ +где $C$ эта некая константа. Но как доказать, что это действительно корректная оценка? + +Фактически мы утверждаем сходимость последовательности $\{S_n\}$, где +$$ +S_n = \frac{1}{1} + \frac{1}{2} + \ldots + \frac{1}{n} - \ln n. +$$ + +Это можно воспринимать как последовательность частичных сумм и, соответственно, перейти к соответствующему ряду: +$$ +a_n = S_n - S_{n-1} = \frac{1}{n} - \ln n + \ln(n-1) = \frac{1}{n} - \ln\frac{n}{n-1} = \frac{1}{n} + \ln\left(1 - \frac{1}{n}\right) = \frac{1}{n} + \left( - \frac{1}{n} + O\left(\frac{1}{n^2}\right) \right). +$$ +На последнем шаге мы воспользовались разложением в ряд Тейлора. + +Мы получили, что $a_n = O\left(\frac{1}{n^2}\right)$, следовательно, данный ряд сходится. И так как мы построили сходящийся ряд, у которого последовательность $\{ S_n\}$ будет последовательностью частичных сумм, данная последовательность также сходится. Что и доказывает нашу оценку. + +Точно также можно доказать оценки расходимости частичных сумм следующих рядов: +\begin{gather*} +\series{2}{N} \frac{1}{n\ln n} = \ln \ln N + C + o(1) \\ +\series{1}{N} \frac{1}{\sqrt[3]{n}} = \frac{2N^{2/3}}{2} + C + o(1) +\end{gather*} + +\subsection{Снова признаки сходимости знакопостоянных рядов} +Вернемся теперь к признакам сходимости. +\begin{Test}[Признак Кумера] +Пусть $a_n,\ b_n > 0$ и $v_n := \dfrac{a_n}{a_{n+1}}b_n - b_{n+1}$. Тогда: +\begin{enumerate} +\item если существует такое $l > 0$, что начиная с некоторого места $v_n \geq l$, то ряд $\series{1}{\infty}a_n$ сходится; +\item если начиная с некоторого места $v_n \leq 0$ и $\series{1}{\infty}\dfrac{1}{b_n}$ расходится, то и ряд $\series{1}{\infty}a_n$ расходится. +\end{enumerate} +\end{Test} + +\begin{proof} +Достаточно рассмотреть случай, когда наше неравенство выполняется для всех $n$. +\begin{enumerate} +\item Итого, мы имеем, что $\dfrac{a_n}{a_{n+1}}b_n - b_{n+1} \geq l$. Домножим неравенство на $a_{n+1}$, благо оно положительно: +$$ +a_n\cdot b_n - a_{n+1}\cdot b_{n+1} \geq la_{n+1} > 0 +$$ + +Воспользуемся этим, оценив частичную сумму следующего ряда, при $N \in \N$: +$$ +\series{1}{N} la_n \leq la_1 + (a_1b_1 - a_2b_2) + (a_2b_2 - a_3b_3) + \ldots + (a_{N-1}b_{N-1} - a_Nb_N) += la_1 + a_1b_1 - a_nb_N \leq la_1 + a_1b_1 +$$ +Итого, мы получили, что частичные суммы ряда $\series{1}{\infty} la_n$ ограничены сверху. Значит, этот ряд сходится и, следовательно, сходится ряд $\series{1}{\infty}a_n$. + +\item Имеем, что $\dfrac{a_n}{a_{n+1}}b_n - b_{n+1} \leq 0$. Перенесем $b_{n+1}$ в правую часть и разделим все на $b_n$: +$$ +\frac{a_n}{a_{n+1}} \leq \frac{b_{n+1}}{b_n} +$$ +Теперь перевернем дробь: +$$ +\frac{a_{n+1}}{a_n} \geq \frac{b_n}{b_{n+1}} = \frac{1/ b_{n+1}}{1 / b_{n}}. +$$ +По условию ряд $\series{1}{\infty}\frac{1}{b_n}$ расходится, а значит признак сравнения дает расходимость ряда $\series{1}{\infty}a_n$. +\end{enumerate} +\end{proof} + +Но признак Куммера особо не используется, он скорее нужен, чтобы вывести другие признаки. +\begin{Test}[Признак Раабе] +Пусть $a_n > 0$ и существует предел +$$ +\lim\limits_{n \rarr \infty} n \left( \dfrac{a_n}{a_{n+1}} - 1 \right) = A \in [-\infty, +\infty]. +$$ +Тогда: +\begin{enumerate} +\item если $A > 1$, то ряд $\series{1}{\infty}a_n$ сходится; +\item если $A < 1$, то ряд $\series{1}{\infty}a_n$ расходится. +\end{enumerate} +\end{Test} + +\begin{proof} +Признак Куммера при $b_n = n$. +\end{proof} + +Покажем, зачем нужен признак Раабе. Пусть $a_n = \frac{1}{n^\alpha}$. Тогда: +$$ +n\left( \frac{(n+1)^\alpha}{n^{\alpha}} - 1 \right) = n\left( \left( 1 + \frac{1}{n} \right)^\alpha - 1\right) = n\left( 1 + \frac{\alpha}{n} + o\left(\frac{1}{n}\right) - 1\right) \longrightarrow \alpha. +$$ +Как мы видим, признак Раабе позволяет <<ловить>> ряды с полиномиальной скоростью роста. И это хорошо, так как раньше мы этого не умели. + +Но у этого признака все еще есть <<мертвая зона>>, когда $A = 1$. Поэтому рассмотрим еще один признак, который не имеет <<мертвой зоны>>, но, к сожалению, не всегда применим. + +\begin{Test}[Признак Гаусса] +Пусть для некоторого $\eps > 0$ и $\alpha,\ \beta \in \R$ верно, что +$$ +\dfrac{a_n}{a_{n+1}} = \alpha + \frac{\beta}{n} + O\left( \frac{1}{n^{1+\eps}} \right). +$$ +Тогда: +\begin{enumerate} +\item если $\alpha > 1$, то ряд $\series{1}{\infty}a_n$ сходится; +\item если $\alpha < 1$, то ряд $\series{1}{\infty}a_n$ расходится; +\item если $\alpha=1$ и $\beta>1$, то ряд $\series{1}{\infty}a_n$ сходится; +\item если $\alpha=1$ и $\beta\leq1$, то ряд $\series{1}{\infty}a_n$ расходится. +\end{enumerate} +\end{Test} + +\begin{proof} +Все эти утверждения на самом деле следуют из уже рассмотренных нами признаков. Так что просто назовем их. +\begin{enumerate} +\item Признак д'Аламбера. +\item Признак д'Аламбера. +\item Признак Раабе. +\item Если $\beta<1$ --- признак Раабе. Если $\beta = 1$ --- признак Куммера при $b_n = n\ln n$. +\end{enumerate} +Рассмотрим подробнее последний случай, когда $\alpha=\beta=1$. Воспользуемся признаком Куммера при $b_n = n\ln n$ и равенством из условия: +\begin{gather*} +v_n = \frac{a_n}{a_{n+1}}b_n - b_{n+1} = \left( 1 + \frac{1}{n} + O\left( \frac{1}{n^{1+\eps}}\right) \right)n\ln n - (n+1)\ln(n+1) = \\ += (n+1)\left( \ln n - \ln(n+1) \right) + O\left( \frac{\ln n}{n^\eps} \right) = \\ += -(n+1)\ln\left( 1 + \frac{1}{n} \right) + O\left( \frac{\ln n}{n^\eps} \right) = \\ += -(n+1)\left( \frac{1}{n} + o\left(\frac{1}{n}\right) \right) + O\left( \frac{\ln n}{n^\eps} \right) \longrightarrow -1 +\end{gather*} +Итого, по признаку Куммера ряд действительно расходится. +\end{proof} + +\begin{Comment} +Вместо $O\left(\dfrac{1}{n^{1+\eps}} \right)$ можно писать более сильное $O\left( +\dfrac{1}{n\ln n} \right)$. Но первое чаще появляется в интересных примерах, поэтому исторически сложилось использовать его. +\end{Comment} + +\subsection{Признаки сходимости знакопеременных рядов} +\begin{Test}[Признак Лейбница] +Пусть последовательность $\{b_n\}$ строго монотонно убывает у нулю. Тогда ряд $\series{0}{\infty}(-1)^nb_n$ сходится, причем его остаток $r_N$ имеет знак $(-1)^{N+1}$ и по модулю меньше $b_{N+1}$. +\end{Test} +\begin{proof} +Докажем с помощью критерия Коши. Зафиксируем произвольное $\eps > 0$ и найдем такое $N \in \N$, что для всех $n > N$ верно, что $b_n < \eps$. Теперь для любого $m > N$ и $p \in \N$ рассмотрим следующую величину: +$$ +\left| \series{m+1}{m+p} (-1)^n b_n \right|. +$$ +Можно вынести $(-1)^{m+1}$ из суммы --- на модуль это не повлияет, но зато нам будет удобнее считать, что первое слагаемое идет с положительным знаком. + +Сгруппируем слагаемые следующим образом: +$$ +\left| \series{m+1}{m+p} (-1)^n b_n \right| = \big|b_{m+1} + (- b_{m+2} + b_{m+3}) + (- b_{m+4} + b_{m+5}) + \ldots\big|. +$$ + +В силу строго монотонного убывания последовательности получаем, что каждая скобка меньше нуля. Последнее слагаемое, $b_{m+p}$ могло остаться без пары, но тогда оно идет с отрицательным знаком. Итого, получаем, что мы с $b_{m+1}$ складываем только отрицательные величины, следовательно: +$$ +\left| \series{m+1}{m+p} (-1)^n b_n \right| \leq |b_{m+1}| < \eps. +$$ + +Итого, по критерию Коши ряд сходится. Отсюда же следует оценка на остаток: +$$ +|r_N| = \left| \series{N+1}{\infty}(-1)^n b_n \right| \leq b_{N+1}. +$$ +Аналогичным образом оценим остаток знака. + +Снова вынесем за скобки знак $(-1)^{N+1}$ (но на этот раз его не убъет модуль), и сгруппируем слагаемые: +$$ +r_N = \series{N+1}{\infty} (-1)^n b_n = (-1)^{N+1}\big((b_{N+1} - b_{N+2}) + (b_{N+3} - b_{N+4}) + \ldots\big).$$ +Каждая группа слагаемых больше нуля в силу строго монотонного убывания последовательности. Следовательно, вся скобка имеет положительный знак, а значит, $r_N$ имеет знак $(-1)^{N+1}$. Что нам и требовалось. +\end{proof} + +\end{document} \ No newline at end of file diff --git a/calculus-3/tex/calculus-3_04_[26.09.2016].tex b/calculus-3/tex/calculus-3_04_[26.09.2016].tex new file mode 100644 index 0000000..c722b87 --- /dev/null +++ b/calculus-3/tex/calculus-3_04_[26.09.2016].tex @@ -0,0 +1,87 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} + +\begin{document} +\pagestyle{fancy} +\section{Лекция 04 от 26.09.2016 \\ Признаки сходимости знакопеременных рядов и перестановки ряда} +\subsection{Снова признаки сходимости знакопеременных рядов} + +В прошлый раз мы с вами сформулировали и доказали признак Лейбница. Будем пользоваться в этот раз слабой его формулировкой: +\begin{Test} + Пусть последовательность $\{b_n\}_{n = 1}^{\infty}$ монотонно убывает к нулю. Тогда ряд $\sum\limits_{n = 1}^{\infty}(-1)^n b_n$ сходится. +\end{Test} +\begin{Comment} + Для этого утверждения достаточно нестрогой монотонности. +\end{Comment} +Оказывается, этот признак является частным случаем более общего признака, который мы сейчас сформулируем и докажем. +\begin{Test}[Признак Дирихле] + Пусть частичные суммы ряда $\sum\limits_{n=1}^{\infty}a_n$ ограничены (то есть $\exists C>0$ такое, что начиная с некоторого номера $N$, $|A_n| = |a_1 + a_2 + \ldots + a_n| < C$), а $\{b_n\}_{n=1}^{\infty}$ --- монотонно стремящаяся к нулю последовательность. Тогда ряд $\sum\limits_{n=1}^{\infty}a_nb_n$ сходится (отметим, что ряд $\sum\limits_{n=1}^{\infty}a_n$ может влёгкую расходиться). +\end{Test} +Подставляя сюда вместо $a_n$ последовательность $a_n = (-1)^n$ (частичные суммы равны $1, 0, 1, 0, \ldots$ и ограничены), получаем формулировку первого утверждения. +\begin{Comment} + В признаке Лейбница дополнительно к утверждению и сходимости ряда присутствует оценка остатка, которой в признаке Дирихле нет. +\end{Comment} +\begin{proof} + Для доказательства мы применим трюк, подобный интегрированию по частям, именуемый в дискретном случае \textit{преобразованием Абеля} (<<название умнее, чем само преобразование>> \textcopyright\ лектор). + + Рассмотрим случай $b_n \searrow 0$ (случай $b_n \nearrow 0$ --- аналогично). + + Зафиксируем произвольное $\varepsilon>0$. Найдём такое $N \in \N$, что + $$ + \forall n\geqslant N\colon\; b_n < \cfrac{\varepsilon}{4C} + $$ + Возьмём $m>N$, произвольное $p\in \N$ и оценим сумму $\left|\sum\limits_{n=m + 1}^{m+p}a_n b_n\right|$. + \begin{gather*} + \sum\limits_{n=m+1}^{m+p} a_n b_n = \sum\limits_{n=m+1}^{m+p}\left(A_n - A_{n-1}\right)b_n = \sum\limits_{n=m+1}^{m+p} A_nb_n - \sum\limits_{n=m+1}^{m+p} A_{n-1} b_n = \sum\limits_{n=m+1}^{m+p}A_nb_n - \sum\limits_{n=m}^{m+p - 1}A_nb_{n+1} = \\ + = A_{m+p} b_{m+p} - A_mb_{m+1} + \sum\limits_{n=m+1}^{m+p - 1}A_n\left(b_n-b_{n+1}\right). + \end{gather*} + Следовательно, используя монотонное убывание $b_n$: + \begin{gather*} + \left|\sum\limits_{n=m+1}^{m+p} a_n b_n\right| \leqslant |A_{m+p}b_{m+p}| + |A_mb_{m+1}| + \sum\limits_{n=m+1}^{m+p-1} |A_n||b_n - b_{n+1}| <\\ < C\cfrac{\varepsilon}{4C} + C \cfrac{\varepsilon}{4C} + C \sum\limits_{n=m+1}^{m+p-1}( b_n - b_{n+1}) =\\= \cfrac{\varepsilon}{2} + C(b_{m+1} -b_{m+2} + b_{m + 2} - b_{m+3} + \ldots -b_{m+p}) = \cfrac{\varepsilon}{2} + C(b_{m+1} - b_{m+p}) < \cfrac{\varepsilon}{2} + C\cfrac{\varepsilon}{4c} < \varepsilon. + \end{gather*} + Итого, по критерию Коши ряд $\series{1}{\infty}a_nb_n$ сходится. +\end{proof} + \begin{Examples} + Попробуем поисследовать на сходимость какой-нибудь ряд, хороший пример --- ряд $\sum\limits_{n=1}^{\infty}\cfrac{\cos n\alpha}{n}$, при $\alpha \neq \pi k,\; k\in \Z$ или такой же с синусом. Пусть $a_n = \cos n\alpha $, $b_n = \cfrac{1}{n}$. Исследуем ряд $\sum\limits_{n=1}^{\infty} a_n$ на ограниченность частичных сумм: + \begin{gather*} + |A_n| = \cfrac{|\cos \alpha + \cos 2\alpha + \ldots + \cos n\alpha|\cdot| \sin(\alpha/2)|}{|\sin(\alpha/2)|} =\\ + =\left| \cfrac{-\sin\frac{\alpha}{2} + \sin\frac{3\alpha}{2}-\sin\frac{3\alpha}{2} + \sin\frac{5\alpha}{2} - \ldots + \sin\left(n + \frac{1}{2}\right)\alpha}{2|\sin\frac{\alpha}{2}|}\right| =\\ + = \cfrac{\left|-\sin \frac{\alpha}{2} + \sin\left(n + \frac{1}{2}\right)\alpha\right|}{2\left|\sin\frac{\alpha}{2}\right|} \leqslant \cfrac{2}{2\left|\sin\frac{\alpha}{2}\right|} = \cfrac{1}{\left|\sin\frac{\alpha}{2}\right|} + \end{gather*} + Тогда тут применим признак Дирихле и ряд сходится. + Теперь покажем его условную сходимость, то есть тот факт, что ряд из модулей расходится. + \begin{gather} + \cfrac{|\cos n\alpha|}{n} \geq \cfrac{(\cos n\alpha)^2}{n} = \cfrac{\cos 2n\alpha + 1}{2n} = + \cfrac{1}{2}\left(\underbrace{\cfrac{\cos 2n\alpha}{n}}_{\text{ряд сход.}} + \underbrace{\cfrac{1}{n}}_{\text{ряд расх.}}\right) + \end{gather} + \end{Examples} + Сформулируем и докажем ещё один признак. + \begin{Test}[Признак Абеля] + Пусть $\sum\limits_{n=1}^{\infty}a_n$ сходится, а $\{b_n\}_{n=1}^{\infty}$ --- монотонная ограниченная последовательность. Тогда ряд $\sum\limits_{n=1}^{\infty}a_nb_n$ сходится. + \end{Test} + \begin{proof} + Последовательность частичных сумм ряда $\sum\limits_{n=1}^{\infty}a_n$ сходится, а значит ограничена. Последовательность $\{b_n\}_{n=1}^{\infty}$ монотонна и ограничена, а значит имеет предел $B = \lim\limits_{n\to \infty} b_n$. То есть последовательность $b_n$ представима в виде $B + \beta_n$, где $\beta_n$ --- монотонно стремящаяся к нулю последовательность. + $$ + \sum\limits_{n=1}^{\infty}a_nb_n = \sum_{n=1}^{\infty} a_n(B+\beta_n) = \sum\limits_{n=1}^{\infty} a_nB + \sum_{n=1}^{\infty} a_n\beta_n + $$ + Первое слагаемое сходится по условию (умножение на константу ничего не меняет), а второе по признаку Дирихле. + \end{proof} + + \subsection{Перестановки ряда} + \begin{Def} + Пусть $\sigma$ --- биекция (перестановка) $\N \to \N$. Тогда говорят, что ряд $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ является перестановкой ряда $\sum\limits_{n=1}^{\infty}a_n$. + \end{Def} + Сформулируем две теоремы, которые докажем в следующий раз. + \begin{Theorem}[Коши] + Пусть ряд $\sum\limits_{n=1}^{\infty}a_n$ абсолютно сходится, и его сумма равна $A$. Тогда любая его перестановка также сходится абсолютно, и ее сумма равна $A$. + \end{Theorem} + \begin{Theorem}[Римана] + Пусть ряд $\sum\limits_{n=1}^{\infty}a_n$ сходится условно. Тогда: + \begin{enumerate} + \item для любого $A \in \mathbb{R}$ найдётся такая перестановка $\sigma$, что $\sum\limits_{n=1}^{\infty}a_{\sigma(n)} = A $; + \item существует такая перестановка $\sigma$, что ряд $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ расходится к $+\infty$; + \item существует такая перестановка $\sigma$, что ряд $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ расходится к $-\infty$; + \item существует такая перестановка $\sigma$, что для ряда $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ последовательность частичных сумм предела не имеет. + \end{enumerate} + \end{Theorem} +\end{document} diff --git a/calculus-3/tex/calculus-3_05_[03.10.2016].tex b/calculus-3/tex/calculus-3_05_[03.10.2016].tex new file mode 100644 index 0000000..756c7f0 --- /dev/null +++ b/calculus-3/tex/calculus-3_05_[03.10.2016].tex @@ -0,0 +1,143 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} +\begin{document} +\pagestyle{fancy} +\section{Лекция 05 от 03.10.2016 \\ Перестановки рядов и произведения рядов} +\subsection{Основные теоремы о перестановках рядов} +Напомним основное для этой лекции определение. + \begin{Def} + Пусть $\sigma$ --- биекция (перестановка) $\N \to \N$. Тогда говорят, что ряд $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ является перестановкой ряда $\sum\limits_{n=1}^{\infty}a_n$. + \end{Def} + + \begin{Theorem}[Коши] + Пусть ряд $\sum\limits_{n=1}^{\infty}a_n$ абсолютно сходится, и его сумма равна $A$. Тогда любая его перестановка $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ также сходится абсолютно, и её сумма равна $A$. + \end{Theorem} + \begin{proof} [Доказательство абсолютной сходимости:] + Докажем, что $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ абсолютно сходится. + Обозначим $A_+ := \sum\limits_{n=1}^{\infty}|a_n|$. + Возьмём произвольное $N\in \mathbb{N}$ и покажем, что $\sum\limits_{n=1}^{N}|a_{\sigma(n)}| \leq A_+$ (тогда возрастающая последовательность частичных сумм $\sum\limits_{n=1}^{\infty}|a_{\sigma(n)}|$ ограничена и ряд сходится). + + Определим $M := \max \left\{\sigma(1), \sigma(2), \dots, \sigma(N)\right\}$. Тогда очевидно, что $\sum\limits_{n=1}^{N}|a_{\sigma(n)}| \leq \sum\limits_{n=1}^{M}|a_{n}|$, так как правая сумма содержит в себе и все слагаемые левой суммы. Но из этого неизбежно следует и $\sum\limits_{n=1}^{N}|a_{\sigma(n)}| \leq A_+$, потому что любая частичная сумма $\sum\limits_{n=1}^{M}|a_{n}|$ ряда с неотрицательными слагаемыми не больше всей его суммы. Соответственно, частичные суммы ряда $\sum\limits_{n=1}^{\infty}|a_{\sigma(n)}|$ ограничены, откуда следует абсолютная сходимость ряда $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$. + \end{proof} + \begin{proof} [Доказательство сходимости к тому же значению:] + Докажем, что $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ сходится к $A$. Пусть есть некоторое $\eps>0$. Возьмём такое $N\in \mathbb{N}$, что $\sum\limits_{n=N}^{\infty}|a_{n}| < \frac{\eps}{2}$. (Тогда $\left| \sum\limits_{n=1}^{N}a_{n} - A\right| = \left| \sum\limits_{N+1}^{\infty}a_{n}\right| \leq \sum\limits_{N+1}^{\infty}|a_{n}| < \frac{\eps}{2}$.) + + Обозначим $M := \max\{ \sigma^{-1}(1), \sigma^{-1}(2)\dots \sigma^{-1}(N)\}$. + + Тогда для любого $\tilde{M}>M$: + \begin{multline} + \left| \sum\limits_{m=1}^{\tilde{M}}a_{\sigma(m)} - A \right|\leq \left| \sum\limits_{m=1}^{\tilde{M}}a_{\sigma(m)} - \sum\limits_{n=1}^{N}a_{n} \right| + \left| \sum\limits_{n=1}^{N}a_{n} - A \right| < \\ < \left| \sum\limits_{\substack{m=1\dots \tilde{M}\\ \sigma(m)>N} }^{\tilde{M}}a_{\sigma(m)}\right| + \frac{\eps}{2} \leq \sum\limits_{\substack {m=1\dots \tilde{M} \\ \sigma(m)>N} }^{\tilde{M}}|a_{\sigma(m)}| + \frac{\eps}{2} \leq \\ \leq \sum\limits_{n=N+1}^{\max\{ \sigma(1)\dots \sigma(N)\}}|a_n| + \frac{\eps}{2} \leq \sum\limits_{n=N+1}^{\infty}a_{n} + \frac{\eps}{2} < \eps. + \end{multline} + \end{proof} + + + Теперь пусть $\sum\limits_{n=1}^{\infty}a_n$ сходится условно. В нём бесконечно много положительных слагаемых и бесконечно много отрицательных, так как иначе он сходился бы абсолютно. Через $\{p_n\}$ обозначим последовательность всех неотрицательных слагаемых, а через $\{q_n\}$, соответственно, отрицательных. + + Раз $\sum\limits_{n=1}^{\infty}a_n$ сходится, то $\{a_n\}$ --- сходящаяся к нулю последовательность, а значит и $\{p_n\}$ и $\{q_n\}$ тоже сходятся к нулю. + При этом несложно понять, что $\sum\limits_{n=1}^{\infty}p_n$ и $\sum\limits_{n=1}^{\infty}q_n$ --- расходятся, так как если бы оба этих ряда сходились, то $\sum\limits_{n=1}^{\infty}a_n$ сходился бы абсолютно, а если бы один из них сходился, а другой --- расходился, то $\sum\limits_{n=1}^{\infty}a_n$ бы расходился. + + \begin{Theorem}[Римана] + Пусть ряд $\sum\limits_{n=1}^{\infty}a_n$ сходится условно. Тогда: + \begin{enumerate} + \item для любого $A \in \mathbb{R}$ найдётся такая перестановка $\sigma$, что $\sum\limits_{n=1}^{\infty}a_{\sigma(n)} = A $; + \item существует такая перестановка $\sigma$, что ряд $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ расходится к $+\infty$; + \item существует такая перестановка $\sigma$, что ряд $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ расходится к $-\infty$; + \item существует такая перестановка $\sigma$, что для ряда $\sum\limits_{n=1}^{\infty}a_{\sigma(n)}$ последовательность частичных сумм не имеет ни конечного ни бесконечного предела. + \end{enumerate} + \end{Theorem} + \begin{proof} \ + \begin{enumerate} + \item Возьмём произвольное $A \in \mathbb{R}$. + + Найдём наименьшее $k_1 \in \mathbb{N}$ такое что $p_1+p_2+\dots+p_{k_1} > A$. + + Найдём наименьшее $\tilde{k}_1 \in \mathbb{N}$ такое что $p_1+p_2+\dots+p_{k_1} + q_1+q_2 +\dots +q_{\tilde{k}_1} < A$. + + Найдём наименьшее $k_2 \in \mathbb{N}$ такое что $p_1+p_2+\dots+p_{k_1} + q_1+q_2 +\dots +q_{\tilde{k}_1}+ p_{k_1+1}+\dots+p_{k_2} > A$. + + И так далее. Существование требуемых $k_j$ и $\tilde{k}_j$ следует из расходимости рядов $\sum\limits_{n=1}^{\infty}p_n$ и $\sum\limits_{n=1}^{\infty}q_n$. А в силу того, что $\{p_n\}$ и $\{q_n\}$ сходятся к нулю, построение выше и даст перестановку ряда, сумма которого равна $A$. + + В остальных пунктах всё вполне аналогично. + \item + Найдём наименьшее $k_1 \in \mathbb{N}$ такое что $p_1+p_2+\dots+p_{k_1} > 1$. + + Найдём наименьшее $k_2 \in \mathbb{N}$ такое что $p_1+p_2+\dots+p_{k_1} + q_1+ p_{k_1+1}+\dots+p_{k_2} > 2$ + + Найдём наименьшее $k_3 \in \mathbb{N}$ такое что $p_1+p_2+\dots+p_{k_1} + q_1+ p_{k_1+1}+\dots+p_{k_2} + q_2 + + p_{k_2+1}+\dots+p_{k_3} > 3$ + + И так далее. Построение выше и даст перестановку ряда, расходящуюся к к $+\infty$. + \item Аналогично предыдущему. + \item Аналогично предыдущим, например, доводя сумму последовательно до 1, -1, 2, -2, 3, -3 и так далее. + \end{enumerate} + \end{proof} + +\subsection{Произведение числовых рядов} + Произведение пары конечных сумм записывается вполне естественным и понятным образом: + \[ + \sum\limits_{n=1}^{N}a_n \cdot \sum\limits_{m=1}^{M}b_m = (a_1 + \dots + a_n) (b_1 + \dots + b_m)=\sum\limits_{n,m=1}^{N,\ M}a_nb_m. + \] + C бесконечными суммами всё менее понятно. Казалось бы, + \[ + \sum\limits_{n=1}^{\infty}a_n \cdot \sum\limits_{m=1}^{\infty}b_m = \sum\limits_{n, m=1}^{\infty}a_nb_m, + \] однако объект в правой части равенства мы не определяли. + + \medskip + + \begin{wrapfigure}{l}{0.3\linewidth} + \begin{tabular}[t]{c|ccccc} + $\vdots$ & $\vdots$ & $\vdots$ & $\vdots$ &$\vdots$& $\iddots$ \\ + $b_4$ & $16$ & $15$ & $14$ & $13$ &$\dots$\\ + $b_3$ & 9 & 8 & 7 & 12&$\dots$ \\ + $b_2$ & $4$ & $3$ & 6 & 11&$\dots$ \\ + $b_1$ & $1$ & $2$ & 5 & 10& $\dots $\\ + \hline + & $a_1$ & $a_2$ & $a_3$ & $a_4$ &$\dots$ + \end{tabular} + \caption{Нумерация по квадратам} + \vspace{-50pt} + \end{wrapfigure} + Но по крайней мере множество пар индексов $(n,\ m)$ счетно, а значит и множество слагаемых в сумме счётно, то есть его можно занумеровать и таким образом превратить произведение рядов в обычный ряд. Вопрос лишь в том, как именно это сделать. + + \begin{Theorem}[Коши о произведении абсолютно сходящихся рядов] + Пусть $\sum\limits_{n=1}^{\infty}a_n =A $ и$ \sum\limits_{m=1}^{\infty}b_m = B$, причём оба ряда абсолютно сходятся. Тогда ряд из произведений $a_nb_m$, занумерованных в любом порядке, сходится абсолютно и его сумма равна $A\cdot B$. + \end{Theorem} + + \begin{proof} По недавно доказанной теореме Коши о перестановках абсолютно сходящегося ряда нам достаточно доказать, что хотя бы при какой-то одной нумерации ряд из произведений абсолютно сходится к $A\cdot B$. + + Будем использовать довольно очевидный способ нумерации, вполне достаточно описываемый картинкой слева, обычно называемый <<нумерация по квадратам>>. Обозначим $A_+ := \sum\limits_{n=1}^{\infty}|a_n|$, $B_+ := \sum\limits_{m=1}^{\infty}|b_m|$, и $\sum\limits_{k=1}^{\infty}c_k$ --- ряд из произведений, занумерованный выбранным нами способом. Тогда последовательность частичных сумм ряда из модулей $c_k$ ограничена \\ + \[ + \sum\limits_{k=1}^{K}|c_k| \leq \sum\limits_{k=1}^{K^2}|c_k| = \left(\sum\limits_{n=1}^{K}|a_n|\right)\left(\sum\limits_{m=1}^{K}|b_m|\right) \leq A_+\cdot B_+, + \] + то есть ряд $\sum\limits_{k=1}^{\infty}c_k$ сходится абсолютно. + Сумму этого ряда посчитать теперь совсем несложно: + \[\sum\limits_{k=1}^{\infty}c_k = \lim\limits_{K\rarr \infty} \sum\limits_{k=1}^{K}c_k = \lim\limits_{K\rarr \infty} \sum\limits_{k=1}^{K^2}c_k = \lim\limits_{K\rarr \infty} \left(\sum\limits_{n=1}^{K}a_n\right)\left(\sum\limits_{m=1}^{K}b_m\right)=A\cdot B + \] + \end{proof} + + \begin{wrapfigure}{r}{0.3\linewidth} + \begin{tabular}[t]{c|ccccc} + $\vdots$ &15& $\iddots$& & & \\ + $b_4$ & 10 & 14&$\iddots$ && \\ + $b_3$ & 6 & 9 & 13&$\iddots$ & \\ + $b_2$ & 3 & 5& 8 & 12&$\iddots$ \\ + $b_1$ & $1$ & $2$ &4&7&11\\ + \hline + & $a_1$ & $a_2$ & $a_3$ & $a_4$ &$\dots$ \\ + \end{tabular} + \caption{Нумерация по треугольникам} + \vspace{-60pt} + \end{wrapfigure} + Если хоть один из рядов не сходится абсолютно, такое утверждение уже неверно. Так что для всех остальных случаев важно договориться о нумерации. Один из часто встречающихся удобных способов нумерации, который в дальнейшем будет подразумеваться по умолчанию --- это так называемая <<нумерация по треугольникам>> или <<произведение Коши>>. + \begin{Def} + Для рядов $\sum\limits_{n=1}^{\infty}a_n$ и$ \sum\limits_{m=1}^{\infty}b_m$ их произведением называется ряд $\sum\limits_{k=1}^{\infty}c_k$, где $c_k =\sum\limits_{j=1}^{k}a_jb_{k+1-j}$. + \end{Def} + + Для примера, $c_1 = a_1b_1,\ c_2 = a_1b_2 + a_2b_1,\ c_3 = a_1b_3+a_2b_2+a_3b_1$. + + \begin{Theorem}[Мертенса] + Пусть ряд $\sum\limits_{n=1}^{\infty}a_n = A $ и$ \sum\limits_{m=1}^{\infty}b_m = B$, причём хотя бы один из рядов сходится абсолютно. Тогда $\sum\limits_{k=1}^{\infty}\sum\limits_{j=1}^{k}a_jb_{k+1-j} = AB.$ + \end{Theorem} + + Доказательство этой теоремы опустим. +\end{document} diff --git a/calculus-3/tex/calculus-3_06_[10.10.2016].tex b/calculus-3/tex/calculus-3_06_[10.10.2016].tex new file mode 100644 index 0000000..49b94b0 --- /dev/null +++ b/calculus-3/tex/calculus-3_06_[10.10.2016].tex @@ -0,0 +1,145 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} + +\begin{document} +\pagestyle{fancy} +\section{Лекция 06 от 10.10.2016 \\ Бесконечные произведения} +\subsection{Основные понятия и определения} +Итак, бесконечные произведения. Попытаемся применить к ним тот же подход, что и к рядам. + +\begin{Def} +Пусть $\{a_k\}_{k=1}^\infty$ --- последовательность ненулевых действительных чисел. Бесконечным произведением называется выражение $a_1 a_2 \ldots a_n \ldots$, записываемое также как $\prod\limits_{n=1}^{\infty}a_n$. Частичным произведением называется величина $P_N = a_1 \ldots a_N$. +\end{Def} + +\begin{Def} +Бесконечное произведение $\infprod a_n$ сходится к числу $A \neq 0$, если последовательность частичных произведений $P_N$ сходится к $A$ при $N \to \infty$. +\end{Def} + +\begin{Def} +Бесконечное произведение сходится, если существует такое $A \neq 0$, к которому это произведение сходится. +\end{Def} + +\begin{Statement} +Добавление/удаление/изменение конечного числа множителей не влияет на сходимость/расходимость бесконечного произведения. +\end{Statement} + +Здесь важно понимать, что это возможно только потому, что мы запретили последовательности содержать нулевые элементы. + +\begin{Statement}[Необходимое условие сходимости] +Если $\infprod a_n$ сходится, то $a_n \to 1$. +\end{Statement} + +\begin{proof} +Пусть $\infprod a_n = A$. Тогда $a_n = \dfrac{P_n}{P_{n-1}} \to \dfrac{A}{A} = 1$. +\end{proof} + +Здесь становится видно, почему $A=0$ --- это плохо. Именно поэтому мы запретили сходимость к нулю, когда давали соответствующие определения. + +Раз сходиться к нулю нельзя, то определим это несколько иначе. +\begin{Def} +Бесконечное произведение $\infprod a_n$ расходится к нулю, если $P_N \to 0$ при $N \to~\infty$. + +Бесконечное произведение $\infprod a_n$ расходится к бесконечности, если $P_N \to +\infty$ при $N \to \infty$. +\end{Def} + +\subsection{Связь с числовыми рядами, исследование сходимости} + +Конечно, можно было бы потратить несколько лекций на то, чтобы заново доказать все те признаки, которые мы уже разобрали для рядов. Но гораздо легче просто свести задачу к предыдущей. + +При изучении сходимости бесконечных произведений достаточно ограничиться случаем, когда $a_n \to 1$. Тогда можно считать, что начиная с некоторого места все члены последовательности строго положительны. А так как удаление конечного числа начальных членов на факт сходимости или расходимости не влияет, достаточно изучить бесконечные произведения только с положительными членами. + +\begin{Statement} +Бесконечное произведение $\infprod a_n$ сходится тогда и только тогда, когда сходится ряд $\sum\limits_{n=1}^{\infty}\ln a_n$. +\end{Statement} +\begin{proof} +Заметим, что $S_N = \ln P_N$. Тогда, если существует предел $\lim\limits_{n \to \infty} P_n = A > 0$, то существует и предел $\lim\limits_{n\to \infty} S_n = \ln A$, то есть ряд $\series{1}{\infty}\ln a_n$ сходится. + +И наоборот, если $\series{1}{\infty}\ln a_n = S$, то есть $S_N \to S$, то тогда $P_N = e^{S_n} \to e^S \neq 0$, то есть бесконечное произведение $\infprod a_n$ сходится. +\end{proof} + +Отсюда становится понятным, почему логично определять стремление бесконечного произведения $\infprod a_n$ к нулю как расходимость --- это соответствует случаю, когда ряд $\series{1}{\infty}\ln a_n$ расходится к $-\infty$. + +Также же получаем несколько халявных следствий. +\begin{Statement} +Пусть все $\alpha_n > 0$ или все $\alpha_n \in (-1, 0]$. Тогда бесконечное произведение $\infprod(1 + \alpha_n)$ сходится тогда и только тогда, когда сходится ряд $\series{1}{\infty}\alpha_n$. +\end{Statement} +\begin{proof} +Если $\alpha_n$ не стремится к нулю, то и $1 + \alpha_n$ не стремится к единице. Тогда и ряд, и бесконечное произведение расходятся, так как не выполняется необходимое условие сходимости. + +Теперь пусть $\alpha_n \to 0$. Тогда сходимость бесконечного произведения $\infprod (1 + \alpha_n)$ равносильна сходимости ряда $\series{1}{\infty}\ln(1 + \alpha_n)$. И так как он знакопостоянный, то по соответствующему признаку сравнения этот ряд сходится тогда и только тогда, когда сходится ряд из эквивалентных членов $\series{1}{\infty}\alpha_n$. +\end{proof} + +\begin{Statement} +Пусть $\alpha_n > -1$ и ряд $\series{1}{\infty} \alpha_n$ сходится. Тогда бесконечное произведение $\infprod (1 + \alpha_n)$ сходится тогда и только тогда, когда сходится ряд $\series{1}{\infty}\alpha_n^2$. +\end{Statement} +\begin{proof} +Так как ряд $\series{1}{\infty}\alpha_n$ сходится, то $\alpha_n \to 0$. Тогда, аналогично предыдущему доказательству, достаточно исследовать сходимость ряда $\series{1}{\infty}\ln(1 + \alpha_n)$. + +Разложим его в ряд Тейлора, получив $\series{1}{\infty}\left( \alpha_n - \dfrac{\alpha_n^2}{2} + o(\alpha_n^2) \right)$, а это уже равносильно сходимости ряда $\series{1}{\infty}\alpha_n^2(1 + o(1))$. Начиная с некоторого номера, ряд станет знакопостоянным, то есть можно применить все тот же признак сравнения. Что и приводит нас с исследованию сходимости ряда $\series{1}{\infty}\alpha_n^2$. +\end{proof} + +Фактически мы доказали два необходимых и достаточных условия сходимости. Теперь рассмотрим просто достаточное. + +\begin{Statement} +Пусть $\alpha_n > -1$. Тогда если ряд $\series{1}{\infty}|\alpha_n|$ сходится, то сходится и бесконечное произведение $\infprod (1 + \alpha_n)$. +\end{Statement} +\begin{proof} +$$ +\series{1}{\infty}|\alpha_n| \text{ сходится} \Rightarrow \series{1}{\infty}| +\ln(1 + \alpha_n)| \text{ сходится} \Rightarrow \series{1}{\infty}\ln(1 + \alpha_n) \text{ сходится} \Rightarrow \infprod (1 + \alpha_n) \text{ сходится.} +$$ +\end{proof} + +Если ввести соответствующее определение, то на бесконечные произведения можно будет распространить теорему о перестановке множителей (слагаемых) и ее влиянии на сходимость. + +\begin{Def} +Бесконечное произведение $\infprod a_n$ сходится абсолютно/условно, если абсолютно/условно сходится ряд $\series{1}{\infty}\ln a_n$. +\end{Def} + +\subsection{Применение} +Теперь, окончательно убедившись, что изучение бесконечных произведений можно свести к изучению рядов, самое время задаться вопросом --- а зачем они нужны? + +Оказывается, они могут быть удобным инструментом при доказательствах. Приведем несколько примеров. +\begin{Statement} +Пусть $a_n > 0$, $\series{1}{\infty}a_n = +\infty$ и $S_n = a_1 + \ldots a_n$. Тогда ряд $\series{1}{\infty}\dfrac{a_n}{S_n}$ расходится. +\end{Statement} +\begin{proof} +Достаточно доказать расходимость бесконечного произведения $\prod\limits_{n=2}^{\infty} \left( 1 - \dfrac{a_n}{S_n}\right)$: +\begin{gather*} +\prod\limits_{n=2}^{\infty}\left(1 - \dfrac{a_n}{S_n} \right) = \prod\limits_{n=2}^{\infty} \dfrac{S_n - a_n}{S_n} = \prod\limits_{n=2}^{\infty} \dfrac{S_{n-1}}{S_n}, \\ +P_n = \dfrac{S_1}{S_2}\cdot \dfrac{S_2}{S_3} \ldots \dfrac{S_{n-1}}{S_n} = \frac{S_1}{S_n} \to 0. +\end{gather*} +\end{proof} + +Отсюда в частности следует, что нет самого маленького расходящегося ряда. + + +Теперь докажем почти формулу Стирлинга. +\begin{Statement} +Пусть $a_n = \dfrac{n!e^n}{n^{n + 1/2}}$. Тогда существует предел $\lim\limits_{n \to \infty}a_n = A > 0$. +\end{Statement} +\begin{proof} +Представим элемент $a_n$ в следующем виде: +$$ +a_n = a_1 \cdot \frac{a_2}{a_1}\cdot\frac{a_3}{a_2} \ldots \frac{a_n}{a_{n-1}} = a_1 / \prod\limits_{k=1}^{n-1} \frac{a_k}{a_{k+1}}. +$$ + +Тогда сходимость к положительной константе последовательности $\{a_n\}$ равносильна сходимости бесконечного произведения $\infprod \dfrac{a_n}{a_{n+1}}$. + +Посчитаем, чему равен член этого произведения: +$$ +\frac{a_n}{a_{n+1}} = \frac{n!e^n (n+1)^{n+1+1/2}}{(n+1)! e^{n+1}n^{n+1/2} } = \left(1 + \frac{1}{n} \right)^{n + 1/2} / e. +$$ + +Перейдем к рассмотрению ряда из логарифмов: +\begin{gather*} +\ln \frac{a_n}{a_{n+1}} = \left( n + \frac{1}{2}\right)\ln\left( 1 + \frac{1}{n}\right) - 1 = [\text{р. Тейлора}] = \\ =\left(n + \frac{1}{2}\right)\left( \frac{1}{n} - \frac{1}{2n^2} + O\left(\frac{1}{n^3} \right) \right) - 1 = 1 - \frac{1}{2n} + \frac{1}{2n} - 1 + O\left(\frac{1}{n^2} \right) = O\left(\frac{1}{n^2} \right). +\end{gather*} + + +Получили, что такой ряд будет сходится. Следовательно, существует положительный предел $\lim\limits_{n \to \infty}a_n$. + +\end{proof} + + +\end{document} diff --git a/calculus-3/tex/calculus-3_07_[17.10.2016] .tex b/calculus-3/tex/calculus-3_07_[17.10.2016] .tex new file mode 100644 index 0000000..c1b1419 --- /dev/null +++ b/calculus-3/tex/calculus-3_07_[17.10.2016] .tex @@ -0,0 +1,173 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} +\begin{document} +\pagestyle{fancy} +\section{Лекция 07 от 17.09.2016 \\ Функциональные последовательности и ряды} + \subsection{Поточечная и равномерная сходимость} + Начиная с этой лекции, будем говорить о функциональных последовательностях и рядах. + \par Пусть $X$ --- произвольное множество точек, а $\{f(x)\}_n^\infty$ --- последовательность функций, определённых на $X$ или на его подмножествах. + \begin{Def} + Будем говорить, что $f_n(x)$ сходится поточечно к $f(x)$, если + $$ + \forall x \in X\; \forall \varepsilon>0\; \exists N\in \N\colon \; \forall n>N\; |f_n(x) - f(x)| < \varepsilon. + $$ + \end{Def} + \begin{Designation} + $f_n(x) \overset{X}{\underset{n\to\infty}{\longrightarrow}} f(x)$. + \end{Designation} + Почему такое определение не совсем удобно для нас? Сходимость в каждой точке может быть своя, произвольная, а хотелось бы, чтобы свойства функций $f_n$ и $f$ были похожи. Приведем пример, когда это не выполняется. + \begin{Examples} + Если $f_n(x) = x^n$, $X = [0;1]$, то + $$ + f_n(x) \overset{[0;1]}{\underset{n\to\infty}{\longrightarrow}} + \begin{cases*} + 0,\;x<1\\ + 1,\;x = 1 + \end{cases*}. + $$ + \end{Examples} + То есть бывает так, что все функции последовательности непрерывны на отрезке и стремятся к разрывной функции. + \par Для устранения этого недостатка введём другое определение сходимости функциональной последовательности. + \begin{Def} + Будем говорить, что последовательность функций $\{f_n(x)\}_{n=1}^\infty$ сходится к $f(x)$ равномерно на множестве $X$, если + $$ + \forall \varepsilon > 0\; \exists N\in \N\colon \; \forall n>N\; \forall x \in X\; |f_n(x) - f(x)| < \varepsilon + $$ + \end{Def} + \begin{Designation} + $f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$. + \end{Designation} + Из определений сразу очевидно следует утверждение. + \begin{Statement} + Если $f_n(x)\overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$, то $f_n(x) \overset{X}{\underset{n\to\infty}{\longrightarrow}} f(x)$. + \end{Statement} + + А что, если нам даны последовательность $f_n(x)$, функция $f(x)$ и множество $X$, то как нам понять, сходится ли $f_n(x)$ к $f(x)$? + + Существует мощный способ. Обозначим $r_n(x) =\underset{x \in X}{\sup}\;|f_n(x) - f(x)|$. + \begin{Statement} + $f_n(x)\overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x) \Leftrightarrow r_n\to 0$. + \end{Statement} + \begin{proof}\ \\ + \textbf{Необходимость}. Зафиксируем произвольное $\varepsilon > 0$, положим $\varepsilon_1 = \varepsilon/2$. Тогда + \begin{gather*} + \exists N\in \N \colon\; \forall n>N\; \forall x \in X\; |f_n(x) - f(x)| < \varepsilon_1,\\ + \Rightarrow r_n = \underset{x \in X}{\sup}\; |f_n(x) - f(x)| \leqslant \varepsilon_1 < \varepsilon. + \end{gather*} + То есть $r_n \to 0$ при $n\to \infty$. + \par \textbf{Достаточность}. + $$ + \forall \varepsilon > 0\; \exists N \in \N\colon \; \forall n>N\; r_n < \varepsilon \Rightarrow \forall x \in X\; |f_n(x) - f(x)| < \varepsilon. + $$ + \end{proof} + Часто это утверждение называют \textbf{супремум-критерием}. Для приведённого выше примера $f_n(x) = x^n$. + \begin{Statement}\ \\ + \begin{enumerate} + \item $x^n \overset{[0;1]}{\underset{n\to\infty}{\longrightarrow}} 0$. + \item $x^n \overset{[0;1]}{\underset{n\to\infty}{\not\rightrightarrows}} 0$. + \end{enumerate} + \end{Statement} + \begin{proof} + $r_n = \underset{x\in(0;1)}{\sup}\;|x^n - 1| = 1 \not\to 0$. + \end{proof} + Есть ещё одна подобного рода последовательность. + $$ + f_n(x) = \cfrac{1}{0!} + \cfrac{x}{1!} + \cfrac{x^2}{2!} + \ldots + \cfrac{x^n}{n!} + $$ + В любой точке значение $\lim\limits_{n \to \infty} f_n(x) = e^x$, то есть $f_n(x) \overset{\R}{\underset{n\to\infty}{\longrightarrow}} e^x$, но $f_n(x) \overset{\R}{\underset{n\to\infty}{\not\rightrightarrows}} e^x$. Однако, как легко понять, $f_n(x) \overset{(-C;C)}{\underset{n\to\infty}{\rightrightarrows}} e^x$ для всякого $C>0$. Эта последовательность ещё всплывёт в нашем курсе. + \begin{Statement} + Если $f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$ и $g_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} g(x)$, $\alpha \in \R$, то + \begin{enumerate} + \item $f_n(x) + g_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x) + g(x)$, + \item $\alpha f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} \alpha f(x)$. + \end{enumerate} + \end{Statement} + \begin{proof} + Докажем пункт 1, второй доказывается аналогичною. Зафиксируем произвольное $\varepsilon > 0$, положим $\varepsilon_1 = \varepsilon / 2$. Тогда + \begin{gather*} + \exists N_1 \in \N\colon \; \forall x\in X\; |f_n(x) - f(x) | < \varepsilon_1,\\ + \exists N_2 \in \N\colon \; \forall x\in X\; |g_n(x) - g(x) | < \varepsilon_1.\\ + \end{gather*} + Положим $N = \max\{N_1, N_2\}$. Тогда + $$ + |(f_n(x) + g_n(x)) - (f(x) + g(x))| \leqslant |f_n(x) - f(x)| + |g_n(x) - g(x)| < \varepsilon_1 + \varepsilon_1 = \varepsilon. + $$ + Получили требуемое. + \end{proof} + \begin{Statement} + Если $f_n(x)\overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$ и $g(x)$ ограничена на множестве $X$, то\\ $f_n(x)g(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x) g(x)$. + \end{Statement} + \begin{proof} + $\exists C>0\colon\; \forall x\in X\; |g(x)| < C$. Зафиксируем произвольное $\varepsilon > 0$, положим $\varepsilon_1 = \varepsilon/C$. Найдём такое $N\in \N$, что + $\forall n>N,\; \forall x\in X\; |f_n(x) - f(x)| < \varepsilon_1$. Тогда \\$\forall n >N\colon \forall x\in X\; |f_n(x)g(x) - f(x)g(x)| < C\varepsilon_1 = \varepsilon$. + \end{proof} + \begin{Comment} + Если $f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$, $g_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} g(x)$ и $f(x),\; g(x)$ ограничены на множестве $X$, то $f_n(x)g_n(x)\overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)g(x)$. + \end{Comment} + \begin{Comment} + Если $f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$ и $f(x)$ отделена от нуля (т.е. существует такое $\alpha>0$, что для любого элемента множества $X$ $|f(x)| \geqslant \alpha$), то $\cfrac{1}{f_n(x)} \overset{X}{\underset{n\to\infty}{\rightrightarrows}} \cfrac{1}{f(x)}$. + \end{Comment} + Доказательство этих фактов остаётся в качестве управжнения. \textbf{Указание}. Рассмотреть \\$\cfrac{1}{f_n} - \cfrac{1}{f} = (f-f_n)\cfrac{1}{f_n\cdot f}$. + + \subsection{Геометрический смысл равномерной сходимости} + Несложно понять, что если $f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$, то для всякого $\varepsilon > 0$, начиная с какого-то $N\in \N$ для всех $n>N$ все графики функций $f_n(x)$ окажется в $\varepsilon$-коридоре функции $f(x)$. + \subsection{Критерий Коши равномерной сходимости} + \begin{Theorem}[Критерий Коши равнoмерной сходимости] + Следующие условия эквивалентны: + \begin{enumerate} + \item $f_n(x)$ $\overset{X}{\underset{n\to\infty}{\rightrightarrows}} ???$ (равномерно сходится куда-то); + \item $\{f_n(x)\}_{n=1}^\infty$ удовлетворяет условию Коши равномерной сходимости на $X$: + $$ + \forall \varepsilon > 0\; \exists N\in\N\colon \; \forall n,m>N\; \forall x\in X\; |f_n(x) - f_m(x)| < \varepsilon. + $$ + \end{enumerate} + \end{Theorem} + \begin{proof} + \par \textbf{1 $\Leftarrow$ 2}. Заметим, что для всякого $x\in X$ числовая последовательность $\{f_n(x)\}_{n=1}^\infty$ является фундаментальной. Тогда $\forall x\in X\; \exists \lim\limits_{n\to \infty} f_n(x) = f(x)$. Зафиксируем произвольное $\varepsilon > 0,\; \varepsilon_1 = \varepsilon / 2$. Найдём такое $N \in \N$, что + $$ + \forall n,m>N\; \forall x\in X\; |f_n(x) - f_m(x)| < \varepsilon_1. + $$ + Зафиксировав $n$ перейдём к пределу при $m \to \infty$, получим $|f_n(x) - f(x)| \leqslant \varepsilon_1 < \varepsilon$. Получили требуемое. + \par \textbf{1 $\Rightarrow$ 2}. Пусть $f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$. + \par Зафиксируем произвольное $\varepsilon > 0$, положим $\varepsilon_1 = \varepsilon / 2$. Найдём такое $N\in \N\; \forall n>N\; \forall x\in X$ верно $ |f_n(x) - f(x)| < \varepsilon_1$. Тогда $\forall n,m > N\; \forall x \in X$ выполнено + $$ + |f_n(x) - f_m(x)| \leqslant |f_n(x) - f(x)| + |f(x) - f_m(x)| < \varepsilon_1 + \varepsilon_1 = \varepsilon. + $$ + \end{proof} + \subsection{Функциональные ряды} + Перейдём к рассмотрению функциональных рядов. Тут все определения и теоремы переносятся с обычных рядов с заменой числовых последовательностей на функциональные. + \begin{Def} + Будем говорить, что ряд $\sum\limits_{n=1}^{\infty}f_n(x)$ сходится равномерно к $S(x)$ на множестве $X$, если последовательность его частичных сумм $S_n(x) = f_1(x) + f_2(x) + \ldots + f_n(x)$ сходится равномерно к $S(x)$ на множестве $X$. + \end{Def} + Отсюда же можно сформулировать ряд утверждений, которые по сути мы уже доказали. + \begin{Statement} + Пусть $\sum\limits_{n=1}^\infty f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} S_1(x)$, + $\sum\limits_{n=1}^\infty g_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} S_2(x)$. Тогда их почленная сумма $\sum\limits_{n=1}^\infty (f_n(x) + g_n(x) ) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} S_1(x) + S_2(x)$. + \end{Statement} + \begin{Statement} + Если $\sum\limits_{n=1}^\infty f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} S(x)$, $\alpha \in \R$, то + $$ + \sum\limits_{n=1}^\infty \alpha f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} \alpha S(x). + $$ + \end{Statement} + \begin{Statement} + Если $\sum\limits_{n=1}^\infty f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} S(x)$, а $g(x)$ ограничена на $X$, то + $$ + \sum\limits_{n=1}^\infty g(x) f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} g(x)S(x). + $$ + \end{Statement} + Ну и конечно, мы не обойдёмся без критерия Коши. + \begin{Statement}[Критерий Коши равномерной сходимости функционального ряда] + Следующие утверждения эквивалентны. + \begin{enumerate} + \item $\sum\limits_{n=1}^\infty f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} ???$ (опять же, сходится куда-то). + \item Выполняется условие Коши + $$\forall \varepsilon >0\; \exists N \in \N\colon \; \forall m>N,\; \forall p \in \N,\; \forall x\in X\; \left|\sum_{n=m+1}^{m+p} f_n(x)\right| < \varepsilon. + $$ + \end{enumerate} + \end{Statement} + Отсюда же нахаляву получаем утверждение. + \begin{Statement}[Необходимое условие равномерной сходимости функционального ряда] + Если $\sum\limits_{n=1}^\infty f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}}$, то $f_n(x) \overset{X}{\underset{n\to\infty}{\rightrightarrows}} 0$. + \end{Statement} +\end{document} diff --git a/calculus-3/tex/calculus-3_08_[31.10.2016].tex b/calculus-3/tex/calculus-3_08_[31.10.2016].tex new file mode 100644 index 0000000..ece8d9a --- /dev/null +++ b/calculus-3/tex/calculus-3_08_[31.10.2016].tex @@ -0,0 +1,78 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} +\begin{document} +\pagestyle{fancy} +\section{Лекция 08 от 31.10.2016 \\ Функциональные ряды. Признаки сходимости} + + Довольно естественно желание понимать, когда ряд сходится, а когда нет. Для числовых рядов мы рассмотрели большое количество разнообразных признаков сходимости. Аналогично, изучим несколько признаков сходимости функциональных рядов. + + \begin{Test}[Признак Вейерштрасса] + + Пусть существует последовательность $a_n$ такая, что для любого $x\in X$ выполняется неравенство $|f_n(x)|0$. Из критерия Коши для числовых рядов следует, что $\exists N\in \mathbb{N}: \ \forall n>N, \ \forall p\in \mathbb{N}, \ \sum_{n+1}\limits^{n+p}a_n < \varepsilon$. + + Тогда $\forall m>N, \forall p\in \mathbb{N}, \forall x \in X:$ + \[ + \left| \sum_{m+1}\limits^{m+p}f(x)_m\right| < \sum_{m}\limits^{m+p} |f(x)_m| < \sum_{m+1}\limits^{m+p}a_m < \varepsilon. + \] + То есть по критерию Коши для функциональных рядов наш ряд сходится. + \end{proof} + + \begin{Test}[Признак Дирихле] + Для равномерной сходимости на $X$ ряда $\sum\limits_{n = 1}^\infty a_n(x) b_n(x)$ и достаточно, чтобы выполнялась пара условий: + \begin{enumerate} + \item Последовательность частичных сумм $ S_k(x)= \sum\limits_{n = 1}^k a_n(x) $ ряда $\sum\limits_{n = 1}^\infty a_n(x) $ равномерно ограничена на $X$, то есть $\exists C>0 : \forall N\in \mathbb{N} \ \forall x \in X \ \left| \sum\limits_{n = 1}^N a_n(x)\right| 0$. Положим $\varepsilon_1 := \varepsilon\frac{\varepsilon}{4C}$. Найдём такое $N\in \mathbb{N}$, что $\forall n > N, \forall x \in X: \ \left| b_n(x) \right| < \varepsilon_1.$ + Тогда $\forall m>N, \forall p \in \mathbb{N}, \ \forall x \in X:$ + \begin{multline} + \left| \sum\limits_{n = m+1}^{m+p} a_n(x) b_n(x)\right| = \left| A_{m+p}(x)b_{m+p}(x) - A_{m}(x)b_{m+1}(x)+ \sum\limits_{n = m+1}^{m+p-1} A_n(x)( b_n(x)-b_{n+1}(x)) \right| \leq\\ + \leq C\varepsilon_1+C\varepsilon_1+C\sum\limits_{n = m+1}^{m+p-1} ( b_n(x)-b_{n+1}(x))=\frac{\varepsilon}{2} + C\left|b_{n+1}(x) - b_{m+p}(x) \right| \leq \varepsilon. + \end{multline} + \end{proof} + + \begin{Test}[Признак Абеля] + Ряд $\sum_{k=1}\limits^\infty {{a_k}(x)}{{b_k}(x)}$ сходится равномерно, если выполнены следующие условия: + \begin{enumerate} + \item Последовательность функций ${a_k}(x)$ равномерно ограничена и монотонна $\forall x\in E$. + \item Ряд $\sum\limits_{k=1}^{\infty} {b_k}(x)$ равномерно сходится. + \end{enumerate} + \end{Test} + + \begin{proof} + Доказательство, естественно,очень похоже на доказательство предыдущего признака. + + + $\exists C>0, \forall n \in \mathbb{N}, \forall x\in X:\ |b_n(x)| < C.$ + + Возьмём произвольное $\varepsilon>0$. Положим $\varepsilon_1 := \varepsilon\frac{\varepsilon}{4C}$. Найдём такое $N\in \mathbb{N}$, что $\forall n > N, \forall p \in \mathbb{N}, \forall x \in X: \ \left| \sum\limits_{n = m+1}^{m+p} (a_{n}(x) \right| < \varepsilon_1.$ + + Положим для $n>N:$ $\tilde{A}_n(x)=a_{N+1}(x)+\dots+a_{n}(x)$, $\tilde{A}_N(x) = 0.$ + Очевидно, что $\forall n>n, \forall x \in X: |\tilde{A}_n(x)|<\varepsilon_1.$ + + Тогда $\forall m>N, \forall p \in \mathbb{N}, \ \forall x \in X:$ + \begin{multline} + \left| \sum\limits_{n = m+1}^{m+p} a_n(x) b_n(x)\right| = \left| (\tilde{A}_n(x)-\tilde{A}_{n-1}(x)) b_n(x)\right|=\\ = \left| \tilde{A}_{m+p}(x)b_{m+p}(x) - \tilde{A}_{m}(x)b_{m+1}(x)+ \sum\limits_{n = m+1}^{m+p-1} \tilde{A}_n(x)( b_n(x)-b_{n+1}(x)) \right| \leq\\ + \leq C\varepsilon_1+C\varepsilon_1+C\sum\limits_{n = m+1}^{m+p-1} ( b_n(x)-b_{n+1}(x))=\frac{\varepsilon}{2} + C\left|b_{n+1}(x) - b_{m+p}(x) \right| \leq \varepsilon. + \end{multline} + \end{proof} + + + Приведём пример использования. + \begin{Examples} + $\sum\limits_{n = 1}^\infty \frac{\sin nx}{n}$ сходится на $X=(\alpha, 2\pi-\alpha), \alpha>0$ по признаку Дирихле. + \end{Examples} + + \begin{flushright} + \textit{To be continued and supplemented...} + \end{flushright} +\end{document} diff --git a/calculus-3/tex/calculus-3_09_[07.11.2016].tex b/calculus-3/tex/calculus-3_09_[07.11.2016].tex new file mode 100644 index 0000000..191f9b0 --- /dev/null +++ b/calculus-3/tex/calculus-3_09_[07.11.2016].tex @@ -0,0 +1,181 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} + +\begin{document} +\newcommand{\B}{\mathcal{B}} + +\pagestyle{fancy} +\section{Лекция 09 от 07.11.2016 \\ Предел по базе} +Все пределы, которые раньше возникали в нашем курсе --- это наследники предела по базе. + +\subsection{Что это такое?} + +Пусть $X$ --- произвольное непустое множество. + +\begin{Def} +Система подмножеств $\B$ множества $X$ называется базой, если +\begin{enumerate} +\item $\varnothing \not\in \B$; +\item $\forall B_1,\ B_2 \in \B\ \exists B_3 \in \B :\ B_3 \subset B_1 \cap B_2$. +\end{enumerate} +\end{Def} + +\begin{Comment} +В классическом понимании символ $\subset$ означает строгое включение, однако в современной математике это также может означать равенство множеств, и мы будем пользоваться именно этим значением. Если хотят подчеркнуть, что множества не равны, то пишут $\varsubsetneq$. +\end{Comment} + +Пусть функция $f$ определена на $X$ или части $X$ и принимает действительные значения +(впрочем, действительность не принципиальна). +\begin{Def} +Число $A$ называют пределом функции $f$ по базе $\B$, если +\begin{itemize} +\item[0.] $\exists B \in \B: f$ определена на $B$; +\item[1.] $\forall \eps > 0\ \exists B \in \B: \forall x \in B\ |f(x) - A| < \eps$. +\end{itemize} +\end{Def} +Вообще говоря, нулевое условие можно опустить, так как оно следует из первого, но исторически сложилось, что его все-таки пишут --- на практике гораздо удобней сначала проверить, определена ли функция хоть где-то. + +\begin{Examples}\ +\begin{itemize} +\item $X = \N$, $\B = \{B_n\}_{n=1}^{\infty}$, $B_n = \{n, n+1, n+2, \ldots \}$. Тогда $B_n \cap B_m = B_{\max(n, m)}$. Такая база задает предел числовой последовательности. +\item $X = \R$, $\B = \{B_\delta\}_{\delta>0}$, $B_\delta = (-\delta, \delta)\setminus \{0\}$. Такая база задает двусторонний предел функции при $x\to 0$. Аналогично можно задать односторонние пределы. +\item Пусть зафиксирован отрезок $[a, b]$ и $f:[a, b] \to \R$. + +Пусть $X$ --- множество всех отмеченных разбиений $[a, b]$ (то есть это разбиения с зафиксированной точкой на каждом отрезке). Тогда базой Римана называется база\\ $\B = \{B_\delta\}_{\delta>0}$, где $B_\delta$ это совокупность всех отмеченных разбиений с диаметром меньше $\delta$. Соответственно, интегралом Римана называется предел по +этой базе интегральных сумм Римана, рассматриваемых как функция от отмеченных разбиений при фиксированном $f$: +$$ +\sigma(f, (\tau, \xi)) = \sum\limits_{j=1}^{n}f(\xi_j)|\Delta_j|. +$$ +\end{itemize} +\end{Examples} + +\subsection{Ключевые свойства} +Пусть $\B$ --- база $X$. + +\begin{Statement} +Если $\lim\limits_{\B} f = A_1$ и $\lim\limits_{\B} f = A_2$, то $A_1 = A_2$. +\end{Statement} +\begin{proof} +Пусть $A_1 \neq A_2$. Положим $\eps = \frac{|A_1 - A_2|}{2}$. Тогда: +\begin{align*} +& \exists B_1 \in \B: \forall x \in B_1\ |f(x) - A_1| < \eps; \\ +& \exists B_2 \in \B: \forall x \in B_2\ |f(x) - A_2| < \eps. +\end{align*} +Тогда существует $B_3 \in \B$ такой, что $B_2 \subset B_1 \cap B_2$. Для него будет верно, что +$$ +\forall x \in B_3:\ |A_1 - A_2| = |A_1 - f(x) + f(x) - A_2| \leq |A_1 - f(x)| + |A_2 - f(x)| < 2\eps = |A_1 - A_2|. +$$ +Получили противоречие. +\end{proof} + +Давно знакомое всем доказательство, но зато оно показывает, почему база определена именно так. + +\begin{Statement} +Пусть $\lim\limits_{\B} f(x) = A$, $\lim\limits_{\B}g(x) = B$ и $\alpha \in \R$. Тогда: +\begin{enumerate} +\item $\lim\limits_{\B}(f + g) = A + B$; +\item $\lim\limits_{\B}(fg) = AB$; +\item $\lim\limits_{\B}(\alpha f) = \alpha A$; +\item $\lim\limits_{\B}\dfrac{f}{g} = \dfrac{A}{B}$, если $B \neq 0$. +\end{enumerate} +\end{Statement} + +\begin{proof} +Это тоже почти школьный материал, так что докажем только один пункт. Пусть это будет последний. + +Немного преобразуем: +$$ +\frac{f}{g} - \frac{A}{B} = \frac{Bf - fg}{gB} = \frac{Bf - BA + BA - fg}{gB} = \frac{B(f - A) + A(B - g)}{gB}. +$$ +Возьмем произвольное $\eps > 0$. Положим $\eps_1 = \min\left( \dfrac{\eps B^2}{100(|A| + |B|) + 1}; \dfrac{|B|}{2} \right)$. Найдем такие $B_1,\ B_2 \in \B$, что: +\begin{gather} +\forall x \in B_1: |f(x) - A| < \eps_1;\\ +\forall x \in B_2: |g(x) - B| < \eps_1. +\end{gather} +Найдем такое $B_3 \in \B$, что $B_3 \subset B_1 \cap B_2$. Тогда для всех $x \in B_3$ верно, что: +$$ +\left| \frac{f(x)}{g(x)} - \frac{A}{B} \right| \leq \frac{|B|\eps_1 + |A|\eps_1}{B^2 / 2} = \eps_1 \frac{2(|A| + |B|)}{B^2} < \eps. +$$ +\end{proof} + +\begin{Statement} +Если существует предел $\lim\limits_{\B}f$ и функция $f$ неотрицательна хотя бы на одном элементе $B$ базы $\B$, то $\lim\limits_{\B}f \geq 0$. +\end{Statement} +\begin{proof} +Пусть $\lim\limits_{\B}f = A < 0$. Тогда для $\eps = \frac{|A|}{2}$ существует такой $\widetilde{B} \in \B$, что $\forall x \in \widetilde{B}:\ |f(x) - A| < \eps.$ + +Но существует $x \in B \cap \widetilde{B}$, и тогда для него одновременно будет верно, что $f(x) \geq 0$ и\\ $f(x) \leq \frac{A}{2} < 0$. Противоречие. +\end{proof} + +\begin{Consequence} +Пусть $f \geq g$ на некотором элементе $B \in \B$ и существуют пределы $\lim\limits_{\B}f = A$ и $\lim\limits_{\B}g = \widetilde{A}$. Тогда $A \geq \widetilde{A}$. +\end{Consequence} +\begin{proof} +$\lim\limits_{\B}(f - g) = A - \widetilde{A}$ и одновременно, $\lim\limits_{\B}(f - g) \geq 0$. +\end{proof} + +Пусть $\B$ и $\widetilde{\B}$ --- базы на $X$. +\begin{Statement} +Пусть $\lim\limits_{\B}f = A$ и для каждого элемента $B \in \B$ существует элемент $\widetilde{B} \in \widetilde{\B}$ такой, что $\widetilde{B} \subset B$. Тогда $\lim\limits_{\widetilde{\B}}f = A$. +\end{Statement} + +\begin{proof} +Зафиксируем произвольное $\eps > 0$. Найдем $B \in \B$ такое, что $\forall x \in B: |f(x) - A| < \eps$. +Теперь найдем $\widetilde{B} \in \widetilde{\B}$ такое, что $\widetilde{B} \subset B$. Тогда $\forall x \in \widetilde{B}: |f(x) - A| < \eps$. Получили определение предела $\lim\limits_{\widetilde{\B}}f = A$. +\end{proof} + +Фактически это обобщение утверждения, что любая подпоследовательность сходится туда же, куда и вся последовательность, и что если есть предел, то есть и оба односторонних предела, и они все равны. + +Ну а где есть предел, там есть и критерий Коши! + +\subsection{Критерий Коши} + +\begin{Def} +Функция $f$ удовлетворяет условию Коши по базе $\B$, если: +\begin{itemize} +\item[0.] $\exists B_0 \in \B: f$ определена на $B_0$; +\item[1.] $\forall \eps > 0: \exists B \in \B: \forall x, \widetilde{x} \in B\ |f(x) - f(\widetilde{x})| < \eps$. +\end{itemize} +\end{Def} + +\begin{Theorem}[Критерий Коши] +Следующие условия эквивалентны: +\begin{enumerate} +\item существует предел $\lim\limits_\B f$; +\item функция $f$ удовлетворяет условию Коши по базе $\B$. +\end{enumerate} +\begin{proof} +Напоминаем, что мы пока определили только конечные пределы по базе. + +$(1) \Rightarrow (2)$. Доказываем как обычно, через $\eps/2$ и прочее. + +$(2) \Rightarrow (1)$. Построим последовательность $B_1 \supset B_2 \supset B_3 \supset \ldots$ такую, что: +\begin{align} +\eps = 1, &\ \exists B_1 \in \B: \forall x, \widetilde{x} \in B_1\ |f(x) - f(\widetilde{x})| < 1;\\ +\eps = 1/2,&\ \exists \widetilde{B_2} \in \B: \forall x, \widetilde{x} \in \widetilde{B_2}\ |f(x) - f(\widetilde{x})| < 1/2,\\ +&\ \exists B_2 \subset B_1 \cap \widetilde{B_2}: \forall x, \widetilde{x} \in B_2\ |f(x) - f(\widetilde{x})| < 1/2;\\ +\eps = 1/3,&\ \exists \widetilde{B_3} \in \B: \forall x, \widetilde{x} \in \widetilde{B_3}\ |f(x) - f(\widetilde{x})| < 1/3, \\ +&\ \exists B_3 \subset B_2 \cap \widetilde{B_3}: \forall x, \widetilde{x} \in B_3\ |f(x) - f(\widetilde{x})| < 1/3;\\ +\ldots +\end{align} + +Для каждого элемента $B_n$ выберем точку $x_n \in B_n$. Заметим, что $\{ f(x_n) \}_{n=1}^\infty$ --- функциональная последовательность, то есть +\begin{align} +&\forall \eps > 0\ \exists N \in \N,\ \frac{1}{N} < \eps: \forall n, m > N \ |f(x_n) - f(x_m)| < \frac{1}{N} < \eps. +\end{align} +Это верно, так как $x_n \in B_n \subset B_N$ и аналогично для $x_m$. + +Значит, существует предел $\lim\limits_{n\to \inf}f(x_n) = A$. Покажем, что $\lim\limits_{\B}f = A$. + +Зафиксируем произвольное $\eps > 0$. Тогда +$$ +\exists N \in \N: \forall n > N\ |f(x_n) - A) < \eps. +$$ +При этом, существует такое $n>N$, что $\dfrac{1}{n} < \dfrac{\eps}{2}$. Значит, +$$ +\forall x \in B_n \in \B: |f(x) - A| \leq |f(x) - f(x_n)| + |f(x_n) - A| < \frac{1}{n} + \frac{\eps}{2} < \eps. +$$ +\end{proof} +\end{Theorem} + +\end{document} \ No newline at end of file diff --git a/calculus-3/tex/calculus-3_10_[14.11.2016].tex b/calculus-3/tex/calculus-3_10_[14.11.2016].tex new file mode 100644 index 0000000..2f8f915 --- /dev/null +++ b/calculus-3/tex/calculus-3_10_[14.11.2016].tex @@ -0,0 +1,121 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{header} + +\begin{document} +\newcommand{\B}{\mathcal{B}} +\newcommand{\D}{\mathcal{D}} + +\pagestyle{fancy} +\section{Лекция 10 от 07.11.2016 \\ Критерий Гордона} +В прошлый раз мы узнали, что такое база множества и понятие предела по базе, и теперь будем продолжать работать с этим. +\par Рассмотрим такую задачу +\begin{Problem} + Пусть $X$ и $Y$ --- непустые множества с базами $\B$ и $\D$ соответственно. Тогда Рассмотрим некоторую функцию $h\colon \;X\times Y \to \mathbb{R}$. Пусть про неё известно, что + \begin{gather*} + \forall x \in X\; \exists \lim\limits_{\D}h(x,y) = f(x) \\ + \forall y \in Y\; \exists \lim\limits_{\B} h(x,y) = g(y) + \end{gather*} + Требуется узнать, равны ли пределы $\lim\limits_{\B} f(x)$ и $\lim\limits_{\D} g(x)$. То есть верно ли, что + $$ + \lim\limits_{\B}\lim\limits_{\D} h(x,y) = \lim\limits_{\D}\lim\limits_{\B} h(x,y)? + $$ +\end{Problem} +Возможно, некоторые скажут, что эти пределы равны всегда, но это отнюдь не так. Хороший контрпример --- функция +\begin{gather*} + h(x,y) = + \begin{cases*} + \cfrac{x^2-y^2}{x^2+y^2},\; \text{Если $(x,y) \neq 0$}\\ + 0,\; \text{иначе} + \end{cases*} +\end{gather*} +Для неё легко посчитать повторные пределы в нуле и показать, что они не равны. Действительно, +\begin{gather} + \lim\limits_{y\to 0} h(x,y) = + \begin{cases*} + 1,\; \text{если $x\neq 0$}\\ + -1,\; \text{иначе} + \end{cases*} +\end{gather} +Тогда легко понять, что $\lim\limits_{x\to 0}\lim\limits_{y\to 0} h(x,y) = 1$. Аналогично показывается и что $\lim\limits_{y\to 0}\lim\limits_{x\to 0}h(x,y) = -1$. +\par Что же поможет нам идентифицировать такие ситуации? Поможет следующая теорема +\begin{Theorem}[Критерий Гордона] + Следующие утверждения эквивалентны (внимание: здесь используются обозначения, аналогичные введённым ранее): + \begin{enumerate} + \item Повторные пределы $\lim\limits_{\B}f(x)$ и $\lim\limits_{\D} g(y)$ существуют и равны. + \item $\forall \eps>0\; \exists B_\eps \in \B\colon\; \forall x\in B_\eps\; \exists D\in\D\colon \; \forall y \in D\; |h(x,y) -g(y)|<\eps$ + \end{enumerate} +\end{Theorem} +\begin{proof}[Доказательство] + [(1) $\Rightarrow$ (2)] Пусть $\lim\limits_\B f(x) = \lim\limits_\D g(y) = A$. + \par Зафиксируем произвольное $\eps > 0$, $\eps_1 = \eps/3$. + \begin{itemize} + \item $\exists B_0\in \B\colon\; \forall x\in B_0\; |f(x) - A| <\eps_1$ + \item $\exists D_0\in \D\colon\; \forall y\in D_0\; |g(y) - A| <\eps_1$ + \end{itemize} + В качестве $B_\eps$ возьмём $B_0$. Тогда + $$ + \forall x\in B_0\; \exists \widetilde{D}_x \in \D\colon \forall y \in \widetilde{D}_x\; |h(x,y) -f(x)| < \eps_1 + $$ + $$ + \exists D_x \in \widetilde{D}_x\cap D_0 + $$ + Тогда $$ + \forall y\in D_x\; |h(x,y) - g(y)| \leqslant |h(x,y) - f(x)| + |f(x) - A| + |A- g(y)| < \eps_1 + \eps_1 + \eps_1 = \eps + $$ + Получили требуемое. + \par [$(2) \Rightarrow (1)$] Докажем для начала, что пределы есть. Зафиксируем произвольное $\eps > 0$, $\eps_1 = \eps/4$. Перепишем про ещё раз второй пункт + $$ + \exists B_{\eps_1} \in \B\; \forall x\in B_{\eps_1}\; \exists D_x \in \D\colon\; \forall y \in \D_x \; |h(x,y) - g(y)| < \eps_1 + $$ + Пусть $x_1, x_2 \in B_{\eps_1}$ --- произвольные. + \begin{gather*} + \exists D_{x_1} \in \D\colon \; \forall y\in D_{x_1}\colon \; |h(x_1,y) - g(y)|<\eps_1\\ + \exists D_{x_2}\in \D\colon \; \forall y \in D_{x_2}\colon \; |h(x_2, y) - g(y)| < \eps_1\\ + \end{gather*} + По определению функции $ f(x) = \lim\limits_\D h(x, y) $: + \begin{gather*} + \exists \widetilde{D}_{x_1}\in \D\colon \; \forall y\in \widetilde{D}_{x_1}\colon \; |h(x_1,y) - f(x_1)| < \eps_1\\ + \exists \widetilde{D}_{x_2} \in \D\colon \; \forall y\in \widetilde{D}_{x_2}\colon \; |h(x_2,y) - f(x_2)| < \eps_1\\ + \end{gather*} + Возьмём произвольное $y\in D_{x_1} \cap D_{x_2} \cap \widetilde{D}_{x_1}\cap \widetilde{D}_{x_2}$. Тогда + \begin{gather} + |f(x_1) - f(x_2)| \leqslant |f(x_1) - h(x_1, y)| + |h(x_1, y) - g(y)| + |g(y) - h(x_2, y)| + |h(x_2, y) - f(x_2)|<\\ < \eps_1 + \eps_1 + \eps_1 + \eps_1 = \eps + \end{gather} + Следовательно, по критерию Коши $\exists \lim\limits_{\B} f(x) = A$. Докажем, что $\exists \lim \limits_{\D} g(y) = A$. Зафиксируем произвольное $\eps > 0$. + \par Найдём $B_0 \in \B$ такое, что $\forall x\in B_0\; |f(x) - A| < \eps/3$. Найдём такое $B_{\eps/3} \in \B$ что + $$ + \forall x\in B_{\eps/3}\; \exists D_x\in \D\colon \; \forall y\in D_x\; |h(x,y) - g(y)| < \eps/3 + $$ + Зафиксируем $x\in B_0\cap B_{\eps/3}$. Заметим, что + \begin{gather} + \exists D_x \in \D\colon \; \forall y\in D_x \; |h(x,y) - g(y)| <\eps/3\\ + \exists \widetilde{D}_x\in \D\colon \; \forall y\in \widetilde{D}_x\; |h(x,y) - f(x)| < \eps/3\\ + \ \\ + \exists D\in \D,\; D \subset D_x \cap \widetilde{D}_x\colon \; \forall y\in D\\ + |g(y) - A| \leqslant |g(y) - h(x,y)| + |h(x,y) - f(x)| + |f(x) - A| < \eps/3 + \eps/3 + \eps/3 = \eps + \end{gather} + Получили требуемое. +\end{proof} +\begin{Theorem} + Пусть $X\subset \R$. $x_0$ --- его предельная точка (конечная или бесконечная). Пусть + $$ + \forall n \in \N\; \exists \lim\limits_{X\owns x \to x_0} f_n(x) = a_n + $$ + а также $f_n(x)\overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$. Тогда существуют и равны пределы $\lim\limits_{n \to \infty}a_n$ и $\lim\limits_{X \owns x\to x_0} f(x)$ +\end{Theorem} +\begin{proof} + Так как $f_n(x)\overset{X}{\underset{n\to\infty}{\rightrightarrows}} f(x)$, то + $$ + \forall \eps >0\; \exists N\in \N\; \forall n>N\; \forall x \in X\; |f_n(x) - f(x)| < \eps + $$ + Для существования предела необходимо и достаточно, чтобы + $$ + \forall \eps > 0\; \exists N \in \N\; \forall n>N\; \exists \delta >0\; \forall x\in \delta(x_0)\cap X\; |f_n(x) - f(x)| < \eps + $$ + Применяя критерий Гордона, получаем требуемое +\end{proof} +\begin{Consequence} + Пусть $I$ --- невырожденный промежуток на $\R$ и для последовательности функций $f_n(x)$ известно, что $f_n(x) \in C(I)$ и $f_n(x)\overset{I}{\underset{n\to\infty}{\rightrightarrows}} f(x)$ + Тогда $f(x) \in C(I)$. +\end{Consequence} +\end{document} diff --git a/calculus-3/tex/compile.py b/calculus-3/tex/compile.py new file mode 100755 index 0000000..fddd1ec --- /dev/null +++ b/calculus-3/tex/compile.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 + +# -*- coding: utf-8 -*- +# Change coding to UTF-8 + +# Import section +import os +import subprocess +import re + +# Creating temp file with all lectures +with open('temp.tex', 'w', encoding="utf8") as temp: + # Adding header + temp.write('\n\\documentclass[a4paper, 12pt]{article}\n\n') + temp.write('\n\\usepackage{header}\n\n') + + + # Adding necessary lines (beginning of document, title and table of contents) + temp.write('\n\\begin{document}\n\n') + temp.write('\\maketitle\n\n') + temp.write('\\thispagestyle{empty}\n\n') + temp.write('\\pagestyle{fancy}\n\n') + temp.write('\\tableofcontents\n\n') + + # Collecting text from separate lecture files + lectures = [] + for elem in os.listdir('./'): + if elem.startswith('calculus-3') and elem.endswith('.tex'): + lectures.append(elem) + lectures.sort() + + # Adding it to the temp file + for lecture_name in lectures: + with open(lecture_name, 'r', encoding='utf8') as lecture: + temp.write(r'\newpage') + temp.write(r'\oball') + temp_lines = lecture.readlines() + i = 0 + for line in temp_lines: + if line != '\\begin{document}\n': + i += 1 + else: + break + i += 1 + for line in temp_lines[i:-1]: + temp_line = line.replace('section*', 'section') + temp.write(temp_line) + # Adding the final line + temp.write(r'\end{document}') + +# In order to create table of contents, I have to compile it twice. +for _ in range(2): + proc = subprocess.Popen(['pdflatex', 'temp.tex']) + proc.communicate() + +# Saving the file +os.chdir('..') +for file in os.listdir('./'): + if file == 'calculus-3_all_lectures.pdf': + os.remove(os.path.join('./', file)) +os.rename('./tex/temp.pdf', 'calculus-3_all_lectures.pdf') + +for elem in os.listdir('./tex/'): + if elem.startswith('calculus-3') and elem.endswith('.pdf'): + if elem in os.listdir('./'): + os.remove(os.path.join('./', elem)) + os.rename('./tex/'+elem, elem) +os.chdir('tex') + +# Removing the litter +for file in os.listdir('./'): + if not (file.endswith('.tex') or file.endswith('.py') or file.endswith('.sty') or file.endswith('images')): + os.remove(os.path.join('./', file)) +os.remove('./temp.tex') + + +# Removing rubbish +os.chdir('..') +for file in os.listdir('./'): + if not (file.endswith('tex') or file.endswith('py') or file.endswith('sty') + or file.endswith('pdf') or file.endswith('colloc') or file.endswith('images')): + os.remove(os.path.join('./', file)) diff --git a/calculus-3/tex/header.sty b/calculus-3/tex/header.sty new file mode 100644 index 0000000..738fab9 --- /dev/null +++ b/calculus-3/tex/header.sty @@ -0,0 +1,208 @@ +%% Работа с русским языком +\usepackage{cmap} % поиск в PDF +\usepackage{mathtext} % русские буквы в формулах +\usepackage[T2A]{fontenc} % кодировка +\usepackage[utf8]{inputenc} % кодировка исходного текста. НИКОГДА НЕ МЕНЯТЬ. +\usepackage[english,russian]{babel} % локализация и переносы +\usepackage{epigraph} % делать эпичные эпиграфы +\usepackage{fancybox,fancyhdr} % для колонтитулов + +%% Отступы между абзацами и в начале абзаца +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +%% Изменяем размер полей +\usepackage[top=0.7in, bottom=0.75in, left=0.625in, right=0.625in]{geometry} + +%% Изменяем размер отступов колонтитулов +\renewcommand{\headrulewidth}{1.8pt} +\renewcommand{\footrulewidth}{0.0pt} + +%% Графика +\usepackage[pdftex]{graphicx} +\graphicspath{{images/}} + +%% Различные пакеты для работы с математикой +\usepackage{mathtools} % Тот же amsmath, только с некоторыми поправками + +\usepackage{amssymb} % Математические символы +\usepackage{amsthm} % Пакет для написания теорем +\usepackage{amstext} +\usepackage{array} +\usepackage{amsfonts} +\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление +\usepackage{enumitem} % Для выравнивания itemize (\begin{itemize}[align=left]) +\usepackage{wrapfig} +% Номера формул +\mathtoolsset{showonlyrefs=true} % Показывать номера только у тех формул, на которые есть \eqref{} в тексте. + +% Ссылки +\usepackage[colorlinks=true, urlcolor=blue]{hyperref} + +% Шрифты +\usepackage{euscript} % Шрифт Евклид +\usepackage{mathrsfs} % Красивый матшрифт + +% Свои команды\textbf{} +\DeclareMathOperator{\sgn}{\mathop{sgn}} + +% Перенос знаков в формулах (по Львовскому) +\newcommand*{\hm}[1]{#1\nobreak\discretionary{} +{\hbox{$\mathsurround=0pt #1$}}{}} + +% Графики +\usepackage{tikz} +\usepackage{pgfplots} +%\pgfplotsset{compat=1.12} + +% Изменим формат \section и \subsection: +\usepackage{titlesec} +\titleformat{\section} +{\vspace{1cm}\centering\LARGE\bfseries} % Стиль заголовка +{} % префикс +{0pt} % Расстояние между префиксом и заголовком +{} % Как отображается префикс +\titleformat{\subsection} % Аналогично для \subsection +{\Large\bfseries} +{} +{0pt} +{} + + +%% Информация об авторах +\author{Группа лектория ФКН ПМИ 2016-2017 \\ + Михаил Дискин, Анастасия Иовлева, Руслан Хайдуров.} +\title{Лекции по предмету \\ + \textbf{Математический анализ-3}} +\date{2016/2017 учебный год} + + +\usepackage{ mathdots } +\usepackage{ floatflt } + +%% Для колонтитула +\def\head{ +{\it \small НИУ ВШЭ $\bullet$ Факультет компьютерных наук $\bullet$ +Прикладная математика и информатика} +} + +%% Делаем верхний и нижний колонтитулы +\fancyhf{} +\fancyhead[R]{\head} +\fancyfoot[R]{{\small {\it М. Дискин, А. Иовлева, Р. Хайдуров. Математический анализ-3}}} +\fancyhead[L]{\thepage} + +%% Функция для обнуление конкретного счётчика +\def\ob#1{\setcounter{#1}{0}} + +%% Функция для обнуления всего. Обязательно вызывать в конце файла! +\def\oball{\setcounter{Def}{0}\setcounter{Lem}{0}\setcounter{Sug}{0} +\setcounter{eg}{0}\setcounter{Cmt}{0}\setcounter{cnsqnc}{0}\setcounter{th}{0} +\setcounter{stnmt}{0}\setcounter{task}{0}\setcounter{dsg}{0}\setcounter{gen}{0} +\setcounter{dream}{0}\setcounter{prop}{0}} + +%% Определение счётчика + переопределение команд + +\newcounter{Def}\setcounter{Def}{0} +\def\df{\par\smallskip\refstepcounter{Def}\textbf{\arabic{Def}}} +\newtheorem*{Def}{Определение \df} + +\newcounter{Lem}\setcounter{Lem}{0} +\def\lm{\par\smallskip\refstepcounter{Lem}\textbf{\arabic{Lem}}} +\newtheorem*{Lemma}{Лемма \lm} + +\newcounter{Sug}\setcounter{Sug}{0} +\def\sug{\par\smallskip\refstepcounter{Sug}\textbf{\arabic{Sug}}} +\newtheorem*{Suggestion}{Предложение \sug} + +\newcounter{eg}\setcounter{eg}{0} +\def\eg{\par\smallskip\refstepcounter{eg}\textbf{\arabic{eg}}} +\newtheorem*{Examples}{Пример \eg} + +\newcounter{Cmt}\setcounter{Cmt}{0} +\def\cmt{\par\smallskip\refstepcounter{Cmt}\textbf{\arabic{Cmt}}} +\newtheorem*{Comment}{Замечание \cmt} + +\newcounter{cnsqnc}\setcounter{cnsqnc}{0} +\def\cnsqnc{\par\smallskip\refstepcounter{cnsqnc}\textbf{\arabic{cnsqnc}}} +\newtheorem*{Consequence}{Следствие \cnsqnc} + +\newcounter{th}\setcounter{th}{0} +\def\th{\par\smallskip\refstepcounter{th}\textbf{\arabic{th}}} +\newtheorem*{Theorem}{Теорема \th} + +\newcounter{stnmt}\setcounter{stnmt}{0} +\def\st{\par\smallskip\refstepcounter{stnmt}\textbf{\arabic{stnmt}}} +\newtheorem*{Statement}{Утверждение \st} + +\newcounter{task}\setcounter{task}{0} +\def\task{\par\smallskip\refstepcounter{task}\textbf{\arabic{task}}} +\newtheorem*{Task}{Упражнение \task} + +\newcounter{dsg}\setcounter{dsg}{0} +\def\dsg{\par\smallskip\refstepcounter{dsg}\textbf{\arabic{dsg}}} +\newtheorem*{Designation}{Обозначение \dsg} + +\newcounter{gen}\setcounter{gen}{0} +\def\gen{\par\smallskip\refstepcounter{gen}\textbf{\arabic{gen}}} +\newtheorem*{Generalization}{Обобщение \gen} + +\newcounter{dream}\setcounter{dream}{0} +\def\dream{\par\smallskip\refstepcounter{dream}\textbf{\arabic{dream}}} +\newtheorem*{Thedream}{Предел мечтаний \dream} + +\newcounter{prop}\setcounter{prop}{0} +\def\prop{\par\smallskip\refstepcounter{prop}\textbf{\arabic{prop}}} +\newtheorem*{Properties}{Свойства \prop} + +\newcounter{test}\setcounter{test}{0} +\def\test{\par\smallskip\refstepcounter{test}\textbf{\arabic{test}}} +\newtheorem*{Test}{Признак \test} + +\newcounter{comptest}\setcounter{comptest}{0} +\def\comptest{\par\smallskip\refstepcounter{comptest}\textbf{\arabic{comptest}}} +\newtheorem*{CompTest}{Признак сравнения \comptest} + +\renewcommand{\Re}{\mathrm{Re\:}} +\renewcommand{\Im}{\mathrm{Im\:}} +\newcommand{\Arg}{\mathrm{Arg\:}} +\renewcommand{\arg}{\mathrm{arg\:}} +\newcommand{\Mat}{\mathrm{Mat}} +\newcommand{\id}{\mathrm{id}} +\newcommand{\isom}{\xrightarrow{\sim}} +\newcommand{\leftisom}{\xleftarrow{\sim}} +\newcommand{\Hom}{\mathrm{Hom}} +\newcommand{\Ker}{\mathrm{Ker}\:} +\newcommand{\rk}{\mathrm{rk}\:} +\newcommand{\diag}{\mathrm{diag}} +\newcommand{\ort}{\mathrm{ort}} +\newcommand{\pr}{\mathrm{pr}} +\newcommand{\vol}{\mathrm{vol\:}} +\def\limref#1#2{{#1}\negmedspace\mid_{#2}} +\newcommand{\eps}{\varepsilon} + +\renewcommand{\phi}{\varphi} % плохо, так как есть \phi в англ раскладке. +\newcommand{\e}{\mathbb{e}} +\renewcommand{\l}{\lambda} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} +\renewcommand{\C}{\mathbb{C}} +\newcommand{\E}{\mathbb{E}} + +\newcommand{\vvector}[1]{\begin{pmatrix}{#1}_1 \\\vdots\\{#1}_n\end{pmatrix}} +\renewcommand{\vector}[1]{({#1}_1, \ldots, {#1}_n)} + +\newcommand{\rarr}{\rightarrow} +\renewcommand{\leq}{\leqslant} +\renewcommand{\geq}{\geqslant} +\renewcommand{\le}{\leqslant} +\renewcommand{\ge}{\geqslant} + +\newcommand{\series}[2]{\sum\limits_{n=#1}^{#2}} +\newcommand{\infprod}{\prod\limits_{n=1}^{\infty}} + + +\setlist[itemize]{itemsep=0pt, topsep=0pt} +\setlist[enumerate]{itemsep=0pt, topsep=0pt} \ No newline at end of file diff --git a/calculus-3/tex/images/03-01.ggb b/calculus-3/tex/images/03-01.ggb new file mode 100644 index 0000000..2d7f1e5 Binary files /dev/null and b/calculus-3/tex/images/03-01.ggb differ diff --git a/calculus-3/tex/images/03-01.png b/calculus-3/tex/images/03-01.png new file mode 100644 index 0000000..4d7cfa7 Binary files /dev/null and b/calculus-3/tex/images/03-01.png differ diff --git a/computer-systems/tex/compile.py b/computer-systems/tex/compile.py new file mode 100644 index 0000000..ad11326 --- /dev/null +++ b/computer-systems/tex/compile.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +# Change coding to UTF-8 + +# Import section +import os +import subprocess +import re + +# Creating temp file with all lectures +with open('temp.tex', 'w', encoding="utf8") as temp: + # Adding header + temp.write('\n\\documentclass[a4paper, 12pt]{article}\n\n') + temp.write('\n\\usepackage{header}\n\n') + + + # Adding necessary lines (beginning of document, title and table of contents) + temp.write('\n\\begin{document}\n\n') + temp.write('\\maketitle\n\n') + temp.write('\\thispagestyle{empty}\n\n') + temp.write('\\pagestyle{fancy}\n\n') + temp.write('\\tableofcontents\n\n') + + # Collecting text from separate lecture files and compiling each lecture again + lectures = [] + for elem in os.listdir('./'): + if elem.startswith('computer-systems') and elem.endswith('.tex'): + lectures.append(elem) + proc = subprocess.Popen(['pdflatex', '-output-directory', '../', elem]) + proc.communicate() + lectures.sort() + + # Adding it to the temp file + for lecture_name in lectures: + with open(lecture_name, 'r', encoding='utf8') as lecture: + temp.write(r'\newpage') + temp.write(r'\oball') + temp_lines = lecture.readlines() + i = 0 + for line in temp_lines: + if line != '\\begin{document}\n': + i += 1 + else: + break + i += 1 + for line in temp_lines[i:-1]: + temp_line = line.replace('section*', 'section') + temp.write(temp_line) + # Adding the final line + temp.write(r'\end{document}') + +# In order to create table of contents, I have to compile it twice. +for _ in range(2): + proc = subprocess.Popen(['pdflatex', 'temp.tex']) + proc.communicate() + +# Saving the file +os.chdir('..') +for file in os.listdir('./'): + if file == 'computer-systems_all_lectures.pdf': + os.remove(os.path.join('./', file)) +os.rename('./tex/temp.pdf', 'computer-systems_all_lectures.pdf') + +for elem in os.listdir('./tex/'): + if elem.startswith('computer-systems') and elem.endswith('.pdf'): + if elem in os.listdir('./'): + os.remove(os.path.join('./', elem)) + os.rename('./tex/'+elem, elem) +os.chdir('tex') + +# Removing the litter +for file in os.listdir('./'): + if not (file.endswith('.tex') or file.endswith('.py') or file.endswith('.sty') or file.endswith('images')): + os.remove(os.path.join('./', file)) +os.remove('./temp.tex') + + +# Removing rubbish +os.chdir('..') +for file in os.listdir('./'): + if not (file.endswith('tex') or file.endswith('py') or file.endswith('sty') + or file.endswith('pdf') or file.endswith('colloc') or file.endswith('images')): + os.remove(os.path.join('./', file)) \ No newline at end of file diff --git a/computer-systems/tex/header.sty b/computer-systems/tex/header.sty new file mode 100644 index 0000000..3cc62c6 --- /dev/null +++ b/computer-systems/tex/header.sty @@ -0,0 +1,188 @@ +%% Работа с русским языком +\usepackage{cmap} % поиск в PDF +\usepackage{mathtext} % русские буквы в формулах +\usepackage[T2A]{fontenc} % кодировка +\usepackage[utf8]{inputenc} % кодировка исходного текста. НИКОГДА НЕ МЕНЯТЬ. +\usepackage[english,russian]{babel} % локализация и переносы +\usepackage{epigraph} % делать эпичные эпиграфы +\usepackage{fancybox,fancyhdr} % для колонтитулов + +%% Отступы между абзацами и в начале абзаца +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +%% Изменяем размер полей +\usepackage[top=0.7in, bottom=0.75in, left=0.625in, right=0.625in]{geometry} + +%% Изменяем размер отступов колонтитулов +\renewcommand{\headrulewidth}{1.8pt} +\renewcommand{\footrulewidth}{0.0pt} + +%% Графика +\usepackage[pdftex]{graphicx} +\graphicspath{{images/}} + +%% Различные пакеты для работы с математикой +\usepackage{mathtools} % Тот же amsmath, только с некоторыми поправками + +\usepackage{amssymb} % Математические символы +\usepackage{amsthm} % Пакет для написания теорем +\usepackage{amstext} +\usepackage{array} +\usepackage{amsfonts} +\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление +\usepackage{enumitem} % Для выравнивания itemize (\begin{itemize}[align=left]) + +% Номера формул +\mathtoolsset{showonlyrefs=true} % Показывать номера только у тех формул, на которые есть \eqref{} в тексте. + +% Ссылки +\usepackage[colorlinks=true, urlcolor=blue]{hyperref} + +% Шрифты +\usepackage{euscript} % Шрифт Евклид +\usepackage{mathrsfs} % Красивый матшрифт + +% Свои команды\textbf{} +\DeclareMathOperator{\sgn}{\mathop{sgn}} + +% Перенос знаков в формулах (по Львовскому) +\newcommand*{\hm}[1]{#1\nobreak\discretionary{} +{\hbox{$\mathsurround=0pt #1$}}{}} + +% Графики +\usepackage{tikz} +\usepackage{pgfplots} +%\pgfplotsset{compat=1.12} + +% Изменим формат \section и \subsection: +\usepackage{titlesec} +\titleformat{\section} +{\vspace{1cm}\centering\LARGE\bfseries} % Стиль заголовка +{} % префикс +{0pt} % Расстояние между префиксом и заголовком +{} % Как отображается префикс +\titleformat{\subsection} % Аналогично для \subsection +{\Large\bfseries} +{} +{0pt} +{} + + +%% Информация об авторах +\author{Группа лектория ФКН ПМИ 2016-2017 \\ + Вадим Гринберг \\ + Петр Жижин \\ + Ксения Закирова} +\title{Лекции по предмету \\ + \textbf{Компьютерные системы}} +\date{2016/2017 учебный год} + + +%% Для колонтитула +\def\head{ +{\it \small НИУ ВШЭ $\bullet$ Факультет компьютерных наук $\bullet$ +Прикладная математика и информатика} +} + +%% Делаем верхний и нижний колонтитулы +\fancyhf{} +\fancyhead[R]{\head} +\fancyfoot[R]{{\small {\it Вадим Гринберг, + Петр Жижин, + Ксения Закирова. Компьютерные системы}}} +\fancyhead[L]{\thepage} + +%% Функция для обнуление конкретного счётчика +\def\ob#1{\setcounter{#1}{0}} + +%% Функция для обнуления всего. Обязательно вызывать в конце файла! +\def\oball{\setcounter{Def}{0}\setcounter{Lem}{0}\setcounter{Sug}{0} +\setcounter{eg}{0}\setcounter{Cmt}{0}\setcounter{cnsqnc}{0}\setcounter{th}{0} +\setcounter{stnmt}{0}\setcounter{task}{0}\setcounter{dsg}{0}\setcounter{gen}{0} +\setcounter{dream}{0}\setcounter{prop}{0}} + +%% Определение счётчика + переопределение команд + +\newcounter{Def}\setcounter{Def}{0} +\def\df{\par\smallskip\refstepcounter{Def}\textbf{\arabic{Def}}} +\newtheorem*{Def}{Определение \df} + +\newcounter{Lem}\setcounter{Lem}{0} +\def\lm{\par\smallskip\refstepcounter{Lem}\textbf{\arabic{Lem}}} +\newtheorem*{Lemma}{Лемма \lm} + +\newcounter{Sug}\setcounter{Sug}{0} +\def\sug{\par\smallskip\refstepcounter{Sug}\textbf{\arabic{Sug}}} +\newtheorem*{Suggestion}{Предложение \sug} + +\newcounter{eg}\setcounter{eg}{0} +\def\eg{\par\smallskip\refstepcounter{eg}\textbf{\arabic{eg}}} +\newtheorem*{Examples}{Пример \eg} + +\newcounter{Cmt}\setcounter{Cmt}{0} +\def\cmt{\par\smallskip\refstepcounter{Cmt}\textbf{\arabic{Cmt}}} +\newtheorem*{Comment}{Замечание \cmt} + +\newcounter{cnsqnc}\setcounter{cnsqnc}{0} +\def\cnsqnc{\par\smallskip\refstepcounter{cnsqnc}\textbf{\arabic{cnsqnc}}} +\newtheorem*{Consequence}{Следствие \cnsqnc} + +\newcounter{th}\setcounter{th}{0} +\def\th{\par\smallskip\refstepcounter{th}\textbf{\arabic{th}}} +\newtheorem*{Theorem}{Теорема \th} + +\newcounter{stnmt}\setcounter{stnmt}{0} +\def\st{\par\smallskip\refstepcounter{stnmt}\textbf{\arabic{stnmt}}} +\newtheorem*{Statement}{Утверждение \st} + +\newcounter{task}\setcounter{task}{0} +\def\task{\par\smallskip\refstepcounter{task}\textbf{\arabic{task}}} +\newtheorem*{Task}{Упражнение \task} + +\newcounter{dsg}\setcounter{dsg}{0} +\def\dsg{\par\smallskip\refstepcounter{dsg}\textbf{\arabic{dsg}}} +\newtheorem*{Designation}{Обозначение \dsg} + +\newcounter{gen}\setcounter{gen}{0} +\def\gen{\par\smallskip\refstepcounter{gen}\textbf{\arabic{gen}}} +\newtheorem*{Generalization}{Обобщение \gen} + +\newcounter{dream}\setcounter{dream}{0} +\def\dream{\par\smallskip\refstepcounter{dream}\textbf{\arabic{dream}}} +\newtheorem*{Thedream}{Предел мечтаний \dream} + +\newcounter{prop}\setcounter{prop}{0} +\def\prop{\par\smallskip\refstepcounter{prop}\textbf{\arabic{prop}}} +\newtheorem*{Properties}{Свойства \prop} + +\renewcommand{\Re}{\mathrm{Re\:}} +\renewcommand{\Im}{\mathrm{Im\:}} +\newcommand{\Arg}{\mathrm{Arg\:}} +\renewcommand{\arg}{\mathrm{arg\:}} +\newcommand{\Mat}{\mathrm{Mat}} +\newcommand{\id}{\mathrm{id}} +\newcommand{\isom}{\xrightarrow{\sim}} +\newcommand{\leftisom}{\xleftarrow{\sim}} +\newcommand{\Hom}{\mathrm{Hom}} +\newcommand{\Ker}{\mathrm{Ker}\:} +\newcommand{\rk}{\mathrm{rk}\:} +\newcommand{\diag}{\mathrm{diag}} +\newcommand{\ort}{\mathrm{ort}} +\newcommand{\pr}{\mathrm{pr}} +\newcommand{\vol}{\mathrm{vol\:}} +\def\limref#1#2{{#1}\negmedspace\mid_{#2}} +\newcommand{\eps}{\varepsilon} + +\renewcommand{\phi}{\varphi} % плохо, так как есть \phi в англ раскладке. +\newcommand{\e}{\mathbb{e}} +\renewcommand{\l}{\lambda} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} +\renewcommand{\C}{\mathbb{C}} +\newcommand{\E}{\mathbb{E}} + +\newcommand{\vvector}[1]{\begin{pmatrix}{#1}_1 \\\vdots\\{#1}_n\end{pmatrix}} +\renewcommand{\vector}[1]{({#1}_1, \ldots, {#1}_n)} \ No newline at end of file diff --git a/discrete-math/discrete-math_15_[11.01.2016].pdf b/discrete-math/discrete-math_15_[11.01.2016].pdf new file mode 100644 index 0000000..1666572 Binary files /dev/null and b/discrete-math/discrete-math_15_[11.01.2016].pdf differ diff --git a/discrete-math/discrete-math_16_[18.01.2016].pdf b/discrete-math/discrete-math_16_[18.01.2016].pdf new file mode 100644 index 0000000..8b1d7bf Binary files /dev/null and b/discrete-math/discrete-math_16_[18.01.2016].pdf differ diff --git a/discrete-math/discrete-math_17_[25.01.2016].pdf b/discrete-math/discrete-math_17_[25.01.2016].pdf new file mode 100644 index 0000000..bff74c2 Binary files /dev/null and b/discrete-math/discrete-math_17_[25.01.2016].pdf differ diff --git a/discrete-math/discrete-math_18_[01.02.2016].pdf b/discrete-math/discrete-math_18_[01.02.2016].pdf new file mode 100644 index 0000000..c3db8a6 Binary files /dev/null and b/discrete-math/discrete-math_18_[01.02.2016].pdf differ diff --git a/discrete-math/discrete-math_19_[08.02.2016].pdf b/discrete-math/discrete-math_19_[08.02.2016].pdf new file mode 100644 index 0000000..620dacb Binary files /dev/null and b/discrete-math/discrete-math_19_[08.02.2016].pdf differ diff --git a/discrete-math/discrete-math_colloquium-definitions.pdf b/discrete-math/discrete-math_colloquium-definitions.pdf new file mode 100644 index 0000000..ae6b113 Binary files /dev/null and b/discrete-math/discrete-math_colloquium-definitions.pdf differ diff --git a/discrete-math/discrete-math_colloquium-proofs.pdf b/discrete-math/discrete-math_colloquium-proofs.pdf new file mode 100644 index 0000000..a75fc2e Binary files /dev/null and b/discrete-math/discrete-math_colloquium-proofs.pdf differ diff --git a/discrete-math/tex/01.02.2016/images/kantorbern1.jpg b/discrete-math/tex/01.02.2016/images/kantorbern1.jpg new file mode 100644 index 0000000..831df0e Binary files /dev/null and b/discrete-math/tex/01.02.2016/images/kantorbern1.jpg differ diff --git a/discrete-math/tex/01.02.2016/images/kantorbern2.jpg b/discrete-math/tex/01.02.2016/images/kantorbern2.jpg new file mode 100644 index 0000000..a21450a Binary files /dev/null and b/discrete-math/tex/01.02.2016/images/kantorbern2.jpg differ diff --git a/discrete-math/tex/01.02.2016/images/kantorbern3.jpg b/discrete-math/tex/01.02.2016/images/kantorbern3.jpg new file mode 100644 index 0000000..664d743 Binary files /dev/null and b/discrete-math/tex/01.02.2016/images/kantorbern3.jpg differ diff --git a/discrete-math/tex/01.02.2016/main.tex b/discrete-math/tex/01.02.2016/main.tex new file mode 100644 index 0000000..059747c --- /dev/null +++ b/discrete-math/tex/01.02.2016/main.tex @@ -0,0 +1,335 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{enumitem} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} +\newtheorem*{cantor}{Теорема Кантора} +\newtheorem*{cantorfull}{Полная теорема Кантора} +\newtheorem*{cantorbern}{Теорема Кантора-Бернштейна} + +%18.01.2016 +\newtheorem*{on2n}{Теорема} +\newtheorem*{o2ndivn}{Теорема} +\newtheorem*{existsFgthen2ndivn}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definition}{\underline{Определение:} } +\newcommand{\statement}{\underline{Утверждение:} } +\newcommand{\note}{\underline{Замечание:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} + + + +\begin{document} +\title{Дискретная математика. Модуль 3. Лекция 4} +\author{Лекторий ПМИ ФКН 2015-2016\\Гринберг Вадим\\Жижин Пётр\\Пузырев Дмитрий} +\date{1 февраля 2016} + +\maketitle +\section{Равномощность некоторых множеств} +\subsection*{Множество двоичных слов. Множество пар натуральных чисел. Множество конечных последовательностей натуральных чисел} + +Рассмотрим следующие множества: + +\begin{itemize} + \item $\{ 0, 1\}^*$ -- множество двоичных слов. + \item $\N$ -- множество натуральных чисел (целые положительные и 0). + \item $\N \times \N$ -- множество пар натуральных чисел. + \item $\N^*$ -- множество конечных последовательностей натуральных чисел. +\end{itemize} + +Докажем, что между ними есть эффективная биекция (то есть задаваемая простым алгоритмом). + +\statement $\{ 0, 1\}^* \sim \N$. +\begin{proof} + + Рассмотрим такую функцию $f: W \to \overline{1W_{2}} - 1$, действующую из множества двоичных чисел в множество чисел, полученных путём вычитания единицы из значения двоичной записи исходного числа с приписанной вначале единицей. Тогда мы сопоставим каждому двоичному числу некоторое натуральное. + + \begin{itemize} + \item $\{\ \} \to \overline{1_{2}} - 1 = 0$ + \item $0 \to \overline{10_{2}} - 1 = 1$ + \item $1 \to \overline{11_{2}} - 1 = 2$ + \end{itemize} + + Докажем, что это отображение -- биекция. + + \textbf{Инъективность} + + Пусть у двух двоичных слов совпали образы, то есть им соответствует одно и то же натуральное число. Прибавим к этому числу единицу, получив тем самым число вида $\overline{1W_{2}}$. Но тогда по числу $W_{2}$ мы однозначно восстановим исходное слово, следовательно, изначальные двоичные слова равны. + + \textbf{Сюръективность} + + Возьмём любое число $P \in Z_{+}$, тогда $P$ представимо в виде $\overline{1W_{2}}$ для некоторого $W$. У получившегося числа $\overline{1W_{2}}$ старшая цифра обязательно единица, тогда само число $W$ есть единственный прообраз числа $P = \overline{1W_{2}}$ по построению. + +\end{proof} + +\statement $\N \times \N \sim \N$. +\begin{proof} + + Есть 2 варианта построить биекцию между этими двумя множествами: первый -- диагональный метод, рассмотренный ранее. Тогда: + $(x, y) \to \dbinom {x + y - 1}2 + y$. + + Рассмотрим второй вариант: + + Построим биекцию $\N \times \N \to \Z_{+}$, а так как $\Z_{+} \sim \N$, то мы тем самым докажем треубемое. + + Пусть $f : (x, y) \to 2^x(2y + 1)$ -- функция из множества пар в множество целых чисел, представленных в следующем виде. Покажем, что это -- биекция. + + \textbf{Сюръективность} + + По Основной Теореме Арифметики, любое целое положительное число представимо в виде произведения степеней его простых множителей: + + $\Z_{+} = 2^{\alpha_2} \cdot 3^{\alpha_3} \cdot \ldots \cdot p^{\alpha_p} \Rightarrow$ вынесем степень двойки. Оставшееся число $3^{\alpha_3} \cdot \ldots \cdot p^{\alpha_p}$ -- нечётное, значит, представимо в виде $2y + 1$ для некоего числа $y$. + + Тогда этому значению нашей функции будет соответствовать пара чисел $\alpha_{2}$ и $y$: $f(\alpha_{2}, y) = 2^{\alpha_{2}}(2y + 1) = z$, где $z \in \Z_{+}$. + + Следовательно, для любой пары чисел $(x, y)$ существует число вида $2^x(2y + 1)$. + + \textbf{Инъективность} + + По Основной Теореме Арифметики разложение целого положительного числа является единственным. + + Отсюда следует, что разложение вида $\Z_{+} = 2^{\alpha_2} \cdot 3^{\alpha_3} \cdot \ldots \cdot p^{\alpha_p}$, определяется единственным образом $\Rightarrow$ соответствующее этому разложению число $2^x(2y + 1)$ определяется единственным образом $\Rightarrow$ любой паре $(x, y)$ будет соответствовать только одно число вида $2^x(2y + 1)$ и инъективность выполнена. +\end{proof} + +\statement $\N^* \sim \N$. +\begin{proof} + + Построим биекцию $\N^* \to \Z_{+}$, а так как $\Z_{+} \sim \N$, то мы тем самым докажем треубемое. + + Пусть $f : (x_1, x_2, \ldots , x_n) \to p_{1}^{x_1} \cdot p_{2}^{x_2} \cdot \ldots \cdot p_{n}^{x_n + 1}$ -- функция из множества последовательностей натуральных чисел в целые положительные числа, представленные в виде произведения степеней некоторых различных простых чисел. Покажем, что это -- биекция. + + \textbf{Инъективность} + + Предположим, что две последовательности задают одно и то же число. Тогда, выписывая показатели степеней числа, восстанавливаем две исходные последовательности. По ОТА любое натуральное число однозначно представимо в виде произведения степеней простых сомножителей, значит, получившиеся последовательности равны. + + Здесь же приведём ответ, почему степень числа $p_n$ равна $x_n + 1$. Если бы показатель степени был равен $x_n$, то, к примеру, последовательности $\{1, 0\}$ и $\{1, 0, 0\}$ задавали бы одно и то же число: $2^1 \cdot 3^0 = 2^1 \cdot 3^0 \cdot 4^0$ -- инъективность бы не соблюдалась. + + \textbf{Сюръективность} + + Основная Теорема Арифметики гарантирует существование для любого натурального числа разложения в виде произведения степеней простых сомножитилей. Значит, любому набору $f : (x_1, x_2, \ldots , x_n)$ можно сопоставить такое разложение, поэтому сюръекция установлена. + + +\end{proof} + +\subsection*{Множество всех подмножеств $\N$. Множество последовательностей натуральных чисел. Множество действительных чисел} + + Рассмотрим следующие множества: + + \begin{itemize} + \item $\Phi(\N)$ -- множество всех подмножеств $\N$. + \item $2^{\N}$ -- множество последовательностей натуральных чисел. + \item $\R$ -- множество действительных чисел. + \end{itemize} + + Определим действительные числа следующим образом: сопоставим каждому $x \in \R$ двоичное число: $\pm \lefteqn{\underbrace{\phantom{10110 \dots 1011}}_{\text{целая часть}}}10110 \dots 1011 .\overbrace{110001 \dots 00110}^{\text{дробная часть}}$. Считаем известным, что ряд из каких-то степеней двоек сходится, причём запрещаем в числах данного вида "хвосты из единиц". + +\statement $\Phi(\N) \sim 2^{\N}$. +\begin{proof} + Введём функцию $f: \N \to \chi(x)$ -- индикаторная функция $=$ + $\begin{cases} + 1, \ x \in \N\\ + 0, \ x \notin \N + \end{cases}$ + + То есть, для каждого подмножества множества $\phi(\N)$ выписываем в ряд все натуральные числа, затем записываем для каждого натурального числа $1$, если оно входит в это подмножество, и $0$ иначе. Покажем, что это -- биекция. + + \textbf{Инъективность} + + Пусть у двух элементов $\N$ совпали образы. Тогда возьмём такое подмножество $\N^{'}$, в котором значение $f(\N^{'}) = 1$. Но тогда для каких-то $x_{i}, \ x_{j} \in f(\N^{'}) \ | \ x_{i} \neq x_{j}$ либо $x_{i} = 1, \ x_{j} = 0$, либо $x_{i} = 0, \ x_{j} = 1$. Следовательно, образы у этих двух элементов различны. + + \textbf{Сюръективность} + + Берём множество $\chi(x)$ и построим по нему элементы последовательности. Пусть мы получили 2 разных последовательности из одного двоичного числа. Но это означает, что в каком-то разряде двоичного числа не совпали цифры (в одном $0$, в другом $1$). Но тогда по построению это 2 разных числа. + +\end{proof} + +\statement $\R \sim 2^{\N}$. +\begin{proof} + + Из курса математического анализа был известнен факт, что $\R \sim (0, 1)$. Пусть $X$ -- множество последовательностей из $0$ и $1$ без хвостов из единиц. Тогда по определению существует биекция $X \leftrightarrow [0, 1)$. + + По определению $\R$: $[0, 1) \sim \pm 101 \ldots 001.1100 \ldots 01110$, тогда $X = 2^{\N} \backslash Y$, где $Y$ -- последовательность нулей и единиц с одиними единицами в конце. + + Из семинарских занятий нам известна теорема: если множество $A$ -- бесконечно, множество $B$ -- счётно, то $A \cup B \sim A$. + + Докажем, что множество $Y$ счётно. Пусть у нас есть какое-то число с одними единицами в конце: $w_{2}.1100110111111$ ($w_{2}$ -- целая часть числа). Если его инвертировать, то после точки получим двоичное число с бесконечным числом нулей в конце, единиц же будет счётное количество: $w_{2}.0011001000000$. Значит, эта новая последовательность нулей и единиц представляет какое-то натуральное число. Таким образом, мы построили биекцию $Y \leftrightarrow N$, значит по определению $Y$ счётно. + + Но тогда по теореме выше $2^{\N} = X \cup Y \sim X$, а так как $X \sim [0, 1)$, то $2^{\N} \sim [0, 1)$. + + Очевидно, что множество $[0, 1] \sim [0, 1)$ -- то же множество без одной точки. Но тогда аналогично $[0, 1) \sim (0, 1) \sim \R$. + +\end{proof} + +\definition Вышеперечисленные множества принято называть \textit{континуальными}. Будем говорить, что множество $X$ имеет мощность континуум, если $X \sim \R$. + +\subsection*{Теорема Кантора для натуральных чисел. Полная теорема Кантора. Теорема Кантора-Бернштейна} + +\begin{cantor} + $\N \nsim \R$ +\end{cantor} + +\begin{proof} + + Если вспомнить лекции по математическому анализу, мы доказывали неравномощность $\N$ и $(0, 1)$, воспользовавшись тем, что $\R \sim (0, 1)$. + + В этот раз воспользуемся $\R \sim 2^{\N}$, и докажем $\N \nsim 2^{\N}$ для получения требуемого. + + Докажем при помощи диагонального рассудения: + + Пусть $F = \{f_0, f_1, \ldots , f_n, \ldots \}$ -- множество последовательностей $f \in 2^{\N}$. Покажем, что $\exists x \in 2^{\N} : x \notin F$, тем самым доказав, что отображение $\N \to 2^{\N}$ не сюръективно. + + Запишем элементы $F$ в квадратную таблицу по правилу $f_i = \{f_{i0} \ f_{i1} \ldots f_{in}\}$: + + $\begin{array}{lcccr} + f_0 = & f_{00} & f_{01} & \ldots & f_{0n}\\ + f_1 = & f_{10} & f_{11} & \ldots & f_{1n}\\ + \vdots & \vdots & \vdots & \ddots & \vdots \\ + f_n = & f_{n0} & f_{n1} & \ldots & f_{nn}\\ + \end{array}$ + + Выпишем последовательность по диагонали: $f_{*} = \{f_{00} \ f_{11} \ f_{22} \ldots f_{n n}\}$. Тогда пусть $x = \{\overline{f_{00}} \ \overline{f_{11}} \ldots \overline{f_{n n}}\}$. Тогда $x \neq f_{i} \ \forall i \in [0, n]$, так как $x_{j} = \overline{f_{j j}} \neq f_{j j} \ \forall j$. Значит, отображение не сюръективно. + + Таким образом, $\N \nsim 2^{\N}$, и так как $\R \sim 2^{\N}$, то $\N \nsim \R$. + +\end{proof} + +\begin{cantorfull} + $X \nsim 2^{X} \ \forall \ $ множества $X$. Иначе говоря, любое множество не равномощно множеству своих подможеств: $X \nsim \phi(x)$. +\end{cantorfull} + +\begin{proof} + + Пусть имеется функция $f: X \to \Phi(x)$, сопоставляющая каждому множеству $x$ его подмножество. Докажем, что эта фунция не является биекцией. Для этого достаточно показать, что не соблюдается сюръективность. + + Возьмём множество $F = \{x \ | \ x \notin f(x)\} \in X$ -- множество элементов, точно не принадлежащих образу функции $f$. Докажем, что нет такого $y$, что $f(y) = F$. + + Пусть $y \in F \Rightarrow f(y) = F$, но тогда по определению $y \notin f(y) = F$ -- противоречие. + + Пусть теперь $y \notin F \Rightarrow X \backslash F = \{x \ | \ x \in f(x)\}$, но тогда $y \in f(y) = F$ -- противоречие. + + В итоге получаем, что $F \notin f(x)$, значит, отображение не сюръективно. Следовательно, биекции $f: X \leftrightarrow \phi(x)$ нет, и $X \nsim 2^{X} \ \forall \ $ множества $X$. + + +\end{proof} + +\definition{Будем говорить, что множество $A$ не больше множества $B$ ($A \leq B$) тогда и только тогда, когда $\exists f: A \to B$ -- инъекция.} + +\vspace{\baselineskip} +\definition{Будем говорить, что множество $A$ не меньше множества $B$ ($A \geq B$) тогда и только тогда, когда $\exists f: A \to B$ -- сюръекция.} + +\vspace{\baselineskip} +\note{$A \leq B \Longleftrightarrow B \geq A$.} + +\vspace{\baselineskip} +\statement{Пусть $A, B \neq \oslash$. Тогда если $\exists f: A \to B$ -- инъекция, то $\exists g: B \to A$ -- сюръекция, и наоборот.} + +\begin{proof} +Пусть $f: A \to B$ -- инъекция. Возьмём функцию $y(x)$, такую, что + +\[ + y(x) = \begin{cases} + f^{-1}(x), \ x \in f(A) \\ + a_{0} \in A, \ x \notin f(A) + \end{cases} +\] + -- мы получили сюръекцию из инъекции. + + Обратно: пусть $f: B \to A$ -- сюръекция. Возьмём некий элемент $a \in A$, тогда $f^{-1}(a) \neq \oslash$. Но тогда, взяв нашу функцию $y(x)$, получаем: $y(a) \in f^{-1}(a)$. А так как множества из разных $a$ не пересекаются, то получаем инъективность. + +\end{proof} + +\begin{cantorbern} + Если множество $A$ равномощно некоторому подмножеству множества $B$, а $B$ равномощно некоторому подмножеству множества $A$, то множества $A$ и $B$ равномощны. +\end{cantorbern} + +\begin{proof} + + + Пусть A равномощно подмножеству $B_1$ множества $B$, а $B$ равномощно подмножеству $A_1$ множества $A$ (см. риc. 1). При взаимно однозначном соответствии между $B$ и $A_1$ подмножество $B_1 \subset B$ переходит в некоторое подмножество $A_2 \subset A_1$. При этом все три множества $A, B_1$ и $A_2$ равномощны, --- и нужно доказать, что они равномощны множеству $B$, или, что то же самое, $A_1$. + + \begin{figure}[h] +\begin{center} +\begin{minipage}[h]{0.4\linewidth} + \includegraphics[height=5cm, width=\linewidth]{images/kantorbern1.jpg} + \caption{Взаимные соответсвия между множествами} + \end{minipage} + \end{center} + \end{figure} + + Теперь мы можем забыть про множество $B$ и его подмножества и доказывать такой факт: + + \textit{Если $A_2 \subset A_1 \subset A_0$ и $A_2 \sim A_0$, то все три множества +равномощны.} + + (Для единообразия мы пишем A0 вместо A.) + + Пусть $f$ — функция, осуществляющая взаимно однозначное соответствие $A_0 \rightarrow A_2$ (элемент $x \in A_0$ соответствует элементу $f(x) \in A_2$). Когда $A_0$ переходит в $A_2$, меньшее множество $A_1$ переходит в какое-то множество $A_3 \subset A_2$ (см. рис. 2). Аналогичным образом само $A_2$ переходит в некоторое множество $A_4 \subset A_2$. При этом $A_4 \subset A3$, так как $A_1 \subset A_2$. + + \begin{figure}[h] +\begin{center} +\begin{minipage}[h]{0.4\linewidth} + \includegraphics[height=5cm, width=\linewidth]{images/kantorbern2.jpg} + \caption{Последовательные вхождения множеств} + \end{minipage} + \end{center} + \end{figure} + + Продолжая эту конструкцию, мы получаем убывающую последовательность множеств + + \[A_0 \supset A_1 \supset A_2 \supset A_3 \supset A_4 \supset \ldots\] + + и взаимно однозначное соответствие $f : A_0 \rightarrow A_2$, при котором $A_i$ соответствует $A_{i + 2}$ (иногда это записывают так: $f(A_i) = A_{i+2}$). Формально можно описать $A_{2n}$ как множество тех элементов, которые получаются из какого-то элемента множества $A_0$ после $n$-кратного применения функции $f$. Аналогичным образом $A_{2n + 1}$ состоит из тех и только тех элементов, которые получаются из какого-то элемента множества $A_1$ после $n$-кратного применения функции $f$. + + Заметим, что пересечение всех множеств $A_i$ вполне может быть непусто: оно состоит из тех элементов, у которых можно сколько угодно раз брать $f$-прообраз. Теперь можно сказать так: множество $A_0$ мы разбили на непересекающиеся слои $C_i = A_i / A_{i+1}$ и на +сердцевину $C =\cap_i A_i$. + + Слои $C_0, C_2, C_4, \ldots$ равномощны (функция $f$ осуществляет взаимно однозначное соответствие между $C_0$ и $C_2$, между $C_2$ и $C_4$ и т.д.): + +\[C_0 \xrightarrow{f} C_2 \xrightarrow{f} C_4 \xrightarrow{f} \ldots\] + +То же самое можно сказать про слои с нечётными номерами: + +\[C_1 \xrightarrow{f} C_3 \xrightarrow{f} C_5 \xrightarrow{f} \ldots\] + +Можно ещё отметить (что, впрочем, не понадобится), что функция $f$ на множестве $C$ осуществляет его перестановку. + +Теперь легко понять, как построить взаимно однозначное соответствие $g$ между $A_0$ и $A_1$. Пусть $x \in A_0$. Тогда соответствующий ему элемент $g(x)$ строится так: $g(x) = f(x)$ при $x \in C_{2k}$ и $g(x) = x$ при $x \in C_{2k + 1}$ или $x \in C$ (см. рис. 3) + +\begin{figure}[h] +\begin{center} +\begin{minipage}[h]{0.4\linewidth} + \includegraphics[height=2cm, width=\linewidth]{images/kantorbern3.jpg} + \caption{Построение взаимно-однозначного соответствия} + \end{minipage} + \end{center} + \end{figure} + +\end{proof} + +\end{document} \ No newline at end of file diff --git a/discrete-math/tex/08.02.2016/main.tex b/discrete-math/tex/08.02.2016/main.tex new file mode 100644 index 0000000..f89bde9 --- /dev/null +++ b/discrete-math/tex/08.02.2016/main.tex @@ -0,0 +1,356 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{algorithmicx, algorithm} +\usepackage{algpseudocode} +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{enumitem} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} +\newtheorem*{algo1}{Первое свойство алгоритмов} + + +%18.01.2016 +\newtheorem*{theorem}{Теорема} +\newtheorem*{on2n}{Теорема} +\newtheorem*{o2ndivn}{Теорема} +\newtheorem*{existsFgthen2ndivn}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definition}{\underline{Определение:} } +\newcommand{\definitionone}{\underline{Определение 1:} } +\newcommand{\definitiontwo}{\underline{Определение 2:} } +\newcommand{\statement}{\underline{Утверждение:} } +\newcommand{\note}{\underline{Замечание:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} + + + +\begin{document} +\title{Дискретная математика. Модуль 3. Лекция 5} +\author{Лекторий ПМИ ФКН 2015-2016\\Гринберг Вадим\\Жижин Пётр\\Пузырев Дмитрий} +\date{8 февраля 2016} + +\maketitle + +%Дима% +\subsection*{Введение в теорию алгоритмов. Задача вычисления функций. Разрешимость диофантова уравнения.} + +В начале отметим, что в последущих задачах мы будем заниматься \textit{возможностью} написания алгоритма, решающего данную задачу, но не его \textit{вычислительной сложностью}. + +Перед тем, как дать, собственно, определение \textit{алгоритма}, приведем ряд показательных примеров, попутно вводя базовые свойства, которые помогут в написании определения в дальнейшем. + +Для начала рассмотрим наиболее распространённую задачу вычисления функций. Имеется некоторая функция $f: x \mapsto f(x)$, которая переводит элементы множества входов в множество результатов с помощью некоторого алгоритма. + +Мы предполагаем, что алгоритм действует на некотором \textit{конструктивном множестве}. Чаще всего мы будем говорить о мн-ве $\N$. + +\definition{Функция называется вычислимой, если для неё существует некоторый алгоритм вычисления.} + +\definition{Конструктивное множество --- множество, для которого есть вычислимая биекция с множеством натуральных чисел.} + +Классическим примером задач на вычисление функций является задача на разрешимость диофантова уравнения. Ранее мы уже обсуждали решение \textit{линейных диофантовых уравнений}, являющееся, вообще говоря, частным случаем. Однако, начиная с третьей степени, не представляется возможным привести формулу для решения. Остаётся только алгоритмическое построение. + +Итак, существует многочлен $f(x_1 \ldots x_n) = 0$ от произвольного количества переменных. Требуется привести такой алгоритм, у которого: + +На вход подаются: последовательности натуральных чисел $\N^*$. + +На выходе: $\{0,1\}$. $1$ --- если решение диофантова уравнения существует, $0$ --- если решений (в целых числах) нет. +В качестве решения может быть предложен алгоритм на странице +\pageref{algo:dioffsolve} (алгоритм \ref{algo:dioffsolve}). +\begin{algorithm}[!htp] +\caption{Алгоритм проверки разрешимости диофантового уравнения} +\label{algo:dioffsolve} +\begin{algorithmic}[1] +\Function{SolveEquation}{} + \For{$i := 0 \ldots \infty$} + \State $x \gets \pi(t)$ + \If{$f(x) = 0$} + \State \Return 1 + \EndIf + \EndFor +\EndFunction +\end{algorithmic} +\end{algorithm} + +В итоге получили: +\[ + A(f) = + \begin{cases} + 1, f(x_1 \ldots x_n) \text{ разрешимо} \\ + \text{иначе не определена} + \end{cases} +\] + +Однако можно заметить, что получена не та функция, которая нужна. +Почему так? Всё очень просто, она не возвращает ноль. Например, +для уравнения $x^2 + 1 = 0$ она просто зациклится и ничего +никогда не вернёт. + +Здесь введём первое свойство алгоритмов. + +\begin{algo1} +Композиция вычислимых функций вычислима. +\end{algo1} +\begin{proof} +Пусть существуют вычислимые функции $f$, переводящая множество входов $X$ в множество выходов $Y$ и $g$, переводящая $Y$ в $Z$. + +\[ + \begin{cases} + f: X \to Y \\ + g: Y \to Z + \end{cases} +\] + +Построить $g \circ f: X \to Z$ достаточно просто. На первом шаге нужно применить функцию $f$. Далее берём множество выходов $f$ и подаём на вход в $g$. На выходе получим некоторое множество выходов $Z$. Вычислимая композиция построена. + +\begin{algorithm} +\caption{Алгоритм получения композиции функций} +\begin{algorithmic}[1] +\Function{Composition}{x} + \State $t \gets f(x)$ + \State \Return $g(t)$ +\EndFunction +\end{algorithmic} +\end{algorithm} +\end{proof} + +Итак, есть вычислимая биекция $\pi: \N^* \to \N$. + +Построим композицию $\N^* \to \N \to \{0, 1\}$. + +\[ + \begin{cases} + \pi^{-1}: B \to A \\ + f: A \to A \\ + \pi: A \to B + \end{cases} +\] + +Построить это можно применением композиции $\pi \circ f \circ \pi^{-1}$. Получим алгоритм из $B$ в $B$. +Поэтому нам, по сути, \textbf{без разницы какие множества на входе +и выходе} так как можно получить легко из одного другое. + + + +Заметим, что если некоторая биекция $\pi$ вычислима, то обратная ей $\pi^{-1}$ также будет вычислима. Способ вычисления схож с алгоритмом для диофантовых уравнений. + +Рассматриваем все возможные значения входов и вычисляем $\pi^{-1}(x)$. +\begin{algorithm} +\caption{Алгоритм построения обратной функции для биекции} +\begin{algorithmic}[1] +\Function{RevBiection}{x} + \For{$n := 0 \ldots \infty$} + \If{$\pi(n) = x$} + \State \Return n + \EndIf + \EndFor +\EndFunction +\end{algorithmic} +\end{algorithm} + +Стоит отметить, что данный алгоритм всегда завершается так как +(по определению) биекция сюрьективна и найдется номер $n$ для +которого $\pi(n) = x$. + +\subsection*{Задачи разрешения. Разрешимые множества} + +Вспомним что такое характеристическая функция множества $S$: +\[ +\chi_S(x) = \begin{cases} + 1,\ x \in S \\ + 0,\ x \notin S +\end{cases} +\] + +\definition{Множество называется разрешимым, если его +характеристическая функция вычислима.} + +Понятно, что в таком виде очень удобно исследовать вопросы о +свойствах некоторых объектов (разрешимости диофантовых уравнений, +связность графа и так далее). Поэтому разрешимые множества +очень важный объект. + +\statement{Конечное множество $S \subset \N$ всегда разрешимо.} +\begin{proof} +Следующий алгоритм вычисляет характеристическую функцию. + +\begin{algorithm} +\caption{Алгоритм разрешения конечного множества} +\begin{algorithmic}[1] +\Function{SolveSet}{s, x} + \If{$x = s_1$} + \State \Return 1 + \EndIf + \State \ldots + \If{$x = s_n$} + \State \Return 1 + \EndIf + \State \Return 0 +\EndFunction +\end{algorithmic} +\end{algorithm} +Стоит отметить, что функция останавливает свою работу после +возвращения значения (как в языке C, например, а не как в Pascal). + +По сути мы просто по очереди сравниваем элементы множества +на равенство входному. Их у нас конечное число, а значит и +алгоритм всегда работает конечное время. Поэтому функция вычислима. +\end{proof} + +\statement{Если множества $A, B$ разрешимы, то и множества +$A \cap B$, $A \cup B$, $A \setminus B$, $\N \setminus A$ +тоже разрешимы.} +\begin{proof} +Алгоритмы для определения характеристических функций +очень похожи, поэтому будет приведена сначала общая часть +всех алгоритмов. +\begin{algorithm} +\caption{Алгоритм разрешения операций над множествами} +\begin{algorithmic}[1] +\Function{SolveSet}{A, B, x} + \State $a \gets \chi_A(x)$ + \State $b \gets \chi_B(x)$ + \State \Return \ldots +\EndFunction +\end{algorithmic} +\end{algorithm} +На месте точек должны стоять: +\begin{enumerate} + \item $a \land b$ для $A \cap B$ + \item $a \lor b$ для $A \cup B$ + \item $a \land \lnot b$ для $A \setminus B$ + \item $\lnot a$ для $\N \setminus A$ +\end{enumerate} +Фактически, мы пользуемся свойствами характеристических функций. +\end{proof} + +\begin{theorem} +Существует неразрешимое множество. +\end{theorem} +\begin{proof} + Алгоритмов всего счётное количество, а множество подмножеств + натуральных чисел континуально, значит такое множество + действительно существует. +\end{proof} + +\subsection*{Алгоритмы перечисления. Перечислимые множества. Теорема Поста} + +%Всё ниже -- Вадим. + +\definition{Алгоритм перечисления -- такой алгоритм, у которого нет входа, он работает и может выводить некоторые числа, причём все напечатанные числа составляют счетное множество.} + +\definitionone{Множество $S$ называется перечислимым, если есть алгоритм перечисления всех его элементов.} + +\begin{theorem} + +Существует неперечислимое множество. + +\end{theorem} + +\begin{proof} + +Алгоритмов перечисления -- счётное множество, а бесконечных подмножеств множества натуральных чисел несчётное количество (это разность несчётного и счётного множества). + +\end{proof} + +\definitiontwo{Множество $S$ -- перечислимо, если существует такая вычислимая функция: + +\[ + f: \N \to \N + \begin{cases} + f(\N) = S \\ + \text{Область определения} \ f \ \text{равна либо} \ \N, \text{либо} \ [n]. + \end{cases} +\] + +} + +\begin{theorem} + +Определения $1$ и $2$ эквивалентны. + +\end{theorem} + +\begin{proof} +\ + +$\Longrightarrow$ +Пусть $A$ -- алгоритм перечисления множества $S$. Тогда возьмём следующий алгоритм $B$: принимает на вход число $n$, запускает алгоритм $A$ и считает, сколько чисел напечатано. Как только вывели $n + 1$ слово -- алгоритм печатает результат. + +Покажем, что соблюдаются свойства вычислимой функции: + +\begin{enumerate} + \item $B(n) = S$, так как $\forall \ n \ \exists \ B(n) \Rightarrow + \begin{cases} + \forall \ x \in S \ \exists \ B(x) \\ + \forall \ x \notin S$ никогда не выведет $B(x) + \end{cases}$ + \item Пусть $S$ -- бесконечное множество, тогда функция, задаваемая $B$, определена везде, значит $dom \ B = \N$. Если $B$ работает на $n$ числах, то алгоритм переберёт их и остановится. +\end{enumerate} + +$\Longleftarrow$ +Возьмём следующий алгоритм перечисления $B$ для множества $S$: + +\begin{algorithm} +\caption{Алгоритм перечисления разрешимого множества} +\begin{algorithmic}[1] +\Function{PrintSet}{S} + \For{$i := 0 \ldots \infty$} + \If{$f(i) = 1$} + \State \textbf{print} i + \EndIf + \EndFor +\EndFunction +\end{algorithmic} +\end{algorithm} + +Если функция определена для некоторых $n$ чисел, то ровно их он и напечатает. Если $dom \ f = \N$, то алгоритм никогда не остановится, то есть напечатает всю область определения $f$. Значит, существует алгоритм, перечисляющий $S$. + +\end{proof} + +\begin{poste} + +Если множества $A$ и $\overline{A}$ перечислимы, то множество A разрешимо. + +\end{poste} + +\begin{proof} + +Алгоритм разрешения множества $A$ устроен так. Он исполняет +модифицированные алгоритмы перечисления множеств $A$ и $\overline{A}$ параллельно: один шаг работы алгоритма перечисления множества A, затем один шаг работы алгоритма перечисления $\overline{A}$ и так далее. + +Вместо того, чтобы печатать очередной элемент, модифицированный алгоритм +перечисления запоминает его в списке элементов множества. (В любой момент исполнения алгоритма такой список конечен.) + +Когда один из списков увеличивается, добавленный элемент сравнивается со входом $x$. Если обнаружено вхождение $x$ в список элементов множества $A$, то алгоритм разрешения останавливается и выдаёт результат $1$. Если обнаружено вхождение $x$ в список элементов множества $\overline{A}$, то алгоритм разрешения останавливается и выдаёт результат 0. В остальных случаях продолжается работа алгоритмов перечисления. + +Докажем корректность алгоритма. Пусть $x \in A$. Тогда $x$ заведомо не входит в список элементов $\overline{A}$ и результат $0$ невозможен. С другой стороны, рано или поздно $x$ появится в списке элементов $A$, поэтому алгоритм выдаст результат $1$. + +Аналогично рассуждаем в случае $x \notin A$. + +\end{proof} + +\end{document} diff --git a/discrete-math/tex/11.01.2016/discrete-math_15_[11.01.2016].tex b/discrete-math/tex/11.01.2016/discrete-math_15_[11.01.2016].tex new file mode 100644 index 0000000..e719183 --- /dev/null +++ b/discrete-math/tex/11.01.2016/discrete-math_15_[11.01.2016].tex @@ -0,0 +1,214 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usetikzlibrary{calc,matrix} + +%Теоремы +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} + +\begin{document} +\title{Дискретная математика. Модуль 3. Лекция 1} +\author{Лекторий ПМИ ФКН 2015-2016\\Бубнова Валерия\\Жижин Пётр\\Пузырев Дмитрий} +\date{11 января 2016} + +\maketitle +\section*{Схемы. Булевы схемы} +\textsc{Важное примечание:} В данной лекции все рассмотренные функции являются \textit{всюду определенными}. + +\textit{Схема} --- это функция, заданная последовательность присваиваний. + +Также в профессиональной среде схемы принято называть SLP (\textit{straight line programmes}). + +Рассмотрим такую функцию $f$, определенную для булевых значений (\textit{булеву функцию}): $f:\{0, 1\}^n \rightarrow \{0, 1\}$. + +\textit{Базисом} B булевой функции будем называть некий набор $B:\{f_1, f_2, \ldots , f_n\}$, где $f_1 \ldots f_n$ - булевы функции. + +\textit{Булева схема} в базисе B --- последовательность функций $x_1, x_2, x_3... x_n, x_{n+1} := S_1, x_L := S_{L-n}$, которая вычисляет $x_L(x_1, \ldots ,x_n)$. + +\[S_j = g(S_{i_1}, ... , s_{i_r}), g \in B, i_\mathalpha < j\] + +\textit{Стандартный базис} есть базис, состоящий из операций отрицания, конъюнкции и дизъюнкции: $\{\lnot, \vee, \wedge\}$ + +\textsc{Пример 1} + +Зададим булеву схему с помощью стандартного базиса. + +$x_1, \ldots ,x_n, s_1 := \lnot x_1, s_2 = \lnot x_2, s_3 := x_1 \wedge s_2, s_4 := x_2 \wedge s_1; s_5 := s_3 \vee s_4$ + +\includegraphics[height=7cm]{images/1.png} + + Если $x_2 = 0$, то $s_5 = x_1$ + + Если $x_2 = 1$, то $s_5 = \lnot x_1$ + + Результатом выполнения булевой схемы является сложение по модулю 2 (1, если значения $x_1$ и $x_2$ разные) - $\oplus$. + + \textsc{Пример 2} + + Составим схему, которая является сложением по модулю 2 $n$ переменных. Приведём индуктивное доказательство её существования: + + \begin{enumerate} + \item База индукции --- $n = 2$. Сложение 2 переменных по модулю 2 возможно по схеме, описанной выше + \item Предположим существование такой схемы для $n - 1$ переменных + \[x_1 \oplus x_2 \oplus \ldots \oplus x_{n-1}\] + \item Рассмотрим сложение по модулю 2 $n$ переменных. Представим его как сложение по модулю 2 $x_n$ с результатом предыдущего шага. Существование второго слагаемого объясняется предположением индукции. Сложение с $x_n$ можно выполнить по схеме выше. + \[x_1 \oplus x_2 \oplus \ldots \oplus x_{n-1} \oplus x_n = (x_1 \oplus x_2 \oplus \ldots \oplus x_{n-1}) \oplus x_n\] + \end{enumerate} +\includegraphics[height=7cm]{images/2.png} + + \textsc{Пример 3} + + Дизъюнкция n переменных --- аналогично, по индукции. Такие рассуждения можно построить и для конъюнкции. + + \includegraphics[height=7cm]{images/3.png} + + \section*{Анализ схем} + + \textit{Анализ базисов: } все ли функции можно выразить через схему в данном базисе? + + \textit{Полный базис: } Базис B - \textit{полный}, если любую булеву функцию можно вычислить схемой в базисе B. + + \begin{standartbase} + Стандартный базис --- полный. + \end{standartbase} + \begin{proof} +Вспомним, что ДНФ - это дизъюнкция конъюнктов литералов. Построим схему ДНФ. + +$x_1, \ldots ,x_n, \lnot x_1, \ldots ,\lnot x_n, c_1, \ldots ,c_n, D$, где $c_j$ --- конъюнкция литералов, D --- дизъюнкция. Данный порядок действий соответствует определению ДНФ, следовательно ДНФ представима в виде схемы и любая функция представима в виде ДНФ. что доказано ранее. (Note: $0 = x \wedge \lnot x, 1 = x \vee \lnot x$) +\end{proof} + + \begin{fulllemma} +Пусть базис $B_1$ --- полный. + +$\forall f \in B_1$ вычисляется схемой в базисе $B_2$. + +Тогда $B_2$ --- полный. + \end{fulllemma} + \begin{proof} + Вычислим схему в базисе $B_1$. + +$(B_1) x_1,... x_n,s_j := $вычисление $f, F(..)$ + +Теперь вычислим схему в базисе $B_2$. + +$(B_2) $вычисление $f, F(..)$ + +\end{proof} +\textsc{Примечание: } Заметим, что если стандартный базис выразим через некоторые функции, то данные функции будут составлять полный базис. + +\begin{sl1} +Полнота базиса Жегалкина $\{1, x_1 \wedge x_2, x_1 \oplus x_2\}$. +\end{sl1} +\begin{proof} +$\lnot x_1 = 1 \oplus x_1$ $x_1 \vee x_2 = x_1 \oplus x_2 \oplus (x_1 \wedge x_2)$ или $x_1 \vee x_2 = \lnot (\lnot x_1 \wedge \lnot x_2)$ +\end{proof} + +\textbf{Немного о схемах.} + +Любая формула является схемой. При этом формула --- частный случай схемы. Не любая схема --- формула. + +\textsc{Пример: } +$x_1 \oplus x_2 = x_1 \wedge \lnot x_2 \vee \lnot x_1 \wedge x_2 = F +(x_1 \oplus x_2) \oplus x_3 = (F) \wedge \lnot x_3 \vee \lnot F \wedge x_3$ + +\begin{sl2} +Полнота базиса {$\lnot, \wedge$}. +\end{sl2} +\begin{proof} +$x \vee y = \lnot (\lnot x \wedge \lnot y)$ +\end{proof} +Функция $f:\{0, 1\}^n \rightarrow \{0, 1\}$ называется \textit{монотонной}, если $\forall i: x_i \leqslant y_i \Rightarrow f(x_1 \ldots x_n) \leqslant f(y_1 \ldots y_n)$ + +\textit{Монотонный базис} --- это базис {$\vee, \wedge$} + +\begin{monotonousbase} +Монотонный базис $\{\vee, \wedge\}$ --- неполный +\end{monotonousbase} +\begin{proof} +Воспользоваться монотонностью функций $x_1 \vee x_2$ и $x_1 \wedge x_2$ и немонотонностью функции $\lnot x_1$ +\end{proof} +\begin{scheme} +Схема в монотонном базисе вычисляет монотонную функцию. +\end{scheme} +\begin{proof} +Доказываем индукцией по размеру схем +\[x_1, \ldots, x_n, S_1 \ldots S_L, S_{L+1}\] +\[s_{L+1}:=f(s_{i_1}... s_{i_r})\] +\[S_{i\alpha}(x) \leqslant S_{i\alpha}(y)\] +Так как f --- монотонная +\[S_{L+1}(x) \leqslant S_{L+1}(y)\] +\end{proof} + +Заметим также неполноту следующих базисов: +\begin{enumerate} + \item $\{\wedge,\oplus\}$ + \item $\{1,\wedge\}$ + \item $\{1,\oplus\}$ +\end{enumerate} + +Функция называется \textit{линейной}, если существуют такие $a_0, a_1, \ldots ,a_n$, где $a_i \in {0;1}, \forall i = \overline{1,n}$ имеет место равенство +\[f(x_1, \ldots ,x_n) = a_0 \oplus a_1 \wedge x_1 \oplus \ldots \oplus a_n \wedge x_n\] + +\begin{n2} +Сумма двух линейных функций также будет линейна. +\end{n2} +\begin{proof} +\[a_0 + \sum a_ix_i + b_0 + \sum b_ix_i = (a_0 + b_0) + \sum (a_i + b_i)x_i\] +\end{proof} + +\textit{Полином Жегалкина} представляет из себя сумму по модулю два произведений неивертированных переменных. Формально это можно записать так: $P(x_1 \ldots x_n) = a_0 \oplus${\Large $\oplus_{i = 1}^n$} $a_i \wedge x_i, a_i \in {0,1}$ + +\textit{Примечание. Не все булевы функции --- линейные} + +Линейных функций --- $2^{n+1}$ + +Булевых функций --- $2^{2^n}$ + +Получается, линейных функций меньше. + +\begin{zhegalkin} +Любая булева функция представима единственным образом в виде полинома Жегалкина. +\end{zhegalkin} +\begin{proof} + \textit{Существование: }Заметим, что различных булевых функций от n переменных $2^{2^n}$ штук.При этом конъюнкций вида $x_{i_1}\ldots x_{i_k}$ существует ровно $2n$, так как из $n $возможных сомножителей каждый или входит в конъюнкцию, или нет. В полиноме у каждой такой конъюнкции стоит 0 или 1, то есть существует $2^{2^n}$ различных полиномов Жегалкина от n переменных. + + \textit{Единственность: }Теперь докажем, что различные полиномы реализуют различные функции. Предположим противное. Тогда приравняв два различных полинома и перенеся один из них в другую часть равенства, получим полином, тождественно равный нулю и имеющий ненулевые коэффициенты. Тогда рассмотрим слагаемое с единичным коэффициентом наименьшей длины, то есть с наименьшим числом переменных, входящих в него (любой один, если таких несколько). Подставив единицы на места этих переменных, и нули на места остальных, получим, что на этом наборе только одно это слагаемое принимает единичное значение, то есть нулевая функция на одном из наборов принимает значение 1. Противоречие. Значит, каждая булева функция реализуется полиномом Жегалкина единственным образом. + \end{proof} + +\textit{Двойственной} называется функция $f^* = (x_1 \ldots x_n) = \lnot f = (\lnot x_1 \ldots \lnot x_n)$. + +Если $f = f^*$, то такая функция называется \textit{самойдейственной}. + +\section*{Теорема Поста} +\begin{poste} +Для полноты системы функций необходимо и достаточно, чтобы для каждого из классов: +\begin{itemize} + \item булевых функций, сохраняющих 1 + \item булевых функций, сохраняющих 0 + \item линейных функций + \item монотонных функций + \item самодвойственных функций +\end{itemize} +в системе $\Phi$ нашлась хотя бы одна функция $\phi_i$, ему не принадлежащая. Иными словами, система не содержится полностью ни в одном из пяти классов. +\end{poste} +Строгое доказательство этой теоремы мы проведём в дальнейшем, на семинарах и следующих лекциях. +\end{document} diff --git a/discrete-math/tex/11.01.2016/images/1.png b/discrete-math/tex/11.01.2016/images/1.png new file mode 100644 index 0000000..9f4aeef Binary files /dev/null and b/discrete-math/tex/11.01.2016/images/1.png differ diff --git a/discrete-math/tex/11.01.2016/images/2.png b/discrete-math/tex/11.01.2016/images/2.png new file mode 100644 index 0000000..9441378 Binary files /dev/null and b/discrete-math/tex/11.01.2016/images/2.png differ diff --git a/discrete-math/tex/11.01.2016/images/3.png b/discrete-math/tex/11.01.2016/images/3.png new file mode 100644 index 0000000..c33a327 Binary files /dev/null and b/discrete-math/tex/11.01.2016/images/3.png differ diff --git a/discrete-math/tex/18.01.2016/discrete-math_16_[18.01.2016].tex b/discrete-math/tex/18.01.2016/discrete-math_16_[18.01.2016].tex new file mode 100644 index 0000000..6d4523d --- /dev/null +++ b/discrete-math/tex/18.01.2016/discrete-math_16_[18.01.2016].tex @@ -0,0 +1,205 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{csquotes} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} + +%18.01.2016 +\newtheorem*{on2n}{Теорема} +\newtheorem*{o2ndivn}{Теорема} +\newtheorem*{existsFgthen2ndivn}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} + +\begin{document} +\title{Дискретная математика. Модуль 3. Лекция 2} +\author{Лекторий ПМИ ФКН 2015-2016\\Гринберг Вадим\\Жижин Пётр\\Пузырев Дмитрий} +\date{18 января 2016} + +\maketitle +\section{Размер схемы. Сложность булевой функции. Верхние и нижние оценки сложности} +\subsection*{Размер схемы. Сложность булевой функции} +\textit{Размер булевой схемы} --- это количество присваиваний в схеме +$g_1, \ldots, g_L$ для вычисления функции $f: \{0, 1\}^n \rightarrow \{0, 1\}$. + +\textit{Сложность функции f в базисе B} --- это минимальный размер булевой схемы, +вычисляющей функцию $f$ в базисе B. Если базис не указывают -- имеют в виду +стандартный базис $\{\lnot, \lor, \land\}$. \textit{Обозначение:} $C(f)$. + +\underline{Утверждение:} Если $B$ -- конечный базис, тогда $\exists c: \forall f $ если $f$ +вычисляется схемой $S$ в $B$ размера $L$, тогда существует схема в стандартном базисе, +размера меньше, чем $c \cdot L$, вычисляющая ту же функцию $f$. +\begin{proof} + Пусть $f$ вычисляется схемой $S$ в базисе $B$ путём следующих присваиваний: + \[ + g_1, \ldots, g_k, \ldots, g_L = f + \] + Рассмотрим некоторую $g_k$ как функцию в базисе $B$ от каких-то аргументов. + \[ + g_k = g(\ldots), g \in B + \] + Для этой функции есть некоторая схема в стандартном базисе некоторого размера $L_k'$ + (так как в стандартном базисе любая функция вычислима, в том числе и $g$). + + Каждую $g_i$ заменим на соответствующую схему в стандартном базисе размера $L_i'$. + Тогда и вся функция вычислима в стандартном базисе схемой размера: + \[ + L'= L_1' + L_2' + L_3' + \ldots + L_L' \leqslant L \cdot max(L_1', L_2', \ldots + L_L') = L \cdot c_f + \] + + Для того чтобы теперь подобрать константу $c$ в определении опять возьмем наибольшее + из всех $c_f$. +\end{proof} + +\subsection*{Верхняя оценка схемной сложности} +\begin{on2n} + $C(f) = O(n \cdot 2^n)$ +\end{on2n} +\begin{proof} + Повторим предыдущие рассуждения при доказательстве того, что в стандартном + базисе любая функция вычислима. Для этого вспомним сокращенную ДНФ: + \[ + f(x) = \bigvee\limits_{\substack{a: f(a) = 1 \\ a \in \{0, 1\}^n}} x^a, \ + x^a = \bigwedge\limits_{i = 1}^{n} x_i^{a_i} + \] + Нетрудно посчитать, что схема для вычисления $x^a$ имеет размер $L_a = O(n)$. + Тогда итоговый размер схемы $L \leqslant 2^n \cdot O(n) \iff L = O(n \cdot 2^n)$. +\end{proof} +\begin{o2ndivn} + $C(f) = O(\frac{2^n}{n})$ +\end{o2ndivn} +\begin{proof} + Доказательство предлагается почитать самостоятельно (например, в учебнике Вегенера). В нём достаточно много возни. Комментарий Михаила Николаевича: + + \begin{displayquote} + \textit{Идея состоит в том, чтобы вычислить вообще все функции от k переменных, а потом использовать значения этих функций по многу раз в схеме вычисления данной функции f от n переменных. Оптимальный выбор k примерно логарифм n (с каким-то множителем). Более точно, зафиксировав набор значений n-k переменных, получаем функцию от k переменных. Ее мы насчитали на начальном этапе, а теперь уже просто используем. Всего будет $2^{n-k}$ обращений к таким схемам, какие-то будут использоваться чаще, какие-то реже - это зависит от функции f. У Вегенера написаны нужные рекуррентные формулы для этого рассуждения и дается оценка размера схемы, вычисляющей все функции от k переменных.} + \end{displayquote} + +\end{proof} + +\subsection*{Нижняя оценка схемной сложности} +\begin{existsFgthen2ndivn} + Существует функция $f: \{0, 1\}^n \rightarrow \{0, 1\}$ + такая, что $C(f) \geqslant \frac{2^n}{10n}$ + (в точности то же самое, что $C(f) = \Omega(\frac{2^n}{n})$). +\end{existsFgthen2ndivn} +\begin{proof} + Воспоьзуемся мощностным методом. Всего булевых функций от $n$ аргументов $2^{2^n}$. + + Теперь узнаем, сколько булевых схем размера меньше либо равных некоторого фиксированного + числа $L$. Для этого будем кодировать схемы двоичными словами. Посмотрим на + какое-то присваивание в схеме $S$: $g_k = g(g_i, g_j)$. Для кодирования + самой функции $g$ нужно 2 бита (так как в стандартном базисе всего три функции). + Для кодирования номеров аргументов $i$ и $j$ нужно битов не более, чем $log_2L$. + А значит для всего присваивания $g_k$ нужно не более $2 \cdot (1 + log_2L)$ бит. + + Итого размер одной схемы в битах: $L \cdot 2 \cdot (1 + log_2L)$. Каждая схема + кодирует ровно одну функцию. А значит каждое двоичное слово кодирует не более + одной функции (так как некоторые двоичные слова ни одну схему не задают). + + Получается и схем размера $L$ не более, чем двоичных слов для схем такой длины, + то есть: $2^{2L(1 + log_2L)}$. + + Пусть $L = \frac{2^n}{10n}$. Размер схемы в битах тогда будет равен: + \[ + L_2 = \frac{2^n}{10n} \cdot 2 \cdot \left(1 + log_2\left( \frac{2^n}{10n} \right)\right) = + \frac{2^n}{5n} \left( 1 + n - log_2(10n) \right), 1 - log(10n) \leqslant 0 \implies + L_2 \leqslant \frac{2^n}{5n}\cdot n = \frac{2^n}{5} + \] + А значит функций, задающейся схемой такой длины не более чем $2^{\frac{2^n}{5}}$. + Нетрудно заметить, что это число значительно меньше числа функций от $n$ аргументов. + \[ + 2^{\frac{2^n}{5}} < 2^{2^n} + \] + + А значит существует функция, задающаяся схемой длины больше, чем $L$. +\end{proof} + +Всё очень хорошо, но можно ли задать такую функцию явно? К сожалению, с этим есть +некоторые проблемы. В 1984 году нашли $f$ такую, что $C(f) \geqslant 3n$. +Прорывом 2015 стала функция $f$ такая, что +$C(f) \geqslant \left( 3 + \frac{1}{86} \right)n$. + +\subsection*{Схемы для сложения и умножения двоичных чисел. Схема для проверки графа на связность} +Вспомним схему для сложения по модулю 2 из прошлой лекции. На каждом шаге добавлялось 5 присваиваний, значит, справедливо рекуррентное соотношение для количества операций $S_n = S_{n-1} + 5$. Из такого соотношения нетрудно сделать два вывода: +\begin{itemize} + \item $S_n$ вычисляется за O(n). + \item Из того, что $S_1$ --- константа, следует, что $S_n$ --- также константа. +\end{itemize} + +Изучим сложение двоичных чисел. Пусть у нас есть 2 двоичных числа $x : \{x_0, x_1, \ldots, x_{n-1}\}, y : \{y_0, y_1, \ldots, y_{n-1}\}$, где $x_0, x_1, \ldots, x_{n-1}, y_0, y_1, \ldots, y_{n-1}$ --- двоичные разряды. Нужно выполнить схему $f: \{0,1\}^{2n} \rightarrow \{0,1\}^{n+1}$, результатом которой является $z : {z_0, z_1, \ldots, z_n-1}$. + +Вспомним привычный нам алгоритм сложения двоичных чисел поразрядно в столбик. + +$\begin{array}{l.c.c.r} + C_n & C_{n-1} & \ldots & C_0 \\ + \hline 0 & x_{n-1} & \ldots & x_0 \\ + 0 & y_{n-1} & \ldots & y_0 \\ + \hline z_n & z_{n-1} & \ldots & z_0 \\ +\end{array}$ + +Обратим внимание на присутствие $C_0, \ldots, C_n$. Они являются тем числами (0 или 1) которые мы "запоминаем" при сложении и переносим на следующий разряд. Теперь рассмотрим отдельно некоторый $i$-й разряд сложения. + +$\begin{array}{l} + C_i \\ + \hline x_i \\ + y_i \\ + \hline z_i = x_i \oplus y_i \oplus c_i \\ +\end{array}$ + +Нетрудно догадаться, что $z_i$ является суммой по модулю 2 $i$-х разрядов 2 слагаемых и "запомненного" числа от предыдущих разрядов. Возникает вопрос, как схемно выразить $c_{i+1}$ через предыдущие разряды? Оказывается, это также нетрудно сделать, воспользовавшись функцией MAJ: $c_{i+1} = MAJ(x_i, y_i, c_i)$. + +Теперь поговорим о размере такой схемы. Как мы знаем из предыдущей лекции, сложение по модулю 2 и функцию большинства можно выполнить за константное число присваиваний. Получается, для операций $S_n, S_{n-1}$ справедливо рекуррентное соотношение $S_n = S_{n-1} + C$, где $C$ --- некая константа. Из этого можно сделать вывод, что $S_n$ вычисляется за $O(n)$. + +Теперь поговорим об умножении двоичных чисел. Также вспомним "школьную" схему умножения столбик. Как мы помним, нужно сначала посчитать результаты поочередного умножения разрядов $y$ на все разряды $x$: + +\[u_i = y_i(x_0, x_1, \ldots, x_n)\] + +Операция выполняется за $n \cdot O(n) = O(n^2)$. + +Далее мы складываем получившиеся произведения $u_0 + u_1 + \ldots + u_n$. Операция выполнится за $O(n) \cdot O(2n) = O(n^2)$. Итого получаем выполнимость операции за $O(n^2)$. + +Интересной задачей, выражаемой через схемы, является \textit{проверка неориентированного графа на связность}: $Conn: \{0,1\}^{n \choose 2} \rightarrow \{0,1\}$. + +Пусть булева переменная $x_{ij}, \{i,j\} \in F(G)$ принимает заначение 1 в том случае, если между вершинами $i$ и $j$ есть ребро. Рассмотрим функцию от таких булевых переменных. + +Зададим \textit{матрицу смежности} графа. Это матрица $A \in {0, 1}^{n \times n}$, в которой на пересечении строки $i$ со столбцом $j$ стоит 1 тогда и только тогда, когда данные вершины связаны ребром. Такую матрицу и подадим на вход функции $Conn$. Заметим, что матрица смежности симметрична и на диагонали у нее обязательно стоят нули (мы запрещали петли --- ребра, ведущие из вершины в нее же саму). + +\[A = \begin{pmatrix} 0 & \ldots & x_{1n} \\ x_{21} & \ldots & x_{2n} \\ \vdots & \ddots & \vdots \\ x_{n1} & \ldots & 0 \end{pmatrix}\] + +Рассмотрим матрицу $A'$, которая отличается от матрицы $A$ тем, что у нее на главной диагонали стоят единицы, а не нули (в остальном +матрицы совпадают).В терминах графов это означает, что к каждой вершине мы добавляем петлю. В модели простых неориентированных графов мы этого не допускали, но ничего не мешает нам рассмотреть графы с петлями. Идея состоит в том, что теперь, если между двумя вершинами есть путь длины меньше $n - 1$, то есть и путь длины ровно $n - 1$ (достаточно добавить к пути нужное количество петель). Нам достаточно взглянуть на $(A')^{n - 1}$. Если в ячейках этой матрицы нет нулей, то граф связен, иначе не связен. + +\[A' = \begin{pmatrix} 1 & \ldots & x_{1n} \\ x_{21} & \ldots & x_{2n} \\ \vdots & \ddots & \vdots \\ x_{n1} & \ldots & 1 \end{pmatrix}\] + +Также упрощение можно провести со способом возведения матрицы в степень. В данный момент мы это делаем над действительными числами, что заставляет нас складывать и умножать целые числа. Чтобы делать это с помощью схем, нам придется использовать описанные выше схемы для сложения и умножения, а чтобы оценить размер получившейся схемы придется оценивать величину возникающих в процессе +вычислений целых чисел. Все это не очень хочется делать. Решение состоит в том, чтобы вместо умножения матриц над целыми числами воспользоваться так называемым \textit{булевым умножением матриц}. В нем формулы для умножения матриц такие же, как и в обычном умножении, только вместо операции умножения используется конъюнкция, а вместо сложения --- дизъюнкция. Тогда можно по индукции доказать, что в (булевой) матрице $A'^k$ на пересечении строки $i$ и столбца $j$ стоит 1 тогда и только тогда, когда в графе есть путь из вершины $i$ в вершину $j$ длины не больше $k$. Теперь мы готовы описать схему для проверки графа на связность. На вход схема +(по существу) получает матрицу смежности $A'$. Схема последовательно вычисляет булевы степени этой матрицы $A'^2, \ldots A'^{n - 1}$. Затем схема вычисляет конъюнкцию всех ячеек матрицы $A'^{n - 1}$ и подает ее на выход. + +Оценим размер получившийся схемы. Для булева умножения двух булевых матриц размер $n \times n$ достаточно $n^2 \cdots O(n) = O(n^3)$ операций (каждая ячейка произведения матриц вычисляется за линейное число операций, всего ячеек $n^2$). Всего нам нужно $(n - 1)$ умножение матриц, так что для вычисления матрицы $A'^{n - 1}$ достаточно $O(n^4)$ операций. На последний этап (конъюнкция ячеек $A'^{n - 1}$ нужно $O(n^2)$ операций, итого получается $O(n^4) + O(n^2) = O(n^4)$ операций. + +%\subsection*{Немного про машины Тьюринга (под конец)}% + +\end{document} diff --git a/discrete-math/tex/22.02.2016/main.pdf b/discrete-math/tex/22.02.2016/main.pdf new file mode 100644 index 0000000..fa4e4d5 Binary files /dev/null and b/discrete-math/tex/22.02.2016/main.pdf differ diff --git a/discrete-math/tex/22.02.2016/main.tex b/discrete-math/tex/22.02.2016/main.tex new file mode 100644 index 0000000..3965e80 --- /dev/null +++ b/discrete-math/tex/22.02.2016/main.tex @@ -0,0 +1,271 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{algorithmicx, algorithm} +\usepackage{algpseudocode} +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{enumitem} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{usp-rais}{Теорема Успенского-Райса} +\newtheorem*{rec}{Свойство рекурсии} +\newtheorem*{point}{Теорема о неподвижной точке} + + +%18.01.2016 +\newtheorem*{theorem}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definition}{\underline{Определение:} } +\newcommand{\definitionone}{\underline{Определение 1:} } +\newcommand{\definitiontwo}{\underline{Определение 2:} } +\newcommand{\statement}{\underline{Утверждение:} } +\newcommand{\note}{\underline{Замечание:} } +\newcommand{\sign}{\underline{Обозначения:} } +\newcommand{\statements}{\underline{Утверждения:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} + + + +\begin{document} +\title{Дискретная математика. Модуль 3. Лекция 7} +\author{Лекторий ПМИ ФКН 2015-2016\\Гринберг Вадим\\Жижин Пётр\\Пузырев Дмитрий} +\date{22 февраля 2016} + +\maketitle + +Возвращаясь к материалам предыдущей лекции, там было введено понятие универсальной +функции. Однако непонятны свойства этой функции. Что можно сделать с этой +функцией? Что можно узнать о программе, зная её номер? +Этим и другими вопросами занимается раздел ``Автоматическая обработка программ''. + +\note По сравнению с лекцией ход изложения материала был изменён для простоты +письменного изложения. + +Перед тем как доказать главную теорему введём несколько определений и докажем несколько +свойств. + +\definition{Главная универсальная функция (гёделева) -- такая универсальная функция, +что для любой вычислимой функции $V(n,\ x)$ существует всюду определённая +вычислимая функция $s(n)$, что: + \[ + \forall\ n,\ x \Rightarrow V(n,\ x) = U(s(n),\ x). + \] +} + +Неформально это значит, что главная универсальная функция позволяет транслировать +в себя любую другую унивесальная функция. Ну, вот например, есть язык C++, его можно +назвать главной универсальной функцией так как любую программу на другом универсальном +языке можно переписать на C++ автоматически (при помощи \emph{транслятора}). + +\begin{point} + Пусть $U$ -- главная универсальная функция, $h(n)$ -- любая всюду определённая вычислимая функция. Тогда: + + \[ + \exists\ q \ : \ U(q,\ x) = U(h(q),\ x). + \] +\end{point} + +Честно сказать, не все учёные понимают эту теорему, однако её можно объяснить неформально +так: для любой программы на любом универсальном языке существует ещё одна программа, +которая делает то же самое (то есть программы совпадают). + +\begin{proof} + Для начала найдем такую функцию $f(p): \forall g(p) - \text{вычислимой } + \exists p: f(p) = g(p)$. В действительности, она существует, вот например: + $f(p) = U(p, p)$. Тогда $g(p)$ тоже имеет какой-то номер $q$ и тогда + $g(q) = U(q, q) = f(q)$. + + Рассмотрим функцию $V(p, x) = U(f(p), x)$. Тогда $V(p, x)$ -- универсальная, + ведь если была функция $\varphi$ с номером $k$, тогда в некоторой точке $f(p)$ + принимает значение $k$ и $\varphi(x) = U(f(p), x) = V(p, x)$. + Тогда (по определению главной универсальной функции) $V(p, x) = U(s(p), x)$. + + Соберём все вместе и получим: $U(f(p), x) = V(p, x) = U(s(p), x)$. Заметим, + что $f(p)$ не обязана быть всюдуопределённой, а $s(p)$ уже всюдуопределена. + + Тогда вспомним про нашу функцию $h(n)$ из условия и введём функцию $g(p) = h(s(p))$. + Тогда (по построению функции $f$): $\exists p : g(p) = f(p)$. + + Опять же, собираем всё вместе: + \[ + \exists p : U(s(p), x) = V(p, x) = U(f(p), x) = U(g(p), x) = U(h(s(p)), x) + \] + Пусть $q = s(p)$. Тогда: + \[ + \exists q : U(q, x) = U(h(q), x) + \] +\end{proof} + +Нам теорема о неподвижной точке нужна только чтобы доказать следующее утверждение: + +\begin{rec} + Для любой вычислимой функции $V(n,\ x)$ и главной универсальной + функции $U(n, x)$ существует $q$ такое, что: + + \[ + V(q,\ x) = U(q,\ x). + \] + +\end{rec} + +\begin{proof} + Найдем $s(n): V(n, x) = U(s(n), x)$. $s(n)$ -- всюдуопределённая. + Тогда (по теореме о неподвижной точке) + $\exists q : V(q, x) = U(s(q), x) = U(q, x)$. +\end{proof} + +Теперь главный вопрос: пусть есть некоторое свойство, которое мы хотим проверить +для некоторой функции. + +Перепишем наше условие в более формальном виде: +Пусть $\{f:\N\to\N\}$ -- множество вычислимых функций. +Разделим его на два непересеающихся подмножества $A$ и $\overline{A}$. +\[ +\{f\ |\ f:\N\to\N\} = A \cup \overline{A} +\] +$A$ -- множество тех функций, для которых выполняется свойство, +$\overline{A}$ -- множество тех функций, для которых это не выполняется. + +Возьмём некоторую универсальню функцию $U(p,\ x)$. + +Обозначим за $P_A$ множество всех $p$ таких, что $U(p,\ x) \in A$. +\[ +P_A = \{p\ |\ U(p, x) \in A\} +\] + + +Тогда вопрос можно поставить так: разрешимо ли множество +программ, удовлетворяющих нашему свойству? На этот вопрос и отвечает теорема +Успенского-Райса. +\begin{usp-rais} + Если $A$ -- нетривиально ($A \neq \oslash,\ \overline{A} \neq \oslash$), а $U(q,\ x)$ -- главная универсальная функция, то множество $P_A$ неразрешимо. +\end{usp-rais} +Введём для удобства ещё функции $\varepsilon \in \overline{A}$ (нигде не +определённая) и $\xi \in A$ (какая-то функция, удовлетворяющая условию). +Сделать это можно по аксиоме выбора. + +Если $A$ -- это множество нигде не определённых функций, то поменяем их +местами так как $P_A$ разрешимо тогда и только тогда, когда его +дополнение разрешимо. + +\begin{proof}[Доказательство 1] + Пусть $P_A$ разрешимо. Тогда существует всюдуопределённая + характеристическая функция $\chi_{P_A}$. + Построим алгоритм на странице \pageref{algo:usp-rais-proof1} + (алгоритм \ref{algo:usp-rais-proof1}). + \begin{algorithm} + \caption{Алгоритм, создающий противоречие для разрешимости $P_A$ в док-ве 1} + \label{algo:usp-rais-proof1} + \begin{algorithmic} + \Function{problem}{x} + \If{$\chi_{P_A}$} + \State \Return $\xi(x)$ + \Else + \State \Return $\varepsilon(x)$. + \EndIf + \EndFunction + \end{algorithmic} + \end{algorithm} + + Он имеет некоторый номер $p$ (который использован в программе) в $U$. + \begin{itemize} + \item $p \in P_A$. Тогда $U_p(x) = \varepsilon(x)$, + но $\varepsilon(x) \in \overline{A} \implies + p \notin P_A$. Противоречие. + + \item $p \notin P_A$. Тогда $U_p(x) = \xi(x)$, но + $\xi(x) \in A \implies p \in P_A$. Противоречие. + \end{itemize} + Значит алгоритма разрешения не существует. + + Может показаться, что использование номера программы в ней самой недопустимо, + однако по свойству рекурсии это делать абсолютно законно. +\end{proof} + +\begin{proof}[Доказательство 2] + Пусть есть алгоритм, который строит алгоритм по номеру из шаблона + (функция $\varphi : n \mapsto p_n$). Алгоритм выглядит так, как показано + на странице \pageref{algo:usp-rais-proof2} (алгоритм \ref{algo:usp-rais-proof2}). + + \begin{algorithm} + \caption{Шаблон алгоритма $p_n$ для функции $\varphi$ в док-ве 2} + \label{algo:usp-rais-proof2} + \begin{algorithmic} + \Function{problem}{x} + \State $U(n, n)$ + \State \Return $\xi(x)$ + \EndFunction + \end{algorithmic} + \end{algorithm} + + Пусть $H = \{ n\ |\ U(n, n) \text{ останавливается} \}$. + Рассмотрим два случая: + \begin{enumerate} + \item $n \in H \implies U(p_n, x) = \xi(x)$. + \item $n \notin H \implies U(p_n, x) = \varepsilon(x)$. + \end{enumerate} + Что это значит? Это значит, что мы выразили (по факту) + одну характеристическую функцию через другую: + \[ \chi_H(n) = (\chi_{P_A} \circ \varphi)(n) \] + \[ n \in H \iff p_n \in P_A \] + + Если $\chi_{P_A}$ вычислима, то вычислима и $\chi_H$, однако это не так. + + Так как функция $U$ -- главная, то $\varphi$ представима в виде функции + от двух аргументов $V(n, x)$ (номера шаблона и аргумента). + \[ U(p_n, x) = V(n, x) = U(s(n), x) \] + + Значит $\chi_{P_A}$ не является вычислимой. + +\end{proof} + +Мы в доказательстве пользовались тем, что $U(p, x)$ -- главная универсальная +функция. А может быть эта теорема верна вообще для всех универсальных +функций? Но нет, это не так: + +\statement Существует универсальная функция $V$ и нетривиальное множество $A$, +что $A$ разрешимо. +\begin{proof} + Будем пользоваться фактом из Домашнего задания 19 (номер 4): + множество $Comp \setminus \{\varepsilon(x)\}$ перечислимо. + $p$ -- номера программ этого множества, а $\widetilde{p}$ -- множество чисел $p$. + + $\widetilde{p} = f(\N)$ -- всюдуопределённой вычислимой (прошлая лекция). + + Введём функцию $V$: + \[ + V = \begin{cases} + \text{не определена},\ n = 0 \\ + U(f(n-1), x),\ n > 0 + \end{cases} + \] + + Нетрудно заметить, что $V$ -- универсальная. + + Пусть $Comp \setminus \{\varepsilon(x)\} = \overline{A} \implies P_A = \{0\}$ + -- номер в $V$. А любое конечное множество разрешимо. +\end{proof} + +\end{document} diff --git a/discrete-math/tex/25.01.2016/discrete-math_17_[25.01.2016].tex b/discrete-math/tex/25.01.2016/discrete-math_17_[25.01.2016].tex new file mode 100644 index 0000000..5cecf57 --- /dev/null +++ b/discrete-math/tex/25.01.2016/discrete-math_17_[25.01.2016].tex @@ -0,0 +1,268 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{enumitem} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} + +%18.01.2016 +\newtheorem*{on2n}{Теорема} +\newtheorem*{o2ndivn}{Теорема} +\newtheorem*{existsFgthen2ndivn}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definition}{\underline{Определение:} } +\newcommand{\statement}{\underline{Утверждение:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} + + + +\begin{document} +\title{Дискретная математика. Модуль 3. Лекция 3} +\author{Лекторий ПМИ ФКН 2015-2016\\Гринберг Вадим\\Жижин Пётр\\Пузырев Дмитрий} +\date{25 января 2016} + +\maketitle +\section{Равномощные множества. Конечные и бесконечные. Счётные множества. Свойства счётных множеств} +\subsection*{Равномощные множества. Конечные множества} +\definition Равномощными множествами называются такие множества, +между которыми установима биекция. Обозначение: $A \sim B$. + +\underline{Очевидные свойства равномощных множеств:} $\forall A$ -- множеств. +\begin{itemize} + \item $A \sim A$. + \item $A \sim B \Rightarrow B \sim A$. + \item $A \sim B, B \sim C \Rightarrow A \sim C$. +\end{itemize} + +\definition Множество $A$ -- конечно тогда и только тогда, +когда $\exists n \in \N_0: A \sim [n]$ ($[n] = \left\{ 1, 2, \ldots, n \right\}, [0] = \varnothing$). + +Но ведь могло бы так получиться, что $[n] \sim [k]$? Оказывается, нет. + +\statement Если $n > k \Rightarrow [n] \nsim [k]$. +\begin{proof} + Докажем по индукции от $n$. + \begin{description} + \item[\textbf{База}] \hfill \\ + $n = 0 \Rightarrow \forall k \Rightarrow n < k \Rightarrow $ + Нет таких множеств $\Rightarrow [n] \nsim [k]$. + \item[\textbf{Предположение}] \hfill \\ + $\forall j \leqslant n \Rightarrow \forall k < j \Rightarrow [j] \nsim [k]$. + \item[\textbf{Переход}] \hfill \\ + $k < n + 1$. Доказать: $[n+1] \nsim [k]$. Предположим это не так. + + Тогда существует функция $f: [n+1] \to [k]$ и $f$ -- биекция. + Пусть $f(n+1) = b$. Но $b$ может и не совпадать с $k$. Для этого введём + транспозицию $\tau: [k] \to [k], \tau(b) = k, \tau(k)=b, + \forall i \neq k, i \neq b \Rightarrow \tau(i)=i$. + + Получили функцию $g = \tau \circ f$. Причем $g$ -- биекция как композиция + двух биекций. $g(n+1)=\tau(b)=k$ и $g([n])=[k-1]$ (так как $g$ -- биекция). + + Получили биекцию $g: [n] \to [k-1], k - 1 < n$, а это противоречит + предположению индукции ($k-1 < j = n$). + + А значит $[n+1] \nsim [k]$. + \end{description} +\end{proof} +\subsection*{Бесконечные множества. Счётные множества} +\definition Множество бесконечно тогда и только тогда, когда оно не конечно. + +$A$ -- бесконечно. Значит $A$ -- не пусто. $\exists a_o \in A$. +Пусто ли $A\setminus {a_0}$? Нет. Иначе $A$ -- содержит один элемент и конечно. +Тогда $\exists a_1 \in A\setminus {a_0}$. Множество и без этих двух элементов +бесконечно. Ну и так далее. + +\definition Получившееся множество $A' = \{a_0, a_1, a_2, \ldots, a_n, \ldots\}$ +назовем счётным (равномощным множеству натуральных чисел). +Биекция в этом случае очевидна: $f: i \mapsto a_i$. + +\statement $\N$ -- бесконечно. +\begin{proof} + Пусть это не так и $\exists f: [n] \to \N$ -- инъекция. Тогда верно следующее: + $\N \ni max\{f(0), f(1), \ldots, f(n)\}+1 \notin f([n])$. А значит $f$ -- не биекция. + А значит $\N$ не равномощно никакому $[n]$. +\end{proof} + +Заметим вот что: $\N \setminus \{0\} \to \N$ путём биекции $f: n \mapsto n-1$. + +\statement Множество бесконечно тогда и только тогда, когда оно равномощно +своему подмножеству. +\begin{proof} + Докажем, что если множество бесконечно, то оно равномощно некоторому подмножеству. + + Как мы уже выяснили, в любом бесконечном множестве есть счётное подмножество. + Пусть $B = \{b_0, b_1, \ldots, b_n, \ldots\}$ -- счётное подмножество + бесконечного множества $A$. + + Установим биекцию $f: A \setminus \{b_0\} \to A$. + \[ + f(x) = \begin{cases} + b_{n-1}, x \in B \\ + x, x \notin B + \end{cases} + \] + Получили то, что и требовалось. + + В обратную сторону доказывается на семинарах, но примерно так: + пусть $B \subset A, B \sim A$. Пусть $A$ -- конечно. Тогда $|B| < |A|$ +\end{proof} + +\subsection*{Свойства счётных множеств} +\begin{enumerate} + \item + \label{prop:AsubsetA} + $A$ -- счётное множество. Тогда $A' \subseteq A$ счётно или конечно. + \begin{proof} + $A = \{a_0, a_1, \ldots, a_n, \ldots\}$. Вычеркнем все элементы, в $A'$ + не входящие. $A' = \{a_{j_0}, a_{j_1}, \ldots, a_{j_n}, \ldots\}$. + + Если последовательность $\{a_{j_n}\}$ конечна, то и $A'$ конечно. + Если она бесконечна, то $A'$ очевидно счётно. + \end{proof} + \item + \label{prop:acupb} + Если $A,B$ -- счётные, то и $A \cup B$ счётно. + \begin{proof} + $A = (a_0, a_1, \ldots, a_n, \ldots)$. + $B = (b_1, b_2, \ldots, b_n, \ldots)$. + + $A \cup B = (a_0, b_0, a_1, b_1 \ldots, a_n, b_n, \ldots)$. + + Но может получиться так, что в новой последовательности некоторые элементы + встречаются по два раза (они входят в оба множества). Вычеркнем + каждый такой элемент по одному разу. И получим последовательность, + задающую счётное множество. + \end{proof} + \item $\Z$ -- счётно. + \begin{proof} + $Z = \N \cup (-\N)$ -- объединение счётных множеств. Счётно по свойству + \ref{prop:acupb} ($-A = \{-a \ |\ a \in A\}$). + \end{proof} + \item + \label{prop:acupbnotinf} + Если $A$ -- счётно, а $B$ -- конечно или счётно, то $A \cup B$ счётно. + \begin{proof} + Доказывается аналогично свойству \ref{prop:acupb}. + \end{proof} + \item Если $A$ -- счётно. И $B_1, B_2, \ldots, B_k$ -- счётны или конечны, то + $A \cup B_1 \cup \ldots \cup B_k$ -- счётно. + \begin{proof} + К доказательству свойства \ref{prop:acupbnotinf} нужно добавить + доказательство по индукции. + \end{proof} + \item + \label{prop:Fsetcup} + Счётное объединение конечных или бесконечных множеств конечно или счётно. + + $\{A_0, A_1, \ldots, A_n, \ldots\} = \mathfrak{F} \sim \N$. $A_i$ -- множество. + $\mathfrak{F}$ называется семейством множеств. + $A = \bigcup\limits_{i=0}^{\infty} A_i$. + + \statement $A$ -- счётно. + \begin{proof} + \begin{align*} + A_0 &= (a_{00}, a_{01}, \ldots, a_{0n}, \ldots) \\ + A_1 &= (a_{10}, a_{11}, \ldots, a_{1n}, \ldots) \\ + \end{align*} + Некоторые из множеств могут быть конечны. Дополним их до счётных + пустым символом $\lambda \notin A$. + + Построим последовательность: $a_{00}, a_{01}, a_{10}, a_{02}, + a_{11}, a_{20}, \ldots$. (то есть проходим последовательно все значения + сумм индексов от $0$ до $\infty$). + + Теперь исключим из последовательности повторения и символы $\lambda$. + Получим требуемую последовательность $(a'_0, a'_1, \ldots, a'_n, \ldots)$. + + Теперь получим функцию $f: [n] \to A$ или $f: \N \to A$. $f$ -- биекция. + В первом случае множество конечно, во втором счётно. + + Можно было бы и не вводить $\lambda$, а исключать эти элементы сразу, + но так проще (нет никаких условий). + \end{proof} + + \underline{Примеры:} + \begin{itemize} + \item Пусть $A_i = \{i\}$. Тогда $A = \N$ (счётно). + \item Пусть $A_i = \{1\}$. Тогда $A = \{1\}$ (конечно). + \end{itemize} + + \item + \label{prop:CartProdAB} + Декартово произведение счётных множеств счётно. + Напомним, что \[A \times B = \left\{ (a; b)\ |\ a \in A, b \in B \right\}\] + \begin{proof} + $A = (a_0, \ldots, a_n, \ldots) \Rightarrow + A \times B = \{a_0\} \times B \cup \ldots \cup + \{a_n\} \times B \cup \ldots \Rightarrow A \times B $ -- счётно + (по свойству \ref{prop:Fsetcup}). + \end{proof} + \item + \label{prop:Apown} + Если $A$ -- счётно, то $A^k$ -- счётно. + \begin{proof} + Очевидно по индукции из свойства \ref{prop:CartProdAB}. + \end{proof} + \item $\Q$ -- счётно. + \begin{proof} + Рассмотрим множество $\Q_p$ несократимых дробей. + Пусть функция $f: \Q_p \to \Z \times \N_+$ -- инъекция + (она переводит дробь в пару чисел числитель-знаменатель). + Тогда она является биекцией на $f(\Q_p) \subset \Z \times \N_+$. + Причём $f(\Q_p)$ тогда счётно по свойству \ref{prop:AsubsetA} + так как не является конечным, а $\Z \times \N_+$ счётно + по свойству \ref{prop:CartProdAB}. + \end{proof} + \item Пусть $A^*$ -- конечные последовательности конечного (непустого) или + счётного алфафита $A$. + + \statement $A^*$ -- счётно + \begin{proof} + $A^* = \bigcup\limits_{n=0}^{\infty} A^n$. При этом $A^n$ -- слова длины $n$. + $A^n$ -- счётно по свойству \ref{prop:Apown}. И тогда само $A^*$ счётно + по свойству \ref{prop:Fsetcup}. + \end{proof} + \item \definition $\alpha \in \R$ -- алгебраическое число тогда и только тогда, + когда $\alpha$ -- корень некоторого многочлена с целыми коэфициентами. + + \statement Множество алгебраических чисел счётно. + \begin{proof} + Приведём только план доказательства: + \begin{enumerate} + \item Докажем, что многочленов с целыми коэфициентами счётно. + \item Для каждого из этих многочленов есть не более $n$ корней -- + алгебраических чисел. + \item Удаляем повторяющиеся корни. + \item Получим все алгебраические числа, которых, очевидно, + счётно. + \end{enumerate} + \end{proof} +\end{enumerate} + +\end{document} diff --git a/discrete-math/tex/25.01.2016/main.pdf b/discrete-math/tex/25.01.2016/main.pdf new file mode 100644 index 0000000..ce87a43 Binary files /dev/null and b/discrete-math/tex/25.01.2016/main.pdf differ diff --git a/discrete-math/tex/25.01.2016/main.tex b/discrete-math/tex/25.01.2016/main.tex new file mode 100644 index 0000000..41cfca6 --- /dev/null +++ b/discrete-math/tex/25.01.2016/main.tex @@ -0,0 +1,268 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{enumitem} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} + +%18.01.2016 +\newtheorem*{on2n}{Теорема} +\newtheorem*{o2ndivn}{Теорема} +\newtheorem*{existsFgthen2ndivn}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definition}{\underline{Определение:} } +\newcommand{\statement}{\underline{Утверждение:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} + + + +\begin{document} +\title{Дискретная математика. Модуль 3. Лекция 3} +\author{Лекторий ПМИ ФКН 2015-2016\\Гринберг Вадим\\Жижин Пётр\\Пузырев Дмитрий} +\date{25 января 2016} + +\maketitle +\section{Равномощные множества. Конечные и бесконечные. Счётные множества. Свойства счётных множеств} +\subsection*{Равномощные множества. Конечные множества} +\definition Равномощными множествами называются такие множества, +между которыми установима биекция. Обозначение: $A \sim B$. + +\underline{Очевидные свойства равномощных множеств:} $\forall A$ -- множеств. +\begin{itemize} + \item $A \sim A$. + \item $A \sim B \Rightarrow B \sim A$. + \item $A \sim B, B \sim C \Rightarrow A \sim C$. +\end{itemize} + +\definition Множество $A$ -- конечно тогда и только тогда, +когда $\exists n \in \N_0: A \sim [n]$ ($[n] = \left\{ 1, 2, \ldots, n \right\}, [0] = \varnothing$). + +Но ведь могло бы так получиться, что $[n] \sim [k]$? Оказывается, нет. + +\statement Если $n > k \Rightarrow [n] \nsim [k]$. +\begin{proof} + Докажем по индукции от $n$. + \begin{description} + \item[\textbf{База}] \hfill \\ + $n = 0 \Rightarrow \forall k \Rightarrow n < k \Rightarrow $ + Нет таких множеств $\Rightarrow [n] \nsim [k]$. + \item[\textbf{Предположение}] \hfill \\ + $\forall j \leqslant n \Rightarrow \forall k < j \Rightarrow [j] \nsim [k]$. + \item[\textbf{Переход}] \hfill \\ + $k < n + 1$. Докажать: $[n+1] \nsim [k]$. Предположим это не так. + + Тогда существует функция $f: [n+1] \to [k]$ и $f$ -- биекция. + Пусть $f(n+1) = b$. Но $b$ может и не совпадать с $k$. Для этого введём + транспозицию $\tau: [k] \to [k], \tau(b) = k, \tau(k)=b, + \forall i \neq k, i \neq b \Rightarrow \tau(i)=i$. + + Получили функцию $g = \tau \circ f$. Причем $g$ -- биекция как композиция + двух биекций. $g(n+1)=\tau(b)=k$ и $g([n])=[k-1]$ (так как $g$ -- биекция). + + Получили биекцию $g: [n] \to [k-1], k - 1 < n$, а это противоречит + предположению индукции ($k-1 < j = n$). + + А значит $[n+1] \nsim [k]$. + \end{description} +\end{proof} +\subsection*{Бесконечные множества. Счётные множества} +\definition Множество бесконечно тогда и только тогда, когда оно не конечно. + +$A$ -- бесконечно. Значит $A$ -- не пусто. $\exists a_o \in A$. +Пусто ли $A\setminus {a_0}$? Нет. Иначе $A$ -- содержит один элемент и конечно. +Тогда $\exists a_1 \in A\setminus {a_0}$. Множество и без этих двух элементов +бесконечно. Ну и так далее. + +\definition Получившееся множество $A' = \{a_0, a_1, a_2, \ldots, a_n, \ldots\}$ +назовем счётным (равномощным множеству натуральных чисел). +Биекция в этом случае очевидна: $f: i \mapsto a_i$. + +\statement $\N$ -- бесконечно. +\begin{proof} + Пусть это не так и $\exists f: [n] \to \N$ -- инъекция. Тогда верно следующее: + $\N \ni max\{f(0), f(1), \ldots, f(n)\}+1 \notin f([n])$. А значит $f$ -- не биекция. + А значит $\N$ не равномощно никакому $[n]$. +\end{proof} + +Заметим вот что: $\N \setminus \{0\} \to \N$ путём биекции $f: n \mapsto n-1$. + +\statement Множество бесконечно тогда и только тогда, когда оно равномощно +собственному подмножеству. +\begin{proof} + Докажем, что если множество бесконечно, то оно равномощно некоторому подмножеству. + + Как мы уже выяснили, в любом бесконечном множестве есть счётное подмножество. + Пусть $B = \{b_0, b_1, \ldots, b_n, \ldots\}$ -- счётное подмножество + бесконечного множества $A$. + + Установим биекцию $f: A \setminus \{b_0\} \to A$. + \[ + f(x) = \begin{cases} + b_{n-1}, x \in B \\ + x, x \notin B + \end{cases} + \] + Получили то, что и требовалось. + + В обратную сторону доказывается на семинарах, но примерно так: + пусть $B \subset A, B \sim A$. Пусть $A$ -- конечно. Тогда $|B| < |A|$ +\end{proof} + +\subsection*{Свойства счётных множеств} +\begin{enumerate} + \item + \label{prop:AsubsetA} + $A$ -- счётное множество. Тогда $A \subseteq A$ счётно или конечно. + \begin{proof} + $A = \{a_0, a_1, \ldots, a_n, \ldots\}$. Вычеркнем все элементы, в $A'$ + не входящие. $A' = \{a_{j_0}, a_{j_1}, \ldots, a_{j_n}, \ldots\}$. + + Если последовательность $\{a_{j_n}\}$ конечна, то и $A'$ конечно. + Если она бесконечна, то $A'$ очевидно счётно. + \end{proof} + \item + \label{prop:acupb} + Если $A,B$ -- счётные, то и $A \cup B$ счётно. + \begin{proof} + $A = (a_0, a_1, \ldots, a_n, \ldots)$. + $B = (b_1, b_2, \ldots, b_n, \ldots)$. + + $A \cup B = (a_0, b_0, a_1, b_1 \ldots, a_n, b_n, \ldots)$. + + Но может получиться так, что в новой последовательности некоторые элементы + встречаются по два раза (они входят в оба множества). Вычеркнем + каждый такой элемент по одному разу. И получим последовательность, + задающую счётное множество. + \end{proof} + \item $\Z$ -- счётно. + \begin{proof} + $Z = \N \cup (-\N)$ -- объединение счётных множеств. Счётно по свойству + \ref{prop:acupb} ($-A = \{-a \ |\ a \in A\}$). + \end{proof} + \item + \label{prop:acupbnotinf} + Если $A$ -- счётно, а $B$ -- конечно или счётно, то $A \cup B$ счётно. + \begin{proof} + Доказывается аналогично свойству \ref{prop:acupb}. + \end{proof} + \item Если $A$ -- счётно. И $B_1, B_2, \ldots, B_k$ -- счётны или конечны, то + $A \cup B_1 \cup \ldots \cup B_k$ -- счётно. + \begin{proof} + К доказательству свойства \ref{prop:acupbnotinf} нужно добавить + доказательство по индукции. + \end{proof} + \item + \label{prop:Fsetcup} + Счётное объединение конечных или бесконечных множеств конечно или счётно. + + $\{A_0, A_1, \ldots, A_n, \ldots\} = \mathfrak{F} \sim \N$. $A_i$ -- множество. + $\mathfrak{F}$ называется семейством множеств. + $A = \bigcup\limits_{i=0}^{\infty} A_i$. + + \statement $A$ -- счётно. + \begin{proof} + \begin{align*} + A_0 &= (a_{00}, a_{01}, \ldots, a_{0n}, \ldots) \\ + A_1 &= (a_{10}, a_{11}, \ldots, a_{1n}, \ldots) \\ + \end{align*} + Некоторые из множеств могут быть конечны. Дополним их до счётных + пустым символом $\lambda \notin A$. + + Построим последовательность: $a_{00}, a_{01}, a_{10}, a_{02}, + a_{11}, a_{20}, \ldots$. (то есть проходим последовательно все значения + сумм индексов от $0$ до $\infty$). + + Теперь исключим из последовательности повторения и символы $\lambda$. + Получим требуемую последовательность $(a'_0, a'_1, \ldots, a'_n, \ldots)$. + + Теперь получим функцию $f: [n] \to A$ или $f: \N \to A$. $f$ -- биекция. + В первом случае множество конечно, во втором счётно. + + Можно было бы и не вводить $\lambda$, а исключать эти элементы сразу, + но так проще (нет никаких условий). + \end{proof} + + \underline{Примеры:} + \begin{itemize} + \item Пусть $A_i = \{i\}$. Тогда $A = \N$ (счётно). + \item Пусть $A_i = \{1\}$. Тогда $A = \{1\}$ (конечно). + \end{itemize} + + \item + \label{prop:CartProdAB} + Декартово произведение счётных множеств счётно. + Напомним, что \[A \times B = \left\{ (a; b)\ |\ a \in A, b \in B \right\}\] + \begin{proof} + $A = (a_0, \ldots, a_n, \ldots) \Rightarrow + A \times B = \{a_0\} \times B \cup \ldots \cup + \{a_n\} \times B \cup \ldots \Rightarrow A \times B $ -- счётно + (по свойству \ref{prop:Fsetcup}). + \end{proof} + \item + \label{prop:Apown} + Если $A$ -- счётно, то $A^k$ -- счётно. + \begin{proof} + Очевидно по индукции из свойства \ref{prop:CartProdAB}. + \end{proof} + \item $\Q$ -- счётно. + \begin{proof} + Рассмотрим множество $\Q_p$ несократимых дробей. + Пусть функция $f: \Q_p \to \Z \times \N_+$ -- инъекция + (она переводит дробь в пару чисел числитель-знаменатель). + Тогда она является биекцией на $f(\Q_p) \subset \Z \times \N_+$. + Причём $f(\Q_p)$ тогда счётно по свойству \ref{prop:AsubsetA} + так как не является конечным, а $\Z \times \N_+$ счётно + по свойству \ref{prop:CartProdAB}. + \end{proof} + \item Пусть $A^*$ -- конечные последовательности конечного (непустого) или + счётного алфафита $A$. + + \statement $A^*$ -- счётно + \begin{proof} + $A^* = \bigcup\limits_{n=0}^{\infty} A^n$. При этом $A^n$ -- слова длины $n$. + $A^n$ -- счётно по свойству \ref{prop:Apown}. И тогда само $A^*$ счётно + по свойству \ref{prop:Fsetcup}. + \end{proof} + \item \definition $\alpha \in \R$ -- алгебраическое число тогда и только тогда, + когда $\alpha$ -- корень некоторого многочлена с целыми коэфициентами. + + \statement Множество алгебраических чисел счётно. + \begin{proof} + Приведём только план доказательства: + \begin{enumerate} + \item Докажем, что многочленов с целыми коэфициентами счётно. + \item Для каждого из этих многочленов есть не более $n$ корней -- + алгебраических чисел. + \item Удаляем повторяющиеся корни. + \item Получим все алгебраические числа, которых, очевидно, + счётно. + \end{enumerate} + \end{proof} +\end{enumerate} + +\end{document} diff --git a/discrete-math/tex/discrete-math_colloquium-definitions.tex b/discrete-math/tex/discrete-math_colloquium-definitions.tex new file mode 100644 index 0000000..754b7a8 --- /dev/null +++ b/discrete-math/tex/discrete-math_colloquium-definitions.tex @@ -0,0 +1,977 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{algorithmicx, algorithm} +\usepackage{algpseudocode} +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{enumitem} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{usp-rais}{Теорема Успенского-Райса} +\newtheorem*{rec}{Свойство рекурсии} +\newtheorem*{point}{Теорема о неподвижной точке} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} +\newtheorem*{algo1}{Первое свойство алгоритмов} + + + +%18.01.2016 +\newtheorem*{theorem}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definition}{\underline{Определение:} } +\newcommand{\definitions}{\underline{Определения:} } +\newcommand{\definitionone}{\underline{Определение 1:} } +\newcommand{\definitiontwo}{\underline{Определение 2:} } +\newcommand{\statement}{\underline{Утверждение:} } +\newcommand{\note}{\underline{Замечание:} } +\newcommand{\sign}{\underline{Обозначения:} } +\newcommand{\statements}{\underline{Утверждения:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} + + + +\begin{document} +\title{Дискретная математика.\\ Коллоквиум.} +\author{Лекторий ПМИ ФКН 2015-2016\\ Определения 1 и 2: Вельдяйкин Николай и Бубнова Валерия \\ Определения 3 и 4, Вероятность и Машины Тьюринга: Гринберг Вадим \\ Дополнение 10: Вельдякин Николай} +\date{16-21 марта 2016} + +\maketitle + +\part*{Определения} + +\section*{1. Функции, определение с помощью графика функции. Образы и прообразы множеств} +\textit{По простому:} Функция $f$ -- когда каждому элементу $x$ из некоторого множества, области определения функции, поставлен в соответствие какой-то элемент $f(x)$ другого множества, области значений, причём только один. +\\ +\textit{Формально:} говорят, что на множестве $X$ имеется функция $f$ со значениями из $Y$, если некоторым элементам $x$ из множества $X$ по правилу $f$ поставлен в соответствие некоторые элементы $y$ из множества $Y$. + +\par Говорят также, что функция $f\ \textit{отображает}$ множество $X$ в множество $Y$. Функцию обозначают также записью $y = f(x)$. + +$Y$ -- область значения функции. $X$ -- область задания функции. + +\par Используя понятие бинарного отношения, можно определить понятие функции как частный случай. А именно, отношение $F \subseteq A \times B$ называется функцией из $A$ в $B$, если каждый элемент множества $A$ находится в отношении $F$ не более чем с одним элементом множества $B$. +\par Альтернативно: если в $F$ нет двух пар с одинаковой первой компонентой и разными вторыми. +\par Альтернативно: +\par Функцией $f:X \to Y$ называется множество $f$ упорядоченных пар $(x,\ y) \in X \times Y$, таких, что для любого элемента $x \in X$ существует единственный элемент $y \in Y$ такой, что: +\begin{itemize} +\item множество $\{y\}$, таких, что $(x,\ y) \in f$ для некоторых элементов $x \in X$, называется \textit{множеством значений функции}. +\item множество упорядоченных пар $f \subseteq X \times Y$ называется \textit{графиком функции}. Понятия графика и функции как множества упорядоченных пар совпадают. При обычном определении функции её графиком называется множество пар $(x,\ f(x))$. +\end{itemize} + +\par Не требуется, чтобы всякий элемент $x \in A$ находился в отношении $F$ с каким-то элементом в $B$, важно только, чтобы он не находился в отношении $F$ с двумя разными элементами $B$. Так что для данного $x \in A$ может либо не быть никакого элемента в $B$, находящегося с $x$ в отношении $F$, либо быть ровно один такой элемент $y$. Во втором случае говорят, что $x$ входит в область определения функции $F$, а этот самый единственный элемент $y$, находящийся в отношении $F$ с $x$, называют значением функции $F$ на $x$ и обозначают $F(x)$. Элементы $F(x)$ для всех $x$ из области определения функции $F$ образуют множество значений функции $F$. Другими словами, множество значений функции $F$ -- это множество элементов в $B$, находящихся в отношении $F$ с некоторым элементом в $A$. + +\par Если область определения функции совпадает с $A$, то пишут $f : A \to B$.Такие функции еще называют \textit{всюду определенными}, а иногда \textit{тотальными} в отличие от общего случая частичных функций. + +\par Для функции $f$, аргументами и значениями которой являются действительные числа, можно нарисовать на плоскости её \textit{график} -- множество всех точек с координатами $(x,\ f(x))$. Иными словами: график функции $f(x)$ -- все точки с координатами $(x,\ y)$ такими, что $y = f(x)$. + +\par Можно сказать, что функции $f: X \to Y$ и $g: X^{'} \to Y^{'}$ называются \textit{равными} при обычном их определении, если у них совпадают графики. + +\par Элемент $y = f(x)$, который сопоставлен элементу $x$, называется \textit{образом элемента} (точки) $x$ (при отображении $f$). + +\par Если взять целиком подмножество $A$ области задания функции $f$, то можно рассмотреть совокупность образов всех элементов множества $A$, а именно подмножество области значений (функции $f$) вида +\begin{equation} +f(A) := \{f(x)\ |\ x \in A\} +\end{equation} +которое называется образом множества $A$ при отображении $f$. + +\par Наоборот, взяв некоторое подмножество $B$ области значений функции $f$, можно рассмотреть совокупность тех элементов области задания функции $f$, чьи образы попадают в множество $B$, а именно -- множество вида +\begin{equation} +f^{-1}(B) := \{x\ |\ f(x) \in B\} +\end{equation} +которое называется (полным) прообразом множества $B$ (при отображении $f$). +В том частном случае, когда множество $B$ состоит из одного элемента, скажем, $B = \{y\}$ , множество $f^{-1}(\{y\}) := \{f(x)\ |\ x \in y\}$ имеет более простое обозначение $f^{-1}(y)$. + +\section*{2. Виды функций: инъекции, сюръекции, биекции} +Рассмотрим некоторое сопоставление элементов из множества $A$ в множество $B$. Будем называть его \textit{функцией}, если оно соответствует критерию \textit{функциональности}. Это значит, что каждому элементу $A$ соответсвтвует \textsc{не более} одного элемента из $B$ (строго: $(a,\ b) \in f, (a,\ c) \in f \implies b = c$). Далее будем считать, что это сопоставление является некоторой функцией $f: A \mapsto B$. + +\textit{Инъекция} --- одному элементу из $B$ соответствует только один элемент из $A$. Строго говоря, $(a,\ c) \in f, (b,\ c)\in f \implies a = b$ или $a \neq b \implies f(a) \neq f(b)$. При этом $|A| \leq |B|$ + +\begin{center} +\includegraphics[height=3cm]{images/in.png} +\end{center} + +\textit{Сюръекция} --- каждому элементу из $B$ что-то из $A$ да соответсвтует. Строго говоря, $\forall\ b \in B\ \exists\ a:\ f(a) = b$ и $|A| \geq |B|$ + +\begin{center} +\includegraphics[height=3cm]{images/sur.png} +\end{center} + +\textit{Биекция} --- и то, и другое: каждому элементу из $B$ соответствует элемент из $A$, притом только один. То есть это и $(a,\ c) \in f, (b,\ c)\in f \implies a = b$, и $\forall\ b \in B\ \exists\ a:\ f(a) = b$. При этом $|A| = |B|$. + +\begin{center} +\includegraphics[height=3cm]{images/bi.png} +\end{center} + +Заметим, что эти свойства определены только для всюду определенных функций (отображений), которыми являются не все функции. + +\section*{3. Композиция функций, ее свойства.} +Пусть даны функции $f: A \to B$ и $g: B \to C$. Их композицией называется функция $g \circ f: A \to C$, +которая определена на тех $x$ из области определения $f$, для которых $f(x)$ принадлежит области определения $g$, и равна $g(f(x))$. + +\begin{figure}[h] +\begin{center} + \begin{minipage}[h]{0.6\linewidth} + \includegraphics[height=5cm, width=\linewidth]{images/Comp.png} + \caption{Композиция функций $f$ и $g$.} + \end{minipage} +\end{center} +\end{figure} + +Обратите внимание, что в записи $g \circ f$ мы сначала пишем ту функцию, которая применяется второй, -- просто потому, что такой же порядок в записи $g(f(x))$. + +Композиция функций обладает свойством ассоциативности +$(f \circ g) \circ h = f \circ (g \circ h)$. +Здесь мы предполагаем, что множества, для которых определены функции, выбраны согласованно, то есть $h$ это функция из множества $A$ в множество $B$, $g$ это функция из множества $B$ в множество $C$, а $f$ это функция из множества $C$ в множество +$D$ (иначе композиции нельзя определить). + +Ассоциативность проще понять, чем объяснить: обе части равенства задают функции $r_1$ и $r_2$ из множества $A$ в множество $D$. Равенство $y = r_1(x)$ равносильно тому, +что найдётся такое $z \in B$, что выполняются равенства $z = h(x)$, $y = (f \circ g)(z) = f(g(z))$. + +Обозначим $u = g(z)$. Тогда $u = (g \circ h)(x)$ и $y = f(u)$, что по определению равносильно $y = r_2(x)$. +В обратную сторону рассуждение аналогичное. + +\section*{4. Обратная функция, ее свойства.} +Тождественной функцией на множестве $A$ (или тождественным отображением множества $A$ в себя) называется функция $id_A$: $A \to A$, которая отображает всякий элемент $x \in A$ в себя: $id_A(x) = x$. При композиции тождественные функции ведут +себя, как единица при умножении: для любого отображения $f : A\to B$ выполнены равенства: + +\[ + id_B \circ f = f \circ id_A = f. +\] +(Обратите внимание, что здесь две тождественные функции — одна на $A$, другая на $B$, иначе композицию нельзя определить.) + +Если отображение $f : A \to B$ является биекцией (взаимно однозначным соответствием), то можно определить обратную функцию (или обратное отображение) $f^{-1}$: +если $f$ отображает $x$ в $y$, то обратная функция $f^{-1}$ отображает $y$ в $x$. Инъективность $f$ гарантирует, что это действительно функция, а сюръективность $f$ гарантирует, +что эта функция определена на всём $B$. +Заметим, что определение обратной функции симметрично: если $g$ обратна к $f$, то и $f$ обратна к $g$. + +\statement{Для биекции $f : A \to B$ выполнены равенства + +\[ + f^{-1} \circ f = id_A \text{и} f \circ f^{-1} = id_B +\] +} + +\begin{proof} +Возьмём $x \in A$. Пусть $f(x) = y$. Тогда по определению обратной +функции $f^{-1}(y) = x$, а по определению композиции $(f^{-1} \circ f)(x) = f^{-1}(f(x)) = f^{-1}(y) = x$. Значит, $(f^{-1} \circ f) = id_A$.Возьмём $y \in B$. Пусть $f^{-1}(y) = x$. Тогда по определению обратной функции $f(x) = y$, а по определению композиции $(f \circ f^{-1})(y) = f(f^{-1}(y)) = f(x) = y$. Значит, $(f \circ f^{-1}) = id_B$. + +\end{proof} + +\section*{5. Основные определения элементарной теории вероятностей: исходы, события, вероятность события.} + +Вероятностным пространством называется конечное множество $U$, его элементы называются возможными исходами. На вероятностном пространстве задана функция $Pr: U \to [0,\ 1]$, такая что $\sum\limits_{x \in U} Pr[x] = 1$. Функция $Pr$ называется вероятностным распределением, а число $Pr[x]$ называется вероятностью исхода $x \in U$. Событием называется произвольное подмножество $A \subseteq U$. Вероятностью события $A$ называется число $Pr[A] = \sum\limits_{x \in A} Pr[x]$. + + +\section*{6. Условная вероятность.} + +Условной вероятностью события $A$ при условии $B$ называется число + +\[ + Pr[A|B] = \frac{Pr[A \cap B]}{Pr[B]} +\] + +Заметим, что условная вероятность имеет смысл, только если $Pr[B] > 0$. Иначе знаменатель обращается в ноль. + +Определение условной вероятности можно переписать следующим образом: +\[ + Pr[A \cap B] = Pr[B] \cdot Pr[A|B] +\] + +Другими словами, чтобы найти вероятность пересечения событий $A$ и $B$ достаточно найти вероятность события $B$ и условную вероятность события $A$ при условии события $B$. + + +\section*{7. Независимые события. Основные свойства независимых событий.} + +Cобытие $A$ не зависит от события $B$, если + +\[ + Pr[A] = Pr[A|B] +\] + +Чтобы не возникало никаких тонкостей с нулевыми вероятностями полезно условиться, что вероятности событий $A$ и $B$ ненулевые. +Из определения условной вероятности мы сразу получаем эквивалентное определение независимости событий. Событие $A$ не зависит от события $B$, если + +\[ + Pr[A \cap B] = Pr[A] \cdot Pr[B] +\] + +Из этой формы определения видно замечательное свойство независимости событий: она симметрична. То есть, событие $A$ не зависит от события $B$ тогда и только тогда, когда событие $B$ не зависит от события $A$. + +Отметим также, что если события $A$ и $B$ независимы, и вероятность события $\overline{B}$ положительна, то события $A$ и $\overline{B}$ независимы. + +\section*{8. Случайная величина.} + +Случайная величина -- это числовая функция на вероятностном пространстве, то есть функция вида $f : U \to R$. То есть, по сути, случайная величина -- это обычная числовая функция, но теперь на её аргументах задано вероятностное распределение. Таким образом, например, мы можем говорить о вероятности того, что случайная +величина $f$ равна какому-то конкретному значению $a$: это есть просто вероятность события $\{u \in U\ |\ f(u) = a \}$. Случайные величины представляют собой числовые характеристики вероятностных экспериментов, и на самом деле, мы с ними уже неоднократно сталкивались, просто не говорили об этом. Например, если мы бросаем кубик, то исходом эксперимента является выпадение той или иной грани, а случайной величиной -- число написанное на грани (каждой грани соответствует своё число -- это функция). + +\section*{9. Математическое ожидание случайной величины.} + +Пусть вероятностное событие состоит из $k$ исходов, случайная величина $f : U \to R$ принимает на них значения $a_1, \ldots ,\ a_k$ соответственно и вероятности исходов равны $p_1, \ldots ,\ p_k$ соответственно. В частности, $\sum\limits_{i = 1}^k p_i = 1$. Предположим, что мы повторяем эксперимент по выбору случайного элемента из $U$ $n$ раз. Если $n$ достаточно большое, то случайная величина $f$ примет значение $a_1$ примерно $p_1n$ раз, значение $a_2$ -- примерно $p_2n$ раз, и так далее, значение $a_k$ -- примерно $p_kn$ раз. Подсчитаем теперь примерное среднее арифметическое значений случайной величины $f$ в этих экспериментах: + +\[ + \frac{a_1p_1n + a_2p_2n + \ldots + a_kp_kn}{n} = \sum\limits_{i = 1}^k a_ip_i +\] + +Математическим ожиданием случайной величины $f$, принимающей значения $a_1, \ldots ,\ a_k$ с вероятностями $p_1, \ldots ,\ p_k$ соответственно, называется величина + +\[ + E[f] = \sum\limits_{i = 1}^k a_ip_i +\] + +\section*{10. Определение схемы в некотором функциональном базисе. Представление схем графами.} + +\textit{Схема} --- это функция, заданная последовательностью присваиваний. + +Иными словами, булевой схемой от переменных $x_1,\ \ldots\ ,\ x_n$ в некотором функциональном базисе мы будем называть последовательность булевых функций $g_1,\ \ldots\ ,\ g_s$, в которой всякая $g_i$ или равна одной из переменных, или +получается из предыдущих применением одной из функций из базиса. + +Также в профессиональной среде схемы называют SLP (\textit{straight line programmes}). + +Рассмотрим такую функцию $f$, определенную для булевых значений (\textit{булеву функцию}): $f:\{0, 1\}^n \rightarrow \{0, 1\}$. + +\textit{Базисом} $B$ булевой функции будем называть некий набор $B:\{f_1, f_2, \ldots , f_n\}$, где $f_1 \ldots f_n$ - булевы функции. + +\textit{Булева схема} в базисе $B$ --- последовательность функций $x_1, x_2, x_3... x_n, x_{n+1} := S_1, x_L := S_{L-n}$, которая вычисляет $x_L(x_1, \ldots ,x_n)$. + +\[S_j = g(S_{i_1}, ... , s_{i_r}), g \in B, i_\mathalpha < j\] + +\textit{Стандартный базис} есть базис, состоящий из операций отрицания, конъюнкции и дизъюнкции: $\{\lnot, \vee, \wedge\}$ + +Схемы можно предствавлять в виде графов: + +\textsc{Пример 1} + +Зададим булеву схему с помощью стандартного базиса. + +$x_1, \ldots ,x_n, s_1 := \lnot x_1, s_2 = \lnot x_2, s_3 := x_1 \wedge s_2, s_4 := x_2 \wedge s_1; s_5 := s_3 \vee s_4$ + +\includegraphics[height=7cm]{images/1.png} + + Если $x_2 = 0$, то $s_5 = x_1$ + + Если $x_2 = 1$, то $s_5 = \lnot x_1$ + + Результатом выполнения булевой схемы является сложение по модулю 2 (1, если значения $x_1$ и $x_2$ разные) - $\oplus$. + + \textsc{Пример 2} + + Составим схему, которая является сложением по модулю 2 $n$ переменных. Приведём индуктивное доказательство её существования: + + \begin{enumerate} + \item База индукции --- $n = 2$. Сложение 2 переменных по модулю 2 возможно по схеме, описанной выше + \item Предположим существование такой схемы для $n - 1$ переменных + \[x_1 \oplus x_2 \oplus \ldots \oplus x_{n-1}\] + \item Рассмотрим сложение по модулю 2 $n$ переменных. Представим его как сложение по модулю 2 $x_n$ с результатом предыдущего шага. Существование второго слагаемого объясняется предположением индукции. Сложение с $x_n$ можно выполнить по схеме выше. + \[x_1 \oplus x_2 \oplus \ldots \oplus x_{n-1} \oplus x_n = (x_1 \oplus x_2 \oplus \ldots \oplus x_{n-1}) \oplus x_n\] + \end{enumerate} +\includegraphics[height=7cm]{images/2.png} + + \textsc{Пример 3} + + Дизъюнкция n переменных --- аналогично, по индукции. Такие рассуждения можно построить и для конъюнкции. + + \includegraphics[height=7cm]{images/3.png} + +\section*{11. Определение полного базиса. Примеры полных и неполных базисов.} + +\textit{Полный базис: } Базис $B$ -- \textit{полный}, если любую булеву функцию можно вычислить схемой в базисе $B$. + +Примеры полных базисов: + +\begin{enumerate} + \item Стандартный Базис + \item Дизъюнкция, инверсия + \item Конъюнкция, инверсия + \item Импликация, инверсия + \item Базис Жегалкина $\lbrace 1, \oplus, \vee \rbrace$ + \item Стрелка Пирса + \begin{enumerate} + \item $0 \downarrow 0 = 1, 0 \downarrow 1 = 0, 1 \downarrow 0 = 0, 1 \downarrow 1 = 0$ + \item $X \downarrow X \equiv \neg X$ — отрицание + \item $\left( {X \downarrow X} \right) \downarrow \left( {Y \downarrow Y } \right) \equiv {X \wedge Y }$ — конъюнкция + \item $\left( {X \downarrow Y} \right) \downarrow \left( {X \downarrow Y} \right) \equiv X \vee Y$ — дизъюнкция + \item $\left( \left( {X \downarrow X } \right) \downarrow Y \right) \downarrow \left( \left( {X \downarrow X } \right) \downarrow Y \right) = X \rightarrow Y$ — импликация + \end{enumerate} + \item Штрих Шеффера + \begin{enumerate} + \item $0 \| 0 = 1, 0 | 1 = 1, 1 | 0 = 1, 1 | 1 = 0$ + \item $X\,|\,X = \neg X$ — отрицание + \item $\left( {X \,|\,X } \right)\,|\,\left( {Y \,|\,Y } \right) = X \vee Y$ — дизъюнкция + \item $\left( {X \,|\,Y } \right)\,|\,\left( {X \,|\,Y } \right) = \left( {X \wedge Y } \right)$ — конъюнкция + \item $X \,|\, \neg X$ — константа 1 + \end{enumerate} +\end{enumerate} + +Примеры неполных базисов: + +\begin{enumerate} + \item Монотонный базис + \item $\{\wedge,\oplus\}$ + \item $\{1,\wedge\}$ + \item $\{1,\oplus\}$ + \item Конъюнкция, дизъюнкция и разность + \item Большинство одноэлементных базисов +\end{enumerate} + +\section*{12. Определение схемной сложности функции.} + +\textit{Размер булевой схемы} --- это количество присваиваний в схеме +$g_1, \ldots, g_L$ для вычисления функции $f: \{0, 1\}^n \rightarrow \{0, 1\}$. + +\textit{Сложность функции f в базисе B} --- это минимальный размер булевой схемы, +вычисляющей функцию $f$ в базисе B. Если базис не указывают -- имеют в виду +стандартный базис $\{\lnot, \lor, \land\}$. \textit{Обозначение:} $C(f)$. + +Определения различных оценок сложностей аналогичны тем, что мы используем на алгоритмах и в математическом анализе: + + \[ + o(f(n)) = \{g(n) \ | \ \forall \ c > 0 \ \exists \ n_0 > 0 \ : \forall n \geq n_0 \Rightarrow 0 \leq g(n) < c \cdot f(n)\} + \] + + \[ + O(f(n)) = \{g(n) \ | \ \exists \ c > 0, \ \exists \ n_0 > 0 \ : \forall n \geq n_0 \Rightarrow 0 \leq g(n) \leq c \cdot f(n)\} + \] + + \[ + \omega(f(n)) = \{g(n) \ | \ \forall \ c > 0 \ \exists \ n_0 > 0 \ : \forall n \geq n_0 \Rightarrow 0 \leq c \cdot f(n) < g(n)\} + \] + + \[ + \Omega(f(n)) = \{g(n) \ | \ \exists \ c > 0, \ \exists \ n_0 > 0 \ : \forall n \geq n_0 \Rightarrow 0 \leq c \cdot f(n) \leq g(n)\} + \] + + \[ + \Theta(f(n)) = \{g(n) \ | \ \exists \ c_1 > 0, \exists \ c_2 > 0, \exists \ n_0 \in \N: \ \forall \ n \geq n_0 \Rightarrow c_1 \cdot f(n) \leq g(n) \leq c_2 \cdot f(n)\} + \] + +\section*{13. Определение равномощных множеств. Основные свойства равномощности.} + +\definition Равномощными множествами называются такие множества, +между которыми установима биекция. Обозначение: $A \sim B$. + +\underline{Очевидные свойства равномощных множеств:} $\forall A$ -- множеств. +\begin{itemize} + \item $A \sim A$. + \item $A \sim B \Rightarrow B \sim A$. + \item $A \sim B, B \sim C \Rightarrow A \sim C$. +\end{itemize} + + +\section*{14. Определение бесконечного множества.} + +\definition Множество $A$ -- конечно тогда и только тогда, +когда $\exists n \in \N_0: A \sim [n]$ ($[n] = \left\{ 1, 2, \ldots, n \right\}, [0] = \varnothing$). + +Запомните, что: $n > k \Rightarrow [n] \nsim [k]$. + +\definition Множество бесконечно тогда и только тогда, когда оно не конечно. + +\section*{15. Определение счетного множества. Примеры.} + +$A$ -- бесконечно. Значит $A$ -- не пусто. $\exists a_o \in A$. +Пусто ли $A\setminus {a_0}$? Нет. Иначе $A$ -- содержит один элемент и конечно. + +Тогда $\exists a_1 \in A\setminus {a_0}$. Множество и без этих двух элементов +бесконечно. Ну и так далее. + +\definition Получившееся множество $A' = \{a_0, a_1, a_2, \ldots, a_n, \ldots\}$ +назовем счётным (равномощным множеству натуральных чисел). +Биекция в этом случае очевидна: $f: i \mapsto a_i$. + +\statement $\N$ -- бесконечно. +\begin{proof} + Пусть это не так и $\exists f: [n] \to \N$ -- инъекция. Тогда верно следующее: + $\N \ni max\{f(0), f(1), \ldots, f(n)\}+1 \notin f([n])$. А значит $f$ -- не биекция. + А значит $\N$ не равномощно никакому $[n]$. +\end{proof} + +\underline{Примеры cчётных множеств}: + +\begin{itemize} + \item $\{ 0, 1\}^*$ -- множество двоичных слов. + \item $\N$ -- множество натуральных чисел (целые положительные и 0). + \item $\N \times \N$ -- множество пар натуральных чисел. + \item $\N^*$ -- множество конечных последовательностей натуральных чисел. +\end{itemize} + +\statement Множество бесконечно тогда и только тогда, когда оно равномощно какому-то +своему подмножеству. +\begin{proof} + Докажем, что если множество бесконечно, то оно равномощно некоторому подмножеству. + + Как мы уже выяснили, в любом бесконечном множестве есть счётное подмножество. + Пусть $B = \{b_0, b_1, \ldots, b_n, \ldots\}$ -- счётное подмножество + бесконечного множества $A$. + + Установим биекцию $f: A \setminus \{b_0\} \to A$. + \[ + f(x) = \begin{cases} + b_{n-1}, x \in B \\ + x, x \notin B + \end{cases} + \] + Получили то, что и требовалось. + + В обратную сторону доказывается на семинарах, но примерно так: + пусть $B \subset A, B \sim A$. Пусть $A$ -- конечно. Тогда $|B| < |A|$ +\end{proof} + +\section*{16. Основные свойства счетных множеств.} + +\begin{enumerate} + \item + \label{prop:AsubsetA} + $A$ -- счётное множество. Тогда $A' \subseteq A$ счётно или конечно. + \begin{proof} + $A = \{a_0, a_1, \ldots, a_n, \ldots\}$. Вычеркнем все элементы, в $A'$ + не входящие. $A' = \{a_{j_0}, a_{j_1}, \ldots, a_{j_n}, \ldots\}$. + + Если последовательность $\{a_{j_n}\}$ конечна, то и $A'$ конечно. + Если она бесконечна, то $A'$ очевидно счётно. + \end{proof} + \item + \label{prop:acupb} + Если $A,B$ -- счётные, то и $A \cup B$ счётно. + \begin{proof} + $A = (a_0, a_1, \ldots, a_n, \ldots)$. + $B = (b_1, b_2, \ldots, b_n, \ldots)$. + + $A \cup B = (a_0, b_0, a_1, b_1 \ldots, a_n, b_n, \ldots)$. + + Но может получиться так, что в новой последовательности некоторые элементы + встречаются по два раза (они входят в оба множества). Вычеркнем + каждый такой элемент по одному разу. И получим последовательность, + задающую счётное множество. + \end{proof} + \item $\Z$ -- счётно. + \begin{proof} + $Z = \N \cup (-\N)$ -- объединение счётных множеств. Счётно по свойству + \ref{prop:acupb} ($-A = \{-a \ |\ a \in A\}$). + \end{proof} + \item + \label{prop:acupbnotinf} + Если $A$ -- счётно, а $B$ -- конечно или счётно, то $A \cup B$ счётно. + \begin{proof} + Доказывается аналогично свойству \ref{prop:acupb}. + \end{proof} + \item Если $A$ -- счётно. И $B_1, B_2, \ldots, B_k$ -- счётны или конечны, то + $A \cup B_1 \cup \ldots \cup B_k$ -- счётно. + \begin{proof} + К доказательству свойства \ref{prop:acupbnotinf} нужно добавить + доказательство по индукции. + \end{proof} + \item + \label{prop:Fsetcup} + Счётное объединение конечных или счётных множеств конечно или счётно. + + $\{A_0, A_1, \ldots, A_n, \ldots\} = \mathfrak{F} \sim \N$. $A_i$ -- множество. + $\mathfrak{F}$ называется семейством множеств. + $A = \bigcup\limits_{i=0}^{\infty} A_i$. + + \statement $A$ -- счётно. + \begin{proof} + \begin{align*} + A_0 &= (a_{00}, a_{01}, \ldots, a_{0n}, \ldots) \\ + A_1 &= (a_{10}, a_{11}, \ldots, a_{1n}, \ldots) \\ + \end{align*} + Некоторые из множеств могут быть конечны. Дополним их до счётных + пустым символом $\lambda \notin A$. + + Построим последовательность: $a_{00}, a_{01}, a_{10}, a_{02}, + a_{11}, a_{20}, \ldots$. (то есть проходим последовательно все значения + сумм индексов от $0$ до $\infty$). + + Теперь исключим из последовательности повторения и символы $\lambda$. + Получим требуемую последовательность $(a'_0, a'_1, \ldots, a'_n, \ldots)$. + + Теперь получим функцию $f: [n] \to A$ или $f: \N \to A$. $f$ -- биекция. + В первом случае множество конечно, во втором счётно. + + Можно было бы и не вводить $\lambda$, а исключать эти элементы сразу, + но так проще (нет никаких условий). + \end{proof} + + \underline{Примеры:} + \begin{itemize} + \item Пусть $A_i = \{i\}$. Тогда $A = \N$ (счётно). + \item Пусть $A_i = \{1\}$. Тогда $A = \{1\}$ (конечно). + \end{itemize} + + \item + \label{prop:CartProdAB} + Декартово произведение счётных множеств счётно. + Напомним, что \[A \times B = \left\{ (a; b)\ |\ a \in A, b \in B \right\}\] + \begin{proof} + По определению декартово произведение есть множество всех упорядоченных пар вида $\langle a,\ b\rangle$, в которых $a \in A$ и $b \in B$. Разделим пары на группы, объединив пары с одинаковой первой компонентой (каждая группа имеетвид $\{a\} \times B$ для какого-то $a \in A$). Тогда каждая группа счётна, поскольку находится во взаимно однозначном соответствии с $B$ (пара определяется своим вторым элементом), и групп столько же, сколько элементов в $A$, то есть счётное число. + \end{proof} + \item + \label{prop:Apown} + Если $A$ -- счётно, то $A^k$ -- счётно. + \begin{proof} + Очевидно по индукции из свойства \ref{prop:CartProdAB}. + \end{proof} + \item $\Q$ -- счётно. + \begin{proof} + Рассмотрим множество $\Q_p$ несократимых дробей. + Пусть функция $f: \Q_p \to \Z \times \N_+$ -- инъекция + (она переводит дробь в пару чисел числитель-знаменатель). + Тогда она является биекцией на $f(\Q_p) \subset \Z \times \N_+$. + Причём $f(\Q_p)$ тогда счётно по свойству \ref{prop:AsubsetA} + так как не является конечным, а $\Z \times \N_+$ счётно + по свойству \ref{prop:CartProdAB}. + \end{proof} + \item Пусть $A^*$ -- конечные последовательности конечного (непустого) или + счётного алфафита $A$. + + \statement $A^*$ -- счётно + \begin{proof} + $A^* = \bigcup\limits_{n=0}^{\infty} A^n$. При этом $A^n$ -- слова длины $n$. + $A^n$ -- счётно по свойству \ref{prop:Apown}. И тогда само $A^*$ счётно + по свойству \ref{prop:Fsetcup}. + \end{proof} + \item \definition $\alpha \in \R$ -- алгебраическое число тогда и только тогда, + когда $\alpha$ -- корень некоторого многочлена с целыми коэфициентами. + + \statement Множество алгебраических чисел счётно. + \begin{proof} + Приведём только план доказательства: + \begin{enumerate} + \item Докажем, что многочленов степени $n$ ($n \in \N$) с целыми коэфициентами счётно. + \item Для каждого из этих многочленов есть не более $n$ корней -- + алгебраических чисел. + \item Удаляем повторяющиеся корни. + \item Получим все алгебраические числа, которых, очевидно, + счётно. + \end{enumerate} + \end{proof} +\end{enumerate} + +\section*{17. Определение множества мощности континуум. Примеры.} + +Определим действительные числа следующим образом: сопоставим каждому $x \in \R$ двоичное число: $\pm \lefteqn{\underbrace{\phantom{10110 \dots 1011}}_{\text{целая часть}}}10110 \dots 1011 .\overbrace{110001 \dots 00110}^{\text{дробная часть}}$. Считаем известным, что ряд из каких-то степеней двоек сходится, причём запрещаем в числах данного вида "хвосты из единиц". + +\definition Будем говорить, что множество $X$ имеет мощность континуум, если $X \sim \R$. + +Примеры: + +\begin{itemize} + \item $\Phi(\N)$ -- множество всех подмножеств $\N$. + \item $2^{\N}$ -- множество последовательностей натуральных чисел. + \item $\R$ -- само множество действительных чисел. +\end{itemize} + +\section*{18. Основные свойства континуальных множеств.} + +\begin{enumerate} + \item Любое континуальное множество имеет счётное подмножество. + \item Мощность объединения не более чем континуального количества множеств, каждое из которых не более чем континуально, не превосходит континуума. + \item При разбиении континуального множества на конечное или счётное число частей хотя бы одна из частей будет иметь мощность континуум. +\end{enumerate} + +\section*{19. Основные свойства вычислимых функций.} + +\definition{Функция называется вычислимой, если для неё существует некоторый алгоритм вычисления.} + +\begin{algo1} +Композиция вычислимых функций вычислима. +\end{algo1} +\begin{proof} +Пусть существуют вычислимые функции $f$, переводящая множество входов $X$ в множество выходов $Y$ и $g$, переводящая $Y$ в $Z$. + +\[ + \begin{cases} + f: X \to Y \\ + g: Y \to Z + \end{cases} +\] + +Построить $g \circ f: X \to Z$ достаточно просто. На первом шаге нужно применить функцию $f$. Далее берём множество выходов $f$ и подаём на вход в $g$. На выходе получим некоторое множество выходов $Z$. Вычислимая композиция построена. + +\begin{algorithm} +\caption{Алгоритм получения композиции функций} +\begin{algorithmic}[1] +\Function{Composition}{x} + \State $t \gets f(x)$ + \State \Return $g(t)$ +\EndFunction +\end{algorithmic} +\end{algorithm} +\end{proof} + +Итак, есть вычислимая биекция $\pi: \N^* \to \N$. + +Построим композицию $\N^* \to \N \to \{0, 1\}$. + +\[ + \begin{cases} + \pi^{-1}: B \to A \\ + f: A \to A \\ + \pi: A \to B + \end{cases} +\] + +Построить это можно применением композиции $\pi \circ f \circ \pi^{-1}$. Получим алгоритм из $B$ в $B$. +Поэтому нам, по сути, \textbf{без разницы какие множества на входе +и выходе} так как можно получить легко из одного другое. + +Заметим, что если некоторая биекция $\pi$ вычислима, то обратная ей $\pi^{-1}$ также будет вычислима. Способ вычисления схож с алгоритмом для диофантовых уравнений. + +Рассматриваем все возможные значения входов и вычисляем $\pi^{-1}(x)$. +\begin{algorithm} +\caption{Алгоритм построения обратной функции для биекции} +\begin{algorithmic}[1] +\Function{RevBiection}{x} + \For{$n := 0 \ldots \infty$} + \If{$\pi(n) = x$} + \State \Return n + \EndIf + \EndFor +\EndFunction +\end{algorithmic} +\end{algorithm} + +Стоит отметить, что данный алгоритм всегда завершается так как +(по определению) биекция сюрьективна и найдется номер $n$ для +которого $\pi(n) = x$. + +\section*{20. Определение разрешимого множества.} + +Вспомним что такое характеристическая функция множества $S$: +\[ +\chi_S(x) = \begin{cases} + 1,\ x \in S \\ + 0,\ x \notin S +\end{cases} +\] + +\definition{Множество называется разрешимым, если его +характеристическая функция вычислима.} + +\section*{21. Определение перечислимого множества.} + +\definition{Алгоритм перечисления -- такой алгоритм, у которого нет входа, он работает и может выводить некоторые числа, причём все напечатанные числа составляют счетное множество.} + +\definitionone{Множество $S$ называется перечислимым, если есть алгоритм перечисления всех его элементов.} + +\definitiontwo{Множество $S$ -- перечислимо, если существует такая вычислимая функция: + +\[ + f: \N \to \N + \begin{cases} + f(\N) = S \\ + \text{Область определения} \ f \ \text{равна либо} \ \N, \text{либо} \ [n]. + \end{cases} +\] + +} + +\begin{theorem} + +Определения $1$ и $2$ эквивалентны. + +\end{theorem} + +\begin{proof} +\ + +$\Longrightarrow$ +Пусть $A$ -- алгоритм перечисления множества $S$. Тогда возьмём следующий алгоритм $B$: принимает на вход число $n$, запускает алгоритм $A$ и считает, сколько чисел напечатано. Как только вывели $n + 1$ слово -- алгоритм печатает результат. + +Покажем, что соблюдаются свойства вычислимой функции: + +\begin{enumerate} + \item $B(n) = S$, так как $\forall \ n \ \exists \ B(n) \Rightarrow + \begin{cases} + \forall \ x \in S \ \exists \ B(x) \\ + \forall \ x \notin S$ никогда не выведет $B(x) + \end{cases}$ + \item Пусть $S$ -- бесконечное множество, тогда функция, задаваемая $B$, определена везде, значит $dom \ B = \N$. Если $B$ работает на $n$ числах, то алгоритм переберёт их и остановится. +\end{enumerate} + +$\Longleftarrow$ +Возьмём следующий алгоритм перечисления $B$ для множества $S$: + +\begin{algorithm} +\caption{Алгоритм перечисления разрешимого множества} +\begin{algorithmic}[1] +\Function{PrintSet}{S} + \For{$i := 0 \ldots \infty$} + \If{$f(i) = 1$} + \State \textbf{print} i + \EndIf + \EndFor +\EndFunction +\end{algorithmic} +\end{algorithm} + +Если функция определена для некоторых $n$ чисел, то ровно их он и напечатает. Если $dom \ f = \N$, то алгоритм никогда не остановится, то есть напечатает всю область определения $f$. Значит, существует алгоритм, перечисляющий $S$. + +\end{proof} + +\section*{22. Свойства перечислимых множеств.} + +\statement{ +Если множество $S$ разрешимо, то оно перечислимо. +} + +\begin{proof} +Алгоритм перечисления множества $S$ использует алгоритм раз- +решения множества $S$. Он перебирает все числа, начиная с 0; для каждого числа +$n$ вычисляет индикаторную функцию $\chi S(n)$ и печатает число n, если полученное +значение равно 1. + + \begin{algorithm} + \caption{Алгоритм перечисления множества S} + \begin{algorithmic}[1] + \Function{Print}{S(n)} + \For{$n := 0 \ldots \infty$} + \If{$\chi_{S}(n) = 1$} + \State \textbf{print} n + \EndIf + \EndFor + \EndFunction + \end{algorithmic} + \end{algorithm} + +Корректность такого алгоритма ясна из определений. +\end{proof} + +Пусть $S$ -- перечислимое непустое множество. Тогда для $S$ выполнены следующие свойства: + +\begin{enumerate} + \item $S$ -- область определения вычислимой функции. + \item $S$ -- область значений вычислимой функции. + \item $S$ -- область значений всюду определённой вычислимой функции. +\end{enumerate} + +Пусть $A$ и $B$ -- перечислимые множества. Тогда: + +\begin{enumerate} + \item $A \cup B$ перечислимо. + \item $A \cap B$ перечислимо. +\end{enumerate} + +\statement{ + Существует перечислимое неразрешимое множество. +} + +\begin{proof} + Рассмотрим вычислимую функцию $f(x)$, не имеющую всюду определённого вычислимого продолжения. Её область определения $F$ будет искомым множеством. В самом деле, $F$ перечислимо (по одному из определений перечислимости). Если бы $F$ было разрешимо, то функция + + \[ + g(x) = + \begin{cases} + f(x), \text{если $x \in F$} \\ + 0, \text{если $x \notin F$}. + \end{cases} + \] + + была бы вычислимым всюду определённым продолжением функции $f$ (при вычислении $g(x)$ мы сначала проверяем, лежит ли $x$ в $F$, если лежит, то вычисляем $f(x)$). +\end{proof} + +\section*{23. Определение универсальной вычислимой функции.} + +\definition{Универсальная вычислимая функция: + + \[ + U : \N \times \N \to \N\ | \ \forall f\text{-вычислимая}\ \exists \ p: f(x) = U(p,\ x). + \] + +} + +Также полезно знать про отладочную функцию: + +\definition{Отладочная функция: + + \[ + F: \N\times\N\times\N \to \{0,\ 1\}\text{ -- всюду определённая, причём: } + \] + + \[ + \begin{cases} + \text{При фиксированных $p$ и $x$ монотонна по $t$}\\ + F(p,\ x,\ t) = 0 \Leftrightarrow U(p,\ x)\text{ не определена}\\ + F(p,\ x,\ t) = 1 \Leftrightarrow \text{ программа $p$ на входе $x$ заканчивает работу за $t$ шагов.} + \end{cases} + \] +} + +\section*{24. Определение главной универсальной вычислимой функции.} + +\definition{Главная универсальная функция (гёделева) -- такая универсальная функция, +что для любой вычислимой функции $V(n,\ x)$ существует всюду определённая +вычислимая функция $s(n)$, что: + \[ + \forall\ n,\ x \Rightarrow V(n,\ x) = U(s(n),\ x). + \] +} + +Неформально это значит, что главная универсальная функция позволяет транслировать +в себя любую другую унивесальная функция. Ну, вот например, есть язык C++, его можно +назвать главной универсальной функцией так как любую программу на другом универсальном +языке можно переписать на C++ автоматически (при помощи \emph{транслятора}). + +\section*{25. Формулировка теоремы Успенского–Райса.} + +Пусть есть некоторое свойство, которое мы хотим проверить +для некоторой функции. + +Формально: +Пусть $\{f:\N\to\N\}$ -- множество вычислимых функций. +Разделим его на два непересеающихся подмножества $A$ и $\overline{A}$. +\[ +\{f\ |\ f:\N\to\N\} = A \cup \overline{A} +\] +$A$ -- множество тех функций, для которых выполняется некое свойство, +$\overline{A}$ -- множество тех функций, для которых это свойство не выполняется. + +Возьмём некоторую универсальню функцию $U(p,\ x)$. + +Обозначим за $P_A$ множество всех $p$ таких, что $U(p,\ x) \in A$. +\[ +P_A = \{p\ |\ U(p, x) \in A\} +\] + +Тогда вопрос можно поставить так: разрешимо ли множество +программ, удовлетворяющих нашему свойству? На этот вопрос и отвечает теорема +Успенского-Райса: +\begin{usp-rais} + Если $A$ -- нетривиально ($A \neq \oslash,\ \overline{A} \neq \oslash$), а $U(q,\ x)$ -- главная универсальная функция, то множество $P_A$ неразрешимо. +\end{usp-rais} +Введём для удобства ещё функции $\varepsilon \in \overline{A}$ (нигде не +определённая) и $\xi \in A$ (какая-то функция, удовлетворяющая условию). +Сделать это можно по аксиоме выбора. + +Если $A$ -- это множество нигде не определённых функций, то поменяем их +местами так как $P_A$ разрешимо тогда и только тогда, когда его +дополнение разрешимо. + +\section*{26. Формулировка теоремы о неподвижной точке.} + +\begin{point} + Пусть $U$ -- главная универсальная функция, $h(n)$ -- любая всюду определённая вычислимая функция. Тогда: + + \[ + \exists\ q \ : \ U(q,\ x) = U(h(q),\ x). + \] +\end{point} + +Честно сказать, не все учёные понимают эту теорему, однако её можно объяснить неформально +так: для любой программы на любом универсальном языке существует ещё одна программа, +которая делает то же самое (то есть программы совпадают). + +\section*{27.1. Определение машины Тьюринга (с одной лентой).} + +Мы рассмотрим классическую модель вычислений, на которой будут основано точное определение вычислимых функций, -- машины Тьюринга (МТ). + +МТ состоит из + +\begin{itemize} + \item бесконечной в две стороны ленты, в ячейках которой могут быть записаны символы алфавита $A$ (некоторого конечного множества) + \item головки, которая может двигаться вдоль ленты, обозревая в каждый данный момент времени одну из ячеек + \item оперативной памяти, которая имеет конечный размер (другими словами, состояние оперативной памяти -- это элемент некоторого конечного множества, которое называется множеством состояний МТ $Q$) + \item таблицы переходов (или программы), которая задаёт функцию $\delta : A \times Q \to A \times Q \times \{-1,\ 0,\ +1\}$ +\end{itemize} + +Поскольку таблица переходов -- это функция на конечном множестве, её возможно задать таблицей. Каждая строка таблицы -- это пять значений $a,\ q,\ a^{'},\ q^{'},\ d$, (другие способы записи: $\delta(a,\ q) = (a^{'},\ q^{'},\ d)$ или $\delta : (a,\ q) \mapsto (a^{'},\ q^{'},\ d))$, которые описывают следующий порядок действий МТ: если головка МТ находится над ячейкой, содержащей символ $a$, а состояние МТ равно $q$, то на очередном такте +работы МТ записывает в текущую ячейку символ $a^{'}$, изменяет состояние на $q^{'}$ и сдвигает головку на $d$ ячеек (отрицательное значение отвечает сдвигу влево, положительное -- сдвигу вправо, $0$ -- не сдвигается). + +Работа МТ состоит из последовательного выполнения тактов в соответствии с таблицей переходов. Может так случиться, что для текущей пары значений $(a,\ q)$ функция переходов не определена. В этом случае работа машины заканчивается (машина останавливается). Обычно среди состояний МТ выделяют множество $Q_f$ финальных состояний -- таких состояний $q_f$, что таблица переходов не определена для всех пар $(a,\ q_f)$. Попав в финальное состояние, машина обязательно остановится, отсюда и название. + +Лента МТ бесконечна и это не соответствует нашей интуиции об алгоритмах: алгоритм на каждом шаге работы оперирует лишь данными конечного размера. Чтобы учесть это обстоятельство, мы предполагаем, что в алфавите машины есть специальный символ $\Lambda$ (пробел или пустой символ) и все ячейки ленты за исключением конечного числа содержат пустые символы. Это свойство ленты сохраняется при работе МТ, поскольку за такт работы меняется содержимое не более одной ячейки ленты. + +Состояние такой машины уже описывается конечными данными. Мы будем использовать конфигурации. Конфигурация -- это слово в алфавите $A \cup Q$, в котором первый и последний символы непустые, и ровно один символ принадлежит множеству состояний. Договоримся считать, что символ состояния записывается слева от символа в той ячейке, над которой находится головка МТ. На ленте слева и справа от символов конфигурации стоят только пустые +символы. + +У МТ есть 2 основных конфигурации: начальная $q_0$, из которой МТ начинает работу, и финальная $q_f$. + +Конфигурации МТ преобразуются такт за тактом, порождая последовательность конфигураций $c_0 = q_0u,\ c_1,\ c_2, \ldots ,\ c_t,\ \ldots$ + +Эта последовательность бесконечна, если машина не останавливается, и конечна в +противном случае. Результатом работы является та часть финальной конфигурации, которая расположена между символом состояния и ближайшим к нему пустым символом справа. + +\section*{27.2. Определение машины Тьюринга (с несколькими лентами).} + +\definition{Машина, у которой не одна лента, а несколько +(фиксированное число для конкретной машины), называется \textit{многоленточной}.} + +На каждой ленте есть своя головка. За такт работы головки могут перемещаться по всем лентам. Действие на такте работы зависит как от состояния машины, так и от всего набора символов, которые +видят головки машины на всех лентах. + +Чтобы задать машину с $h$ лентами, нужно указать: + +\begin{itemize} + \item алфавит $A$, в котором выделен пустой символ $\Lambda$ + \item множество состояний $Q$, в котором выделено начальное состояние $q_0$ + \item таблицу переходов, которая теперь является функцией вида $\delta : A^h \times Q \to A^h \times Q \times \{-1, 0, +1\}^h$ (первый аргумент -- символы, которые машина видит на ленте, последний -- команды движения для головок на каждой ленте). + \item выделить среди лент ленту входа и ленту результата (возможно, что это одна и та же лента) +\end{itemize} + +Таблица переходов по прежнему является функцией на конечном множестве, поэтому её возможно задать таблицей. +Работа МТ состоит из последовательного выполнения тактов в соответствии с таблицей переходов. Может так случиться, что для текущего набора значений $(a_1, a_2, \ldots ,\ a_h,\ q)$ функция переходов не определена. В этом случае работа машины заканчивается (машина останавливается). Как и раньше, можно ввести множество финальных состояний $Q_f$, т.е. тех состояний $q_f$, для которых таблица переходов не определена для всех значений $(a_1, a_2, \ldots ,\ a_h,\ q_f)$. В финальном состоянии машина обязательно останавливается. + +Мы предполагаем, что $h$-МТ начинает работу в состоянии $q_0$, а все ленты кроме ленты входа содержат только пустые символы. На ленте входа записано входное слово, и головка находится над первой слева ячейкой, содержащей символы этого +слова. Поскольку за такт работы меняется содержимое не более одной ячейки ленты, в процессе работы машины на каждой ленте будет записано лишь конечное количество непустых символов. + +Конфигурация многоленточной машины может быть задана набором конфигураций на каждой ленте $(u_1q_{v_1},\ u_2q_{v_2}, \ldots ,\ u_hq_{v_h})$. + +Символ состояния один и тот же, так как по нашим определениям состояние есть у машины, а не у головки. + +Далее нам будет удобен другой способ представления конфигурации машины. Выровняем ленты и будем рассматривать \textit{окно}, в которое заведомо помещаются все непустые символы на каждой ленте. В таком случае конфигурация однозначно определяется матрицей размера $h \times N$, в которой записаны символы на лентах. Нужно ещё указать положения головок на лентах (они-то не обязательно выровнены -- машина способна перемещать головки независимо). По этой причине будем помещать в матрицу не символы алфавита $A$, а пары $(a, \hat{q})$, где $\hat{q}$ указывает, расположена ли на данной ленте головка над данной ячейкой. Если да, то $\hat{q} \in Q$ -- текущее состояние машины. Если нет, то $\hat{q}$ -- какой-то символ не из $Q$, который указывает, +что над над данной ячейкой на данной ленте нет головки. Будем для единообразия использовать в качестве такого символа $\Lambda$. Такую матрицу в дальнейшем называем +матрицей конфигурации. Вот пример матрицы начальной конфигурации для двухленточной машины: + +\begin{figure}[h] +\begin{center} + \begin{minipage}[h]{0.6\linewidth} + \includegraphics[height=1.75cm, width=\linewidth]{images/TabMT.png} + \end{minipage} +\end{center} +\end{figure} + +Как и для одноленточной машины, работа $h$-МТ порождает последовательность конфигураций $c_0 = q_0u,\ c_1,\ c_2, \ldots ,\ c_t,\ \ldots$ + +Эта последовательность бесконечна, если машина не останавливается, и конечна в противном случае. Результатом работы является та часть финальной конфигурации на ленте результата, которая расположена между положением головки и ближайшим к нему пустым символом справа. Например, если у двухленточной МТ +лента результата -- нижняя, то результатом работы МТ, остановившейся в конфигурации, заданной окном + +\begin{figure}[h] +\begin{center} + \begin{minipage}[h]{0.6\linewidth} + \includegraphics[height=2cm, width=\linewidth]{images/Tab2MT.png} + \end{minipage} +\end{center} +\end{figure} + +будет $ba$. + +\section*{28. Определение функции, вычислимой на машине Тьюринга.} + +\definition{МТ $M$ ($h$-МТ, если многоленточная) вычисляет функцию $f : B^{*} \to B^{*}$ (где $B$ -- подмножество алфавита машины, не содержащее пустого символа), если для каждого $w$ из области определения функции $f$ результат работы $M$ равен $f(w)$, а для каждого $w$ не из области определения $f$ машина $M$ не останавливается на входе $w$. +} + +Функция $f$ называется \textit{вычислимой машинами Тьюринга}, если есть такая МТ, которая вычисляет $f$. + + +\end{document} diff --git a/discrete-math/tex/discrete-math_colloquium-proofs.tex b/discrete-math/tex/discrete-math_colloquium-proofs.tex new file mode 100644 index 0000000..e96eab9 --- /dev/null +++ b/discrete-math/tex/discrete-math_colloquium-proofs.tex @@ -0,0 +1,1289 @@ +\documentclass[a4paper, 12pt]{article} +\usepackage{cmap} % Пакет для поиска в полученной пдфке +\usepackage[utf8]{inputenc} % Ззамена кодировки файла на utf8 +\usepackage[T2A]{fontenc} % Подключение кодировки шрифтов +\usepackage[russian]{babel} % Использование русского языка +\usepackage[left=2cm, right=2cm, top=1cm, bottom=2cm]{geometry} % Изменение размеров полей +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{amsmath, amsfonts, amsthm, mathtools, amssymb, icomma, units, yfonts} +\usepackage{amsthm} % Пакет для нормального оформления теорем +\usepackage{algorithmicx, algorithm} +\usepackage{algpseudocode} +\usepackage{graphicx} +\usepackage{tikz} +\usepackage{esvect} +\usepackage{enumitem} +\usepackage{dcolumn} +\usetikzlibrary{calc,matrix} + +%Теоремы +%11.01.2016 +\newtheorem*{standartbase}{Теорема о стандартном базисе} +\newtheorem*{fulllemma}{Лемма} +\newtheorem*{sl1}{Следствие 1} +\newtheorem*{sl2}{Следствие 2} +\newtheorem*{monotonousbase}{Теорема о монотонном базисе} +\newtheorem*{scheme}{Утверждение 1} +\newtheorem*{n2}{Утверждение 2} +\newtheorem*{usp-rais}{Теорема Успенского-Райса} +\newtheorem*{rec}{Свойство рекурсии} +\newtheorem*{point}{Теорема о неподвижной точке} +\newtheorem*{zhegalkin}{Теорема Жегалкина} +\newtheorem*{poste}{Теорема Поста} +\newtheorem*{algo1}{Первое свойство алгоритмов} +\newtheorem*{vkliskl}{Формула включений и исключений} +\newtheorem*{baes}{Формула Байеса} +\newtheorem*{markov}{Неравенство Маркова} +\newtheorem*{existsFgthen2ndivn}{Теорема} +\newtheorem*{cantor}{Теорема Кантора} +\newtheorem*{cantorbern}{Теорема Кантора-Бернштейна} + +%18.01.2016 +\newtheorem*{theorem}{Теорема} + +\renewcommand{\qedsymbol}{\textbf{Q.E.D.}} +\newcommand{\definition}{\underline{Определение:} } +\newcommand{\definitions}{\underline{Определения:} } +\newcommand{\definitionone}{\underline{Определение 1:} } +\newcommand{\definitiontwo}{\underline{Определение 2:} } +\newcommand{\statement}{\underline{Утверждение:} } +\newcommand{\note}{\underline{Замечание:} } +\newcommand{\sign}{\underline{Обозначения:} } +\newcommand{\statements}{\underline{Утверждения:} } + +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\N}{\mathbb{N}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\R}{\mathbb{R}} + + + +\begin{document} +\title{Дискретная математика.\\ Коллоквиум.} +\author{Лекторий ПМИ ФКН 2015-2016 \\ Доказательства 1 - 11, 19, 21, 35, 36, 40 -- Гринберг Вадим} +\date{16-21 марта 2016} + +\maketitle + +\part*{Доказательства} + +\section*{1. Доказательство формулы включений и исключений.} + +\begin{vkliskl} +Пусть у нас есть множества $A_1,\ A_2,\ \ldots,\ A_n$. Через +$S$ будем обозначать подмножество множества $\{1,\ \ldots,\ n\}$, каждое такое подмножество выделяет некоторое семейство подмножеств $\{A_i: i \in S\}$. Через $A_S$ обозначим +пересечение всех множеств, входящих в семейство $S$: + + \[ + A_{(S)} = \bigcap\limits_{i \in S} A_i + \] + +Мощность множества, являющегося объединением этих множеств, находится по формуле: + + \[ + |A_1 \cup A_2 \cup \ldots \cup A_n| = \sum\limits_{S \neq \varnothing} (-1)^{|S| + 1} |A_{(S)}|. + \] + +\end{vkliskl} + +\begin{proof} +Индукция по числу множеств. База индукции -- одно множество, формула очевидна: $|A| = (-1)^{1 + 1}|A|$. + +Индуктивный переход использует формулу для количества элементов в объединении двух множеств: + +\begin{multline*} + |(A_1 \cup \ldots \cup A_{n - 1}) \cup A_n| = |A_1 \cup \ldots \cup A_{n - 1}| + |A_n| - |A_n \cap (A_1 \cup \ldots \cup A_{n - 1})| = \\ = |A_1 \cup \ldots \cup A_{n - 1}| + |A_n| - |(A_n \cap A_1) \cup \ldots \cup (A_n \cap A_{n - 1})|. +\end{multline*} + +Для первого и третьего слагаемых по предположению индукции справедлива формула включений и исключений для $n - 1$ множества. Поэтому первое слагаемое дает вклад в сумму формулы для $n$ множеств вида + +\[ + \sum_{\substack{S \neq \varnothing \\ S \subseteq \{1,\ \ldots,\ n - 1\}}}(-1)^{|S| + 1}|A_S| +\] + +Второе слагаемое -- это в точности $(-1)^{1 + 1}A_{\{n\}}$. + +Рассмотрим теперь последнее слагаемое. По индуктивному предположению оно +равно + +\[ + \sum_{\substack{S \neq \varnothing \\ S \subseteq \{1,\ \ldots,\ n - 1\}}}(-1)^{|S| + 1}|B_S| +\] + +где вместо множеств $A_i$ в формулу включений-исключений для $n - 1$ множества +подставлены множества $B_i = A_n \cap A_i$. + +Для любого $S \subseteq \{1,\ \ldots,\ n - 1\}$ выполняется равенство + +\[ + B_S = \bigcap\limits_{i \in S}(A_n \cap A_i) = A_n \cap A_S = A_{S\cup\{n\}}. +\] + +Получается, что мощность объединения $|(A_1 \cup \ldots \cup A_{n - 1}) \cup A_n|$ представлена в виде суммы таких же слагаемых, что и в сумме формулы включений-исключений: первое слагаемое отвечает семействам, не содержащим $A_n$, второе и третье — семействам, содержащим $A_n$. Нужно ещё проверить, что эти слагаемые входят с правильными знаками. Для первых двух слагаемых это ясно из самих формул. Для третьего заметим, что мощность $S$ отличается от мощности $S \cup \{n\}$ на $1$, так как $S \subseteq \{1,\ \ldots,\ n - 1\}$. Это даёт лишний знак минус. Но в формулу для объединения двух множеств это слагаемое также входит со знаком минус. Поэтому окончательный знак будет правильным: + +\[ + -(-1)^{|S|+1} = (-1)^{|S\cup\{i\}| + 1}. +\] + +\end{proof} + + +\section*{2. Критерий существования функции, обратной к данной.} + +\begin{theorem} + Если для отображений $f : A \to B$ и $g : B \to A$ выполнены два равенства $g \circ f = id_A$ и $f \circ g = id_B$, то функция $f$ является биекцией и $g$ обратна к $f$. +\end{theorem} + +\begin{proof} + Пусть $f(x_1) = f(x_2)$. Тогда из первого условия на композиции +получаем: + +\[ + x_1 = (g \circ f)(x_1) = g(f(x_1)) = g(f(x_2)) = (g \circ f)(x_2) = x_2. +\] + +Значит, функция $f$ инъективна. + +Для любого $y \in B$ из второго условия на композиции следует, что $y = f(g(y))$, то есть $y$ принадлежит множеству значений $f$. Значит, функция $f$ сюръективна. + +Итак, $f$ биекция. + +Если $y = f(x)$, то из первого условия на композиции получаем $g(y) = g(f(x)) = x$. + +Значит, $g$ обратна к $f$. + +\end{proof} + +\section*{3. Количество функций из $n$-элементного множества в $k$-элементное.} + +Положим $f : A \to B$, $|A| = n$, $|B| = k$. Для каждого элемента $x \in A$ есть $k + 1$ возможных значений для $f(x)$ (это значение может быть любым элементом множества $B$ или же не определено). Они выбираются независимо, так что всего есть $(k + 1)^n$ функций. + +\section*{4. Количество всюду определенных функций из $n$-элементного множества в $k$-элементное.} + +Положим $f : A \to B$, $|A| = n$, $|B| = k$. Для каждого элемента $x \in A$ есть $k$ возможных значений для $f(x)$ (это значение может быть любым элементом множества $B$). Они выбираются независимо, так что всего есть $k^n$ функций. + +\section*{5. Количество инъективных отображений $n$-элементного множества в $k$-элементное.} + +Положим $f : A \to B$, $|A| = n$, $|B| = k$. Если n > k, то их нет (большее множество не может быть инъективно отображено в меньшее). + +Если $n \leq k$, то будем выбирать значения по очереди, расположив все $n$ элементов A в каком-то порядке. Для первого элемента допустимы все $k$ значений, для второго — все, кроме одного (уже использованного раньше), для третьего — $(k - 2)$ и так далее, всего получается $k(k - 1)(k - 2) \cdot \ldots \cdot (k - n + 1) = k!/(k - n)!$. + +\section*{6. Количество сюръективных отображений $n$-элементного множества в $k$-элементное.} + +\begin{theorem} + +Положим $f : A \to B$, $|A| = n$, $|B| = k$. Количество сюръекций из $A$ в $B$ при $n \geq k$ равно + +\[ + \sum\limits_{i = 0}^{k}(-1)^i {k \choose i} (k - i)^n +\] + +и равно $0$ при $n < k$. Сюръекции должны быть определены на всех элементах. + +\end{theorem} + +\begin{proof} + +Надо воспользоваться формулой включений и исключений. Пусть $B$ состоит из $k$ элементов $b_1,\ \ldots\ ,\ b_k$. Не-сюръекции $A \to B$ — это те функции, область значений которых не содержит одного из элементов $b_1,\ \ldots\ ,\ b_k$, то есть объединение множеств + +\[ + A(b_1) \cup A(b_2) \cup \ldots \cup A(b_k), +\] + +где через $A(b)$ обозначается множество тех функций, которые не принимают значения $b$. Легко понять, что все множества $A(b)$ имеют размер $(k - 1)^n$ (мы просто выбросили одно значение). Более того, столь же легко посчитать размер их пересечений: если $b \neq b'$, то $A(b) \cap A(b')$ — это функции, не принимающие значений $b$ и $b'$, их будет $(k - 2)^n$. Остаётся воспользоваться формулой включений и исключений: из всех функций ($k^n$) надо вычесть $n$ множеств вида $A(b_i)$, то есть $k(k - 1)^n$, затем вернуть обратно $k \choose 2$ их попарных пересечений, всего ${k \choose 2}(k - 2)^n$, затем снова вычесть тройные пересечения, которых ${k \choose 3}$ и каждое из которых имеет размер $(k - 3)^n$, и так далее. + +\end{proof} + + +\section*{7. Формулировка и доказательство формулы включений и исключений для вероятностей.} + +\begin{theorem} + +Для всякой вероятностной модели и для произвольных множеств $A_1,\ \ldots\ ,\ A_n \subseteq U$ верно + +\[ + Pr[A_1\cup A_2\cup \ldots \cup A_n] = \sum\limits_{i}Pr[A_i] - \sum\limits_{i < j}Pr[A_i \cap A_j] + \ \ldots \ = \sum\limits_{\varnothing \neq I \subset \{1,\ 2,\ \ldots \ , \ n\}} (-1)^{|I| + 1} Pr \Biggl[\bigcap_{i \in I}A_i\Biggl] +\] + +\end{theorem} + +\begin{proof} + +Индуктивное доказательство принципа включений +и исключений для множеств. + +База для двух: + +\begin{multline*} + Pr[A_1 \cup A_2] = Pr [(A_1 \backslash A_2) \cup (A_1 \cap A_2) \cup (A_2 \backslash A_1)] = \\ = Pr[A_1 \backslash A_2] + Pr[A_1 \cap A_2] + Pr[A_2 \backslash A_1] = \\ = Pr[A_1 \backslash A_2] + 2 Pr[A_1 \cap A_2] + Pr[A_2 \backslash A_1] - Pr[A_1 \cap A_2] = \\ = Pr[A_1] + Pr[A_2] - Pr[A_1 \cap A_2], +\end{multline*} + +Для доказательства шага индукции заметим, что + +\begin{multline*} + Pr [(A_1 \cup \ldots \cup A_{n - 1}) \cup A_n] = Pr [A_1 \cup \ldots \cup A_{n - 1}] + Pr[A_n] - Pr [A_n \cap (A_1 \cup \ldots \cup A_n)] = \\ = Pr [A_1 \cup \ldots \cup A_{n - 1}] + Pr[A_n] - Pr [(A_n \cap A_1) \cup \ldots \cup (A_n \cap A_{n - 1})]. +\end{multline*} + +Здесь мы воспользовались принципом включений и исключений для двух множеств. Осталось для каждого из объединений $A_1 \cup \ldots \cup A_{n - 1},\ (A_n \cap A_1) \cup \ldots \cup (A_n \cap A_{n - 1})$ воспользоваться предположением индукции. + +\end{proof} + +\section*{8. Формула Байеса.} + +\begin{baes} + Если вероятность событий $A$ и $B$ положительна, то + + \[ + Pr[A|B] = Pr[A] \cdot \frac{Pr[B|A]}{Pr[B]} + \] + +\end{baes} + +\begin{proof} + Запишем вероятность события $A \cap B$ через условные вероятности +двумя способами: + +\[ + Pr[A \cap B] = Pr[B] \cdot Pr[A|B] = Pr[A] \cdot Pr[B|A]. +\] + +Теперь второе равенство даёт формулу Байеса. + +\end{proof} + +\section*{9. Формула полной вероятности.} + +Пусть $B_1,\ \ldots\ ,\ B_n$ — разбиение вероятностного пространства $U$, то есть $U = B_1 \cup \ldots \cup B_n$, где $B_i \cap B_j = \varnothing$ при $i \neq j$. Пусть также $Pr[B_i] > 0$ для всякого $i$. Тогда для всякого события $A$ из вероятностного пространства $U$ + +\[ + Pr[A] = \sum\limits_{i = 1}^n Pr[A|B_i] \cdot Pr[B_i]. +\] + +\begin{proof} + + \[ + Pr[A] = \sum\limits_{i = 1}^n Pr[A \cap B_i] = \sum\limits_{i = 1}^n Pr[A|B_i] \cdot Pr[B_i]. + \] + + Первое равенство получается по формуле сложения вероятностей непересекающихся событий (вероятность объединения независимых событий равна сумме вероятностей), а второе равенство – по определению условной вероятности. + +\end{proof} + +\section*{10. Линейность математического ожидания случайных величин.} + +Пусть $f : U \to R$ и $g : U \to R$ – две случайные величины на одном и +том же вероятностном пространстве. Тогда + +\[ + E[f + g] = E[f] + E[g]. +\] + +Другими словами, математическое ожидание линейно. + +\begin{proof} + Пусть вероятностное пространство $U$ состоит из исходов $u_1,\ \ldots\ ,\ u_k$ с вероятностями $p_1,\ \ldots\ ,\ p_k$ соответственно. Тогда по определению математического ожидания: + + \[ + E[f + g] = \sum\limits_{i = 1}^k (f(u_i) + g(u_i))p_i = \sum\limits_{i = 1}^k (f(u_i))p_i + \sum\limits_{i = 1}^k (g(u_i))p_i = E[f] + E[g]. + \] + +\end{proof} + +\section*{11. Формулировка и доказательство неравенства Маркова.} + +\begin{markov} + Пусть $f$ — случайная величина, принимающая только неотрицательные значения. Тогда для всякого $\alpha > 0$ верно + + \[ + Pr[f \geq \alpha] \leq \frac{E[f]}{\alpha}. + \] + + То есть, вероятность того, что случайная величина $f$ сильно больше своего математического ожидания, не слишком велика. + +\end{markov} + +\begin{proof} + По сути нужно доказать, что + + \[ + E[f] \geq \alpha \cdot Pr[f \geq \alpha]. + \] + + Пусть случайная величина $f$ принимает значения $a_1,\ \ldots\ ,\ a_k$ с вероятностями \\ $p_1,\ \ldots\ ,\ p_k$. Запишем, чему равно её математическое ожидание по определению: + + \[ + E[f] = a_1p_1 + a_2p_2 + \ldots + a_kp_k. + \] + + Посмотрим отдельно на те $a_i$, которые меньше $\alpha$, и отдельно на те $a_i$, которые не меньше $\alpha$. Если первые заменить на ноль, то сумма может только уменьшиться. Если вторые заменить на $\alpha$, то сумма также может только уменьшиться. После таких замен, у нас остаётся сумма нескольких слагаемых, каждое из которых есть $\alpha p_i$, где $p_i$ – вероятность некоторого значения случайной величины, не меньшего $\alpha$. Нетрудно видеть, что такая сумма как раз равна $\alpha \cdot Pr[f \geq \alpha]$, и теорема доказана. + +\end{proof} + +\section*{12. Полнота стандартного базиса.} + +\begin{standartbase} + + Стандартный базис (базис, состоящий из операций отрицания, конъюнкции и дизъюнкции: $\{\neg, \vee, \wedge\}$) --- полный. + +\end{standartbase} + +\begin{proof} +Вспомним, что ДНФ - это дизъюнкция конъюнктов литералов. Построим схему ДНФ. + +$x_1, \ldots ,x_n, \neg x_1, \ldots ,\neg x_n, c_1, \ldots ,c_n, D$, где $c_j$ --- конъюнкция литералов, $D$ --- дизъюнкция. Данный порядок действий соответствует определению ДНФ, следовательно ДНФ представима в виде схемы и любая функция представима в виде ДНФ, что доказано ранее. (Note: $0 = x \wedge \neg x, 1 = x \vee \neg x$) +\end{proof} + +\section*{13. Существование булевых функций от n переменных схемной сложности $\Omega(2n/n)$.} + +\begin{existsFgthen2ndivn} + Существует функция $f: \{0, 1\}^n \rightarrow \{0, 1\}$ + такая, что $C(f) \geqslant \frac{2^n}{10n}$ + (в точности то же самое, что $C(f) = \Omega(\frac{2^n}{n})$). +\end{existsFgthen2ndivn} + +\begin{proof} + Воспоьзуемся мощностным методом. Всего булевых функций от $n$ аргументов $2^{2^n}$. + + Теперь узнаем, сколько булевых схем размера меньше либо равных некоторого фиксированного + числа $L$. Для этого будем кодировать схемы двоичными словами. Посмотрим на + какое-то присваивание в схеме $S$: $g_k = g(g_i, g_j)$. Для кодирования + самой функции $g$ нужно 2 бита (так как в стандартном базисе всего три функции). + Для кодирования номеров аргументов $i$ и $j$ нужно битов не более, чем $log_2L$. + А значит для всего присваивания $g_k$ нужно не более $2 \cdot (1 + log_2L)$ бит. + + Итого размер одной схемы в битах не более, чем $L \cdot 2 \cdot (1 + log_2L)$. Каждая схема + кодирует ровно одну функцию. А значит каждое двоичное слово кодирует не более + одной функции (так как некоторые двоичные слова ни одну схему не задают). + + Получается и схем размера $L$ не более, чем двоичных слов для схем такой длины, + то есть: $2^{2L(1 + log_2L)}$. + + Пусть $L = \frac{2^n}{10n}$. Размер схемы в битах тогда будет равен: + \[ + L_2 = \frac{2^n}{10n} \cdot 2 \cdot \left(1 + log_2\left( \frac{2^n}{10n} \right)\right) = + \frac{2^n}{5n} \left( 1 + n - log_2(10n) \right), 1 - log(10n) \leqslant 0 \implies + L_2 \leqslant \frac{2^n}{5n}\cdot n = \frac{2^n}{5} + \] + А значит функций, задающейся схемой такой длины не более чем $2^{\frac{2^n}{5}}$. + Нетрудно заметить, что это число значительно меньше числа функций от $n$ аргументов. + + \[ + 2^{\frac{2^n}{5}} < 2^{2^n} + \] + + А значит существует функция, задающаяся схемой длины больше, чем $L$. + +\end{proof} + +\section*{14. Верхняя оценка $O(n2^n)$ схемной сложности булевой функции от $n$ переменных.} + +\begin{theorem} + $C(f) = O(n \cdot 2^n)$ +\end{theorem} + +\begin{proof} + Повторим предыдущие рассуждения при доказательстве того, что в стандартном + базисе любая функция вычислима. Для этого вспомним сокращенную ДНФ: + \[ + f(x) = \bigvee\limits_{\substack{a: f(a) = 1 \\ a \in \{0, 1\}^n}} x^a, \ + x^a = \bigwedge\limits_{i = 1}^{n} x_i^{a_i} + \] + Нетрудно посчитать, что схема для вычисления $x^a$ имеет размер $L_a = O(n)$. + Тогда итоговый размер схемы $L \leqslant 2^n \cdot O(n) \iff L = O(n \cdot 2^n)$. +\end{proof} + + +\section*{15. Cхема сложения $n$-битовых чисел сложности $O(n)$.} + +Вспомним схему для сложения по модулю (2 из определений). На каждом шаге добавлялось 5 присваиваний, значит, справедливо рекуррентное соотношение для количества операций $S_n = S_{n-1} + 5$. Из такого соотношения нетрудно сделать два вывода: +\begin{itemize} + \item $S_n$ вычисляется за O(n). + \item Из того, что $S_1$ --- константа, следует, что $S_n$ --- также константа. +\end{itemize} + +Пусть у нас есть 2 двоичных числа $x : \{x_0, x_1, \ldots, x_{n-1}\}, y : \{y_0, y_1, \ldots, y_{n-1}\}$, где $x_0, x_1, \ldots, x_{n-1}, y_0, y_1, \ldots, y_{n-1}$ --- двоичные разряды. Нужно выполнить схему $f: \{0,1\}^{2n} \rightarrow \{0,1\}^{n+1}$, результатом которой является $z : {z_0, z_1, \ldots, z_n-1}$. + +Вспомним привычный нам алгоритм сложения двоичных чисел поразрядно в столбик. + +$\begin{array}{l c c r} + C_n & C_{n-1} & \ldots & C_0 \\ + \hline 0 & x_{n-1} & \ldots & x_0 \\ + 0 & y_{n-1} & \ldots & y_0 \\ + \hline z_n & z_{n-1} & \ldots & z_0 \\ +\end{array}$ + +Обратим внимание на присутствие $C_0, \ldots, C_n$. Они являются тем числами (0 или 1) которые мы "запоминаем" при сложении и переносим на следующий разряд. Теперь рассмотрим отдельно некоторый $i$-й разряд сложения. + +$\begin{array}{l} + C_i \\ + \hline x_i \\ + y_i \\ + \hline z_i = x_i \oplus y_i \oplus c_i \\ +\end{array}$ + +Нетрудно догадаться, что $z_i$ является суммой по модулю 2 $i$-х разрядов 2 слагаемых и "запомненного" числа от предыдущих разрядов. Возникает вопрос, как схемно выразить $c_{i+1}$ через предыдущие разряды? Оказывается, это также нетрудно сделать, воспользовавшись функцией MAJ: $c_{i+1} = MAJ(x_i, y_i, c_i)$. + +Теперь поговорим о размере такой схемы. Как мы знаем из предыдущей лекции, сложение по модулю 2 и функцию большинства можно выполнить за константное число присваиваний. Получается, для операций $S_n, S_{n-1}$ справедливо рекуррентное соотношение $S_n = S_{n-1} + C$, где $C$ --- некая константа. Из этого можно сделать вывод, что $S_n$ вычисляется за $O(n)$. + +\section*{16. Cхема умножения $n$-битовых чисел сложности $O(n^2)$.} + +Вспомним "школьную" схему умножения столбик. Как мы помним, нужно сначала посчитать результаты поочередного умножения разрядов $y$ на все разряды $x$: + +\[u_i = y_i(x_0, x_1, \ldots, x_n)\] + +Операция выполняется за $n \cdot O(n) = O(n^2)$. + +Далее мы складываем получившиеся произведения $u_0 + u_1 + \ldots + u_n$. Операция выполнится за $O(n) \cdot O(2n) = O(n^2)$. Итого получаем выполнимость операции за $O(n^2)$. + +\section*{17. Схема проверки связности графа на $n$ вершинах полиномиального размера.} + +\textit{Проверка неориентированного графа на связность}: $Conn: \{0,1\}^{n \choose 2} \rightarrow \{0,1\}$. + +Пусть булева переменная $x_{ij}, \{i,j\} \in F(G)$ принимает заначение 1 в том случае, если между вершинами $i$ и $j$ есть ребро. Рассмотрим функцию от таких булевых переменных. + +Зададим \textit{матрицу смежности} графа. Это матрица $A \in {0, 1}^{n \times n}$, в которой на пересечении строки $i$ со столбцом $j$ стоит 1 тогда и только тогда, когда данные вершины связаны ребром. Такую матрицу и подадим на вход функции $Conn$. Заметим, что матрица смежности симметрична и на диагонали у нее обязательно стоят нули (мы запрещали петли --- ребра, ведущие из вершины в нее же саму). + +\[A = \begin{pmatrix} 0 & \ldots & x_{1n} \\ x_{21} & \ldots & x_{2n} \\ \vdots & \ddots & \vdots \\ x_{n1} & \ldots & 0 \end{pmatrix}\] + +Рассмотрим матрицу $A'$, которая отличается от матрицы $A$ тем, что у нее на главной диагонали стоят единицы, а не нули (в остальном +матрицы совпадают).В терминах графов это означает, что к каждой вершине мы добавляем петлю. В модели простых неориентированных графов мы этого не допускали, но ничего не мешает нам рассмотреть графы с петлями. Идея состоит в том, что теперь, если между двумя вершинами есть путь длины меньше $n - 1$, то есть и путь длины ровно $n - 1$ (достаточно добавить к пути нужное количество петель). Нам достаточно взглянуть на $(A')^{n - 1}$. Если в ячейках этой матрицы нет нулей, то граф связен, иначе не связен. + +\[A' = \begin{pmatrix} 1 & \ldots & x_{1n} \\ x_{21} & \ldots & x_{2n} \\ \vdots & \ddots & \vdots \\ x_{n1} & \ldots & 1 \end{pmatrix}\] + +Также упрощение можно провести со способом возведения матрицы в степень. В данный момент мы это делаем над действительными числами, что заставляет нас складывать и умножать целые числа. Чтобы делать это с помощью схем, нам придется использовать описанные выше схемы для сложения и умножения, а чтобы оценить размер получившейся схемы придется оценивать величину возникающих в процессе +вычислений целых чисел. Все это не очень хочется делать. Решение состоит в том, чтобы вместо умножения матриц над целыми числами воспользоваться так называемым \textit{булевым умножением матриц}. В нем формулы для умножения матриц такие же, как и в обычном умножении, только вместо операции умножения используется конъюнкция, а вместо сложения --- дизъюнкция. Тогда можно по индукции доказать, что в (булевой) матрице $A'^k$ на пересечении строки $i$ и столбца $j$ стоит 1 тогда и только тогда, когда в графе есть путь из вершины $i$ в вершину $j$ длины не больше $k$. Теперь мы готовы описать схему для проверки графа на связность. На вход схема +(по существу) получает матрицу смежности $A'$. Схема последовательно вычисляет булевы степени этой матрицы $A'^2, \ldots A'^{n - 1}$. Затем схема вычисляет конъюнкцию всех ячеек матрицы $A'^{n - 1}$ и подает ее на выход. + +Оценим размер получившийся схемы. Для булева умножения двух булевых матриц размер $n \times n$ достаточно $n^2 \cdot O(n) = O(n^3)$ операций (каждая ячейка произведения матриц вычисляется за линейное число операций, всего ячеек $n^2$). Всего нам нужно $(n - 1)$ умножение матриц, так что для вычисления матрицы $A'^{n - 1}$ достаточно $O(n^4)$ операций. На последнем этапе (конъюнкция ячеек $A'^{n - 1}$ нужно $O(n^2)$ операций, итого получается $O(n^4) + O(n^2) = O(n^4)$ операций. + +\section*{18. Подмножество счетного множества конечно или счетно.} + +\label{prop:AsubsetA} + $A$ -- счётное множество. Тогда $A' \subseteq A$ счётно или конечно. + \begin{proof} + $A = \{a_0, a_1, \ldots, a_n, \ldots\}$. Вычеркнем все элементы, в $A'$ + не входящие. $A' = \{a_{j_0}, a_{j_1}, \ldots, a_{j_n}, \ldots\}$. + + Если последовательность $\{a_{j_n}\}$ конечна, то и $A'$ конечно. + Если она бесконечна, то $A'$ очевидно счётно. + \end{proof} + +\section*{19. Любое бесонечное множество содержит счетное подмножество.} + +\statement{Любое бесконечное множество содержит счетное подмножество.} + +\begin{proof} + Пусть $A$ -- бесконечное множество. Тогда $M \neq \varnothing$. Выберем какой-нибудь из его элементов и обозначим его через $a_1$. Допустим в $A$ уже выбраны $n$ попарно различных элементов $a_1,\ a_2,\ \ldots\ ,\ a_n$. Так как $M$ бесконечно, то + + \[ + A \backslash \{a_1,\ a_2,\ \ldots\ ,\ a_n\} \neq \varnothing + \] + + и можно выбрать $a_{n + 1} \in A \backslash \{a_1,\ a_2,\ \ldots\ ,\ a_n\}$. + + Он отличен от всех ранее выбранных элементов. + + Таким образом, по индукции доказывается, что для любого $n$ существует в $A$ подмножество $A_n = \{a_1,\ a_2,\ \ldots,\ a_n\}$ из $n$ элементов, причем множество $A_{n + 1}$ получается из $A_n$ присоединением одного нового элемента $a_{n + 1}$. Ясно, что объединение + + \[ + B = \bigcup\limits_{n = 1}^{\infty}A_n = \{a_1,\ a_2,\ \ldots\ ,\ a_n,\ \ldots \ \} + \] + + является счетным подмножеством $A$. + +\end{proof} + +\section*{20. Счетное объединение конечных или счетных множеств конечно или счетно.} + + $\{A_0, A_1, \ldots, A_n, \ldots\} = \mathfrak{F} \sim \N$. $A_i$ -- множество. + $\mathfrak{F}$ называется семейством множеств. + $A = \bigcup\limits_{i=0}^{\infty} A_i$. + + \statement $A$ -- счётно. + \begin{proof} + \begin{align*} + A_0 &= (a_{00}, a_{01}, \ldots, a_{0n}, \ldots) \\ + A_1 &= (a_{10}, a_{11}, \ldots, a_{1n}, \ldots) \\ + \end{align*} + Некоторые из множеств могут быть конечны. Дополним их до счётных + пустым символом $\lambda \notin A$. + + Построим последовательность: $a_{00}, a_{01}, a_{10}, a_{02}, + a_{11}, a_{20}, \ldots$. (то есть проходим последовательно все значения + сумм индексов от $0$ до $\infty$). + + Теперь исключим из последовательности повторения и символы $\lambda$. + Получим требуемую последовательность $(a'_0, a'_1, \ldots, a'_n, \ldots)$. + + Теперь получим функцию $f: [n] \to A$ или $f: \N \to A$. $f$ -- биекция. + В первом случае множество конечно, во втором счётно. + + Можно было бы и не вводить $\lambda$, а исключать эти элементы сразу, + но так проще (нет никаких условий). + \end{proof} + + +\section*{21. Счетность декартова произведения счетных множеств.} + +\label{prop:CartProdAB} + Декартово произведение счётных множеств счётно. + Напомним, что \[A \times B = \left\{ (a; b)\ |\ a \in A, b \in B \right\}\] + \begin{proof} + По определению декартово произведение есть множество всех упорядоченных пар вида $\langle a,\ b\rangle$, в которых $a \in A$ и $b \in B$. Разделим пары на группы, объединив пары с одинаковой первой компонентой (каждая группа имеетвид $\{a\} \times B$ для какого-то $a \in A$). Тогда каждая группа счётна, поскольку находится во взаимно однозначном соответствии с $B$ (пара определяется своим вторым элементом), и групп столько же, сколько элементов в $A$, то есть счётное число. + \end{proof} + +\section*{22. Счетность множества слов в конечном или счетном непустом алфавите.} + +Что такое слова длины $n$ в алфавите $A$? +Это в точности декартова степень $A^n$. + +Каждая такая степень либо счётна (если $A$ +счётно), либо конечна (если $A$ конечно). + +Что такое тогда множество всех слов в алфавите? +Это в точности объединение всех слов длины $0, 1, 2, \ldots, n, \ldots$: +\[ + A^* = \bigcup\limits_{i \in \N}A^i +\] + +Получили счётное объединение счётных или конечных множеств +(а оно счётно или конечно). + +Доказательство этих фактов есть в свойствах счётных +множеств (документ с определениями). Странно? Ну ладно, +чёрт его знает как так получилось :). + +\section*{23. Несчетность множества мощности континуум.} + +Определим действительные числа следующим образом: сопоставим каждому $x \in \R$ двоичное число: $\pm \lefteqn{\underbrace{\phantom{10110 \dots 1011}}_{\text{целая часть}}}10110 \dots 1011 .\overbrace{110001 \dots 00110}^{\text{дробная часть}}$. Считаем известным, что ряд из каких-то степеней двоек сходится, причём запрещаем в числах данного вида "хвосты из единиц". + +Множество имеет мощность континуум, если оно равномощно $\R$. + +Множество счётно, если оно равномощно $\N$. +\\ + +\begin{cantor} + $\N \nsim \R$ +\end{cantor} + +\begin{proof} + +Воспользуемся тем, что $\R \sim 2^{\N}$, и докажем $\N \nsim 2^{\N}$ для получения требуемого. + + Диагональное рассудение: + + Пусть $F = \{f_0, f_1, \ldots , f_n, \ldots \}$ -- множество последовательностей $f \in 2^{\N}$. Покажем, что $\exists x \in 2^{\N} : x \notin F$, тем самым доказав, что отображение $\N \to 2^{\N}$ не сюръективно. + + Запишем элементы $F$ в квадратную таблицу по правилу $f_i = \{f_{i0} \ f_{i1} \ldots f_{in}\}$: + + $\begin{array}{lcccr} + f_0 = & f_{00} & f_{01} & \ldots & f_{0n}\\ + f_1 = & f_{10} & f_{11} & \ldots & f_{1n}\\ + \vdots & \vdots & \vdots & \ddots & \vdots \\ + f_n = & f_{n0} & f_{n1} & \ldots & f_{nn}\\ + \end{array}$ + + Выпишем последовательность по диагонали: $f_{*} = \{f_{00} \ f_{11} \ f_{22} \ldots f_{n n}\}$. Тогда пусть $x = \{\overline{f_{00}} \ \overline{f_{11}} \ldots \overline{f_{n n}}\}$. Тогда $x \neq f_{i} \ \forall i \in [0, n]$, так как $x_{j} = \overline{f_{j j}} \neq f_{j j} \ \forall j$. Значит, отображение не сюръективно. + + Таким образом, $\N \nsim 2^{\N}$, и так как $\R \sim 2^{\N}$, то $\N \nsim \R$. + +\end{proof} + +\section*{24. Теорема Кантора–Бернштейна: формулировка и доказательство.} + +\begin{cantorbern} + Если множество $A$ равномощно некоторому подмножеству множества $B$, а $B$ равномощно некоторому подмножеству множества $A$, то множества $A$ и $B$ равномощны. +\end{cantorbern} + +\begin{proof} + + + Пусть A равномощно подмножеству $B_1$ множества $B$, а $B$ равномощно подмножеству $A_1$ множества $A$ (см. риc. 1). При взаимно однозначном соответствии между $B$ и $A_1$ подмножество $B_1 \subset B$ переходит в некоторое подмножество $A_2 \subset A_1$. При этом все три множества $A, B_1$ и $A_2$ равномощны, --- и нужно доказать, что они равномощны множеству $B$, или, что то же самое, $A_1$. + + \begin{figure}[h] +\begin{center} +\begin{minipage}[h]{0.4\linewidth} + \includegraphics[height=5cm, width=\linewidth]{images/kantorbern1.jpg} + \caption{Взаимные соответсвия между множествами} + \end{minipage} + \end{center} + \end{figure} + + Теперь мы можем забыть про множество $B$ и его подмножества и доказывать такой факт: + + \textit{Если $A_2 \subset A_1 \subset A_0$ и $A_2 \sim A_0$, то все три множества +равномощны.} + + (Для единообразия мы пишем $A_0$ вместо $A$.) + + Пусть $f$ — функция, осуществляющая взаимно однозначное соответствие $A_0 \rightarrow A_2$ (элемент $x \in A_0$ соответствует элементу $f(x) \in A_2$). Когда $A_0$ переходит в $A_2$, меньшее множество $A_1$ переходит в какое-то множество $A_3 \subset A_2$ (см. рис. 2). Аналогичным образом само $A_2$ переходит в некоторое множество $A_4 \subset A_2$. При этом $A_4 \subset A_3$, так как $A_1 \subset A_2$. + + \begin{figure}[h] +\begin{center} +\begin{minipage}[h]{0.4\linewidth} + \includegraphics[height=5.3cm, width=\linewidth]{images/kantorbern2.jpg} + \caption{Последовательные вхождения множеств} + \end{minipage} + \end{center} + \end{figure} + + Продолжая эту конструкцию, мы получаем убывающую последовательность множеств + + \[A_0 \supset A_1 \supset A_2 \supset A_3 \supset A_4 \supset \ldots\] + + и взаимно однозначное соответствие $f : A_0 \rightarrow A_2$, при котором $A_i$ соответствует $A_{i + 2}$ (иногда это записывают так: $f(A_i) = A_{i+2}$). Формально можно описать $A_{2n}$ как множество тех элементов, которые получаются из какого-то элемента множества $A_0$ после $n$-кратного применения функции $f$. Аналогичным образом $A_{2n + 1}$ состоит из тех и только тех элементов, которые получаются из какого-то элемента множества $A_1$ после $n$-кратного применения функции $f$. + + Заметим, что пересечение всех множеств $A_i$ вполне может быть непусто: оно состоит из тех элементов, у которых можно сколько угодно раз брать $f$-прообраз. Теперь можно сказать так: множество $A_0$ мы разбили на непересекающиеся слои $C_i = A_i / A_{i+1}$ и на +сердцевину $C =\cap_i A_i$. + + Слои $C_0, C_2, C_4, \ldots$ равномощны (функция $f$ осуществляет взаимно однозначное соответствие между $C_0$ и $C_2$, между $C_2$ и $C_4$ и т.д.): + +\[C_0 \xrightarrow{f} C_2 \xrightarrow{f} C_4 \xrightarrow{f} \ldots\] + +То же самое можно сказать про слои с нечётными номерами: + +\[C_1 \xrightarrow{f} C_3 \xrightarrow{f} C_5 \xrightarrow{f} \ldots\] + +Можно ещё отметить (что, впрочем, не понадобится), что функция $f$ на множестве $C$ осуществляет его перестановку. + +Теперь легко понять, как построить взаимно однозначное соответствие $g$ между $A_0$ и $A_1$. Пусть $x \in A_0$. Тогда соответствующий ему элемент $g(x)$ строится так: $g(x) = f(x)$ при $x \in C_{2k}$ и $g(x) = x$ при $x \in C_{2k + 1}$ или $x \in C$ (см. рис. 3) + +\begin{figure}[h] +\begin{center} +\begin{minipage}[h]{0.4\linewidth} + \includegraphics[height=2cm, width=\linewidth]{images/kantorbern3.jpg} + \caption{Построение взаимно-однозначного соответствия} + \end{minipage} + \end{center} + \end{figure} + +\end{proof} + +\section*{25. Теорема Поста: формулировка и доказательство.} + +\begin{poste} + +Если множества $A$ и $\overline{A}$ перечислимы, то множество A разрешимо. + +\end{poste} + +\begin{proof} + +Алгоритм разрешения множества $A$ устроен так. Он исполняет +модифицированные алгоритмы перечисления множеств $A$ и $\overline{A}$ параллельно: один шаг работы алгоритма перечисления множества A, затем один шаг работы алгоритма перечисления $\overline{A}$ и так далее. + +Вместо того, чтобы печатать очередной элемент, модифицированный алгоритм +перечисления запоминает его в списке элементов множества. (В любой момент исполнения алгоритма такой список конечен.) + +Когда один из списков увеличивается, добавленный элемент сравнивается со входом $x$. Если обнаружено вхождение $x$ в список элементов множества $A$, то алгоритм разрешения останавливается и выдаёт результат $1$. Если обнаружено вхождение $x$ в список элементов множества $\overline{A}$, то алгоритм разрешения останавливается и выдаёт результат 0. В остальных случаях продолжается работа алгоритмов перечисления. + +Докажем корректность алгоритма. Пусть $x \in A$. Тогда $x$ заведомо не входит в список элементов $\overline{A}$ и результат $0$ невозможен. С другой стороны, рано или поздно $x$ появится в списке элементов $A$, поэтому алгоритм выдаст результат $1$. + +Аналогично рассуждаем в случае $x \notin A$. + +\end{proof} + +\section*{26. Разрешимые множества перечислимы.} + +\statement{Если множество $S$ разрешимо, то оно перечислимо.} + +\begin{proof} +Алгоритм перечисления множества $S$ использует алгоритм разрешения множества $S$. Он перебирает все числа, начиная с 0; для каждого числа +$n$ вычисляет индикаторную функцию $\chi S(n)$ и печатает число n, если полученное +значение равно 1. + + \begin{algorithm} + \caption{Алгоритм перечисления множества S} + \begin{algorithmic}[1] + \Function{Print}{S(n)} + \For{$n := 0 \ldots \infty$} + \If{$\chi_{S}(n) = 1$} + \State \textbf{print} n + \EndIf + \EndFor + \EndFunction + \end{algorithmic} + \end{algorithm} + +Корректность такого алгоритма ясна из определений. +\end{proof} + +\section*{27. Перечислимые множества являются множествами значений вычислимых функций.} + +\sign{ + \ + + $Comp$ -- клас вычислимых функций. + + $Dom\ Comp$ -- класс областей определения вычислимых функций. + + $Range\ Comp$ -- класс областей значения вычислимых функций. + + $Range^t\ Comp$ -- класс областей значения всюду определённых вычислимых функций. + + $\Sigma_1$ -- класс перечислимых множеств. +} + +\statement{$\Sigma_1 \subseteq Range\ Comp$} + + \begin{proof} + По определению перечислимого множества, множество $S$ -- перечислимо, если существует такая вычислимая функция: + + \[ + f: \N \to \N\ + \begin{cases} + f(\N) = S \\ + \text{Область определения} \ f \ \text{равна либо} \ \N, \text{либо} \ [n]. + \end{cases} + \] + + Тогда очевидно, что перечислимые множества есть множества значений вычислимых функций. + \end{proof} + +\section*{28. Перечислимые множества являются множествами значений всюду определенных вычислимых функций.} + +Cледствие Доказательств $27$, $29$ и $32$: $Range^t\ Comp \subseteq \Sigma_1 \subseteq Range\ Comp \subseteq Range^t\ Comp$. $29$ и $32$ приведены ниже. + + +\section*{29. Множества значений всюду определенных функций перечислимы.} + + +\statement{$Range^t\ Comp \subseteq \Sigma_1$} + + \begin{proof} + Пусть $f(n)$ -- всюду определённая вычислимая функция. Построим алгоритм, перечисляющий множество её значений: + + \begin{algorithm} + \caption{Алгоритм перечисления множества значений вычислимой функции} + \begin{algorithmic}[1] + \Function{PrintSet}{f(n)} + \For{$n := 0 \ldots \infty$} + \State \textbf{print} f(n) + \EndFor + \EndFunction + \end{algorithmic} + \end{algorithm} + + Поскольку у множества значений вычислимой функции существует алгоритм, его перечисляющий, то это множество перечилимо. + + \end{proof} + +\section*{30. Множество значений всюду определенной вычислимой функции является областью определения вычислимой функции.} + +\statement{$Range^t\ Comp \subseteq Dom\ Comp$} + + \begin{proof} + Пусть $S = f(n)$ для некоторой всюду определённой функции $f$. Опишем алгоритм вычисления функции $g$, который получает на вход $x$: перебираем все числа, начиная с 0; для каждого числа $n$ вычисляем $f(n)$ и сравниваем с $x$; в случае равенства выдаём результат 1. + + \[ + g(x) = + \begin{cases} + 1, \text{если $x \in Rangef$} \\ + \text{иначе не определена, так как для любого n выполняется $x \neq f(n)$}. + \end{cases} + \] + + Заметим, что мы доказали, что $g$ --- константна. + \end{proof} + +\section*{31. Область определения вычислимой функции является множеством значений вычислимой функции.} + +\statement{$Dom\ Comp \subseteq Range\ Comp$} + + \begin{proof} + Пусть $S$ — область определения некоторой вычислимой функции $f$, а $p$ --- номер программы, вычисляющей f. + + Опишем алгоритм вычисления функции $g$ из $\mathbb N \times \mathbb N$ в $\mathbb N$ на входе $(x, t)$: вычисляем $F(p, x, t)$ и сравниваем с $1$; если $F(p, x, t) = 1$, то выдаём результат $x$, иначе не выдаём никакого результата. + + Если $x \in S$, то $x = g(x, t)$ для некоторого $t$. И обратно, если $x = g(x, t)$ для некоторого $t$, то $U(p, x)$ определена, а значит, определена и $f(x)$. + + Мы представили $S$ как множество значений функции от двух натуральных аргументов. Чтобы перейти к функциям одного аргумента, используем вычислимую биекцию $c : \mathbb N \times \mathbb N \to \mathbb N$ и выразим $S$ как $S = g \circ c^{-1}(N)$. + \end{proof} + +\section*{32. Непустое множество значений вычислимой функции является множеством значений всюду определенной вычислимой функции.} + +\statement{$Range\ Comp \subseteq Range^t\ Comp$} + + \begin{proof} + Пусть $S = f(\N)$ для некоторой вычислимой функции $f$. Зафиксируем некоторое $a \in S$ (мы предполагаем, что множество $S$ непусто). + + Функция $f$ не всюду определена и может не иметь вычислимого всюду определённого продолжения. Поэтому используем отладочную функцию. + + Пусть $f(x) = U(p, x)$, где $U$ — некоторая универсальная вычислимая функция, для которой существует отладочная функция. Опишем алгоритм вычисления всюду определённой функции $g : \mathbb N \times \mathbb N \to \mathbb N$. На входе $(x, t)$ алгоритм вычисляет $F(p, x, t)$ и сравнивает результат с $1$. Если $F(p, x, t) = 1$, то алгоритм выдаёт $U(p, x)$. В противном случае результат равен $a$. + + По определению отладочной функции из $F(p, x, t) = 1$ следует, что $U(p, x)$ определена. Поэтому функция g всюду определена. Её множество значений совпадает с $S$. В одну сторону: если $y = g(x, t)$, то $y = a \in S$ или $y = U(p, x) = f(x) \in S$. В другую: пусть $y = f(x) = U(p, x)$. На паре $(p, x)$ функция $U$ определена, поэтому для некоторого $t$ значение отладочной функции $F(p, x, t) = 1$. Но тогда $y = g(x, t)$. Мы представили S как множество значений всюду определённой функции от двух натуральных аргументов. Чтобы перейти к функциям одного аргумента, используем вычислимую биекцию $c : \mathbb N \times \mathbb N \to \mathbb N$ и выразим $S$ как $S = g \circ c^{-1}(\mathbb N)$. + + \end{proof} + +\section*{33. Пример перечислимого неразрешимого множества} + +\begin{theorem} + Существует перечислимое неразрешимое множество. +\end{theorem} + +\begin{proof} + Рассмотрим вычислимую функцию $f(x)$, не имеющую всюду определённого вычислимого продолжения. Её область определения $F$ будет искомым множеством. В самом деле, $F$ перечислимо (по одному из определений перечислимости). Если бы $F$ было разрешимо, то функция + + \[ + g(x) = + \begin{cases} + f(x), \text{если $x \in F$} \\ + 0, \text{если $x \notin F$}. + \end{cases} + \] + + была бы вычислимым всюду определённым продолжением функции $f$ (при вычислении $g(x)$ мы сначала проверяем, лежит ли $x$ в $F$, если лежит, то вычисляем $f(x)$). +\end{proof} + +Пусть $U$ — некоторая универсальная функция. Обозначим через $H$ множество + +\[ + \{x : U(x,\ x)\ \text{определена}\}. +\] + +\statement{$H$ перечислимо, но неразрешимо} + +\begin{proof} +Множество $H$ является областью определения вычислимой функции $x \to U(x,\ x)$. Поэтому оно перечислимо. + +Неразрешимость доказывается диагональным методом. Предположим, что +$H$ разрешимо. Рассмотрим такой алгоритм вычисления функции $f$: на входе $x$ он +вызывает алгоритм разрешения множества $H$ для $x$. Если $x \in H$, то алгоритм не даёт никакого результата, а если $x \notin H$, то выдаёт результат $1$. + +Пусть $p$ — номер функции $f$ в универсальной нумерации, то есть $f(x) = U(p,\ x)$. + +Предположим, что $p \in H$. Тогда алгоритм вычисления $f$, описанный выше, не +выдаёт никакого результата, то есть $f(p) = U(p,\ p)$ не определено. По определению множества $H$ это означает, что $p \notin H$. + +Если $p \notin H$, то алгоритм вычисления $f$ даёт результат $1$, то есть $1 = f(p) = U(p,\ p)$. Следовательно, $p \in H$. + +Пришли к противоречию. Значит, множество $H$ неразрешимо. + +\end{proof} + +\section*{34. Невозможность универсальной нумерации всюду определенных вычислимых функций: формулировка и доказательство.} + + Были введены универсальные нумерации вычислимых + функций. А может быть можно ввести аналогичную + нумерацию для всюдуопределённых функций? + + Вопрос: существует ли такая всюдуопределённая + функция $V(p, x)$, что для любой всюдуопределённой + функции $f(x)$ существует номер $p$ такой, что + $\forall x \in N f(x) = V(p, x)$? + +\begin{theorem} + Не существует универсальной нумерации всюду определённых вычислимых функций. +\end{theorem} + +\begin{proof} + Расмотрим функции вида $V(p,x)$, всюду определённые + (как раз наша потенциальная нумерация). + + Воспользуемся диагональным методом, построив (мысленно) таблицу таких функций. + + Возьмём $f(x) = V(x,x) + 1$. $f(x)$ вычислима? Да. + Так как $V(x, x)$ всюдуопределена, то $f(x)$ тоже + всюдуопределена. + + Однако (как ни странно!) такой функции в нумерации гарантированно нет. Почему? Пусть $f(x)$ имеет + в такой нумерации номер $p$. Тогда посмотрим, + чему равно $f(p)$: + \[ + f(p) = V(p, p) + \] + и с другой стороны: + \[ + f(p) = V(p, p) + 1 + \] + + $V(p, p) = V(p, p) + 1$. Противоречие! +\end{proof} + +\section*{35. Функция вычислима тогда и только тогда, когда ее график перечислим.} + +\begin{theorem} + Функция вычислима тогда и только тогда, когда её график перечислим. +\end{theorem} + +\begin{proof} +Пусть $f(x)$ вычислима. Перечислим его график алгоритмом: +\begin{algorithm} + \caption{Алгоритм перечисления графика функции} + \label{algo:35_task_proof} + \begin{algorithmic} + \Function{count\_graphic}{x} + \For{$i := 0..\infty$} + \State $(x, t) = \pi(i)$ + \State \# запустить $f(x)$ на $t$ тактов + \If{$f(x)$ остановилась} + \State print $(x, f(x))$ + \EndIf + \EndFor + \EndFunction + \end{algorithmic} +\end{algorithm} + +Пусть теперь $x \in Dom(f)$ тогда $f(x)$ останавливается +на каком-то $t$, а значит точка $(x, f(x))$ будет перечислена. Если $x \notin Dom(f)$ тогда $f(x)$ не +останавливается при любом $t$, а значит эта точка +перечислена не будет. + +$\pi: \N \to \N \times \N$ -- вычислимая биекция (сущетвование доказывалось ранее). + +Пусть график $G = \{(x,\ y) :\ y = f(x)\}$ перечислим. Тогда следующий алгоритм +вычисляет $f$: на входе $x$ запускаем перечисление элементов графика, когда найден очередной элемент $(y,\ z)$, проверяем $x = y$, в случае равенства выдаём результат $z$. + +Из определения графика ясно, что на входе $x$ такой алгоритм может выдать +лишь результат $f(x)$. С другой стороны, если $x$ принадлежит области определения $f$, то пара $(x,\ f(x))$ рано или поздно будет перечислена. В этот момент алгоритм и выдаст результат $f(x)$. + +\end{proof} + +\section*{36. Перечислимые множества — это в точности проекции разрешимых.} + +$Pr\ D$ - проекция D. + +\begin{theorem} + Перечислимые множества — это в точности проекции разрешимых. +\end{theorem} + +\begin{proof} +Проекция пустого множества пуста. Дальше рассматриваем только непустые множества. + +Пусть $D \subseteq \N \times \N$ разрешимо, $(a,\ b) \in D$. По определению, индикаторная функция $\chi_D$ вычислима. Но тогда вычислима и функция + +\[ + f: (x,\ y) =\ + \begin{cases} + x,\ \text{если} \chi_D(x,\ y) = 1 \\ + a,\ \text{в противном случае} + \end{cases} +\] + +для которой $f(\N \times \N) = Pr\ D$. Поэтому $Pr\ D$ перечислимо. + +Пусть $S$ — перечислимо. Тогда $S$ — область определения некоторой вычислимой +функции $f$, которая имеет номер $p$ в универсальной нумерации. Построим такое +множество: + +\[ + D = \{(x,\ t) :\ F(p,\ x,\ t) = 1\}. +\] + +Докажем, что $Pr\ D = S$. Пусть $x \in S$. Это значит, что на $x$ функция $f$ определена, тем самым определена и функция $U(p,\ x)$. Но тогда по определению отладочной функции $F(p,\ x,\ t) = 1$ для некоторого $t$, то есть $x \in Pr\ D$. + +В обратную сторону аналогично: если $x \in Pr\ D$, то для некоторого $t$ выполняется $F(p,\ x,\ t) = 1$, то есть $U(p,\ x) = f(x)$ определена. Таким образом, $x \in S$. + +\end{proof} + +\section*{37. Пример вычислимой функции без всюду определенного вычислимого продолжения.} + +Определим $\overline{h_U}$ как + + \[ + \overline{h_{U}}(x) = + \begin{cases} + 1, \text{если $U(x, x) = 0$} \\ + 0, \text{если $U(x, x)$ определена и $U(x, x) \neq 0$ }. + \end{cases} + \] + +Эта функция вычислима: подадим на вход алгоритма, вычисляющего $U$, пару аргументов $(x, x)$; после остановки этого алгоритма выдадим 1, если результат вычисления $U$ равен $0$, и $0$ в противном случае. Если $U(x, x)$ не определена, то данный алгоритм также не выдаёт никакого результата. + +\begin{theorem} + У $\overline{h_U}$ нет всюду определённого вычислимого продолжения (нет функции, доопределяющей $\overline{h_U}$ на всей области определения). +\end{theorem} + +\begin{proof} + + Доказываем от противного. Пусть $g(x)$ --- всюду определённое вычислимое продолжение функции $\overline{h_U}$. Выберем такое $p$, что $g(x) = U(p, x)$ и придём к противоречию аналогично доказательству теоремы о невычислимости $H$. Так как $g(x)$ + всюдуопределённая, то и в точке $p$ она определена. А значит $U(p, p)$ определена, при этом $g(p) = \overline{h_U}(p)$ (так как $g$ -- продолжение $\overline{h_U}$). + Возможны два случая: + \begin{enumerate} + \item $U(p, p) = 0 \implies g(p) = 0, g(p) = + \overline{h_U}(p) \implies + \overline{h_U}(p) = 0 \implies + U(p, p) \neq 0$. Противоречие + \item $U(p, p) \neq 0 \implies g(p) \neq 0, + g(p) = \overline{h_U}(p) \implies + \overline{h_U}(p) \neq 0 \implies + \overline{h_U}(p) = 1$ (так как никаких других + значений $\overline{h_U}$, кроме $0$ и $1$ не принимает). А это значит, что $U(p,p) = 0$. + Противоречие. + \end{enumerate} + + В обоих случаях получили противоречие, а значит + и такого дополнения нет. + +\end{proof} + +\section*{38. Доказательство теоремы Успенского–Райса.} + +Cледствие из теоремы о неподвижной точке: + +\begin{rec} + Для любой вычислимой функции $V(n,\ x)$ и главной универсальной + функции $U(n, x)$ существует $q$ такое, что: + + \[ + V(q,\ x) = U(q,\ x). + \] + +\end{rec} + +\begin{proof} + Найдем $s(n): V(n, x) = U(s(n), x)$. $s(n)$ -- всюдуопределённая. + Тогда (по теореме о неподвижной точке) + $\exists q : V(q, x) = U(s(q), x) = U(q, x)$. +\end{proof} + +Пусть есть некоторое свойство, которое мы хотим проверить +для некоторой функции. + +Формально: +Пусть $\{f:\N\to\N\}$ -- множество вычислимых функций. +Разделим его на два непересеающихся подмножества $A$ и $\overline{A}$. +\[ +\{f\ |\ f:\N\to\N\} = A \cup \overline{A} +\] +$A$ -- множество тех функций, для которых выполняется некое свойство, +$\overline{A}$ -- множество тех функций, для которых это свойство не выполняется. + +Возьмём некоторую универсальню функцию $U(p,\ x)$. + +Обозначим за $P_A$ множество всех $p$ таких, что $U(p,\ x) \in A$. +\[ +P_A = \{p\ |\ U(p, x) \in A\} +\] + +Тогда вопрос можно поставить так: разрешимо ли множество +программ, удовлетворяющих нашему свойству? На этот вопрос и отвечает теорема +Успенского-Райса: +\begin{usp-rais} + Если $A$ -- нетривиально ($A \neq \varnothing,\ \overline{A} \neq \varnothing$), а $U(q,\ x)$ -- главная универсальная функция, то множество $P_A$ неразрешимо. +\end{usp-rais} +Введём для удобства ещё функции $\varepsilon \in \overline{A}$ (нигде не +определённая) и $\xi \in A$ (какая-то функция, удовлетворяющая условию). +Сделать это можно по аксиоме выбора. + +Если $A$ -- это множество нигде не определённых функций, то поменяем их +местами так как $P_A$ разрешимо тогда и только тогда, когда его +дополнение разрешимо. + +\begin{proof}[Доказательство 1] + Пусть $P_A$ разрешимо. Тогда существует всюдуопределённая + характеристическая функция $\chi_{P_A}$. + Построим алгоритм на странице \pageref{algo:usp-rais-proof1} + (алгоритм \ref{algo:usp-rais-proof1}). + \begin{algorithm} + \caption{Алгоритм, создающий противоречие для разрешимости $P_A$ в док-ве 1} + \label{algo:usp-rais-proof1} + \begin{algorithmic} + \Function{problem}{x} + \If{$\chi_{P_A} = 0$} + \State \Return $\xi(x)$ + \Else + \State \Return $\varepsilon(x)$. + \EndIf + \EndFunction + \end{algorithmic} + \end{algorithm} + + Он имеет некоторый номер $p$ (который использован в программе) в $U$. + \begin{itemize} + \item $p \in P_A$. Тогда $U_p(x) = \varepsilon(x)$, + но $\varepsilon(x) \in \overline{A} \implies + p \notin P_A$. Противоречие. + + \item $p \notin P_A$. Тогда $U_p(x) = \xi(x)$, но + $\xi(x) \in A \implies p \in P_A$. Противоречие. + \end{itemize} + Значит алгоритма разрешения не существует. + + Может показаться, что использование номера программы в ней самой недопустимо, + однако по свойству рекурсии это делать абсолютно законно. +\end{proof} + +\begin{proof}[Доказательство 2] + Пусть есть алгоритм, который строит алгоритм по номеру из шаблона + (функция $\varphi : n \mapsto p_n$). Алгоритм выглядит так, как показано + на странице \pageref{algo:usp-rais-proof2} (алгоритм \ref{algo:usp-rais-proof2}). + + \begin{algorithm} + \caption{Шаблон алгоритма $p_n$ для функции $\varphi$ в док-ве 2} + \label{algo:usp-rais-proof2} + \begin{algorithmic} + \Function{problem}{x} + \State $U(n, n)$ + \State \Return $\xi(x)$ + \EndFunction + \end{algorithmic} + \end{algorithm} + + Пусть $H = \{ n\ |\ U(n, n) \text{ останавливается} \}$. + Рассмотрим два случая: + \begin{enumerate} + \item $n \in H \implies U(p_n, x) = \xi(x)$. + \item $n \notin H \implies U(p_n, x) = \varepsilon(x)$. + \end{enumerate} + Что это значит? Это значит, что мы выразили (по факту) + одну характеристическую функцию через другую: + \[ \chi_H(n) = (\chi_{P_A} \circ \varphi)(n) \] + \[ n \in H \iff p_n \in P_A \] + + Если $\chi_{P_A}$ вычислима, то вычислима и $\chi_H$, однако это не так. + + Так как функция $U$ -- главная, то $\varphi$ представима в виде функции + от двух аргументов $V(n, x)$ (номера шаблона и аргумента). + \[ U(p_n, x) = V(n, x) = U(s(n), x) \] + + Значит $\chi_{P_A}$ не является вычислимой. + +\end{proof} + +\section*{39. Доказательство теоремы о неподвижной точке.} + +\begin{point} + Пусть $U$ -- главная универсальная функция, $h(n)$ -- любая всюду определённая вычислимая функция. Тогда: + + \[ + \exists\ q \ : \ U(q,\ x) = U(h(q),\ x). + \] +\end{point} + +Честно сказать, не все учёные понимают эту теорему, однако её можно объяснить неформально +так: для любой программы на любом универсальном языке существует ещё одна программа, +которая делает то же самое (то есть программы совпадают). + +\begin{proof} + Для начала найдем такую функцию $f(p): \forall g(p) - \text{вычислимой } + \exists p: f(p) = g(p)$. В действительности, она существует, вот например: + $f(p) = U(p, p)$. Тогда $g(p)$ тоже имеет какой-то номер $q$ и тогда + $g(q) = U(q, q) = f(q)$. + + Рассмотрим функцию $V(p, x) = U(f(p), x)$. Тогда $V(p, x)$ -- универсальная, + ведь если была функция $\varphi$ с номером $k$, тогда в некоторой точке $f(p)$ + принимает значение $k$ и $\varphi(x) = U(f(p), x) = V(p, x)$. + + По определению главной универсальной функции $V(p, x) = U(s(p), x)$. + + Соберём все вместе и получим: $U(f(p), x) = V(p, x) = U(s(p), x)$. Заметим, + что $f(p)$ не обязана быть всюдуопределённой, а $s(p)$ уже всюдуопределена. + + Тогда вспомним про нашу функцию $h(n)$ из условия и введём функцию $g(p) = h(s(p))$. + Тогда (по построению функции $f$): $\exists p : g(p) = f(p)$. + + Опять же, собираем всё вместе: + \[ + \exists p : U(s(p), x) = V(p, x) = U(f(p), x) = U(g(p), x) = U(h(s(p)), x) + \] + Пусть $q = s(p)$. Тогда: + \[ + \exists q : U(q, x) = U(h(q), x) + \] +\end{proof} + +\section*{40. Композиция функций, вычислимых на машине Тьюринга, вычислима на машине Тьюринга.} + +\begin{theorem} + Пусть $f : B^{*} \to B^{*},\ g : B^{*} \to B^{*}$ вычислимы МТ. Тогда $f \circ g$ также вычислима МТ. +\end{theorem} + +\begin{proof} + + Результат работы одного алгоритма можно подать на вход другого алгоритма. + + Пусть $M_1$ вычисляет $g$, а $M_2$ вычисляет $f$. Тогда МТ, которая состоит из последовательного соединения блоков $M_1$ и $M_2$ вычисляет $f \circ g$. + + Если первая машина $M_1$ заканчивает работу, оставляя на ленте + только полезный результат и ничего больше, то тогда определён результат вычисления МТ, так как на ленте не останется \textit{мусора}, изменяющего работу машины. + + Докажем тогда лемму \textit{об уборке мусора} + \ + + \begin{fulllemma}Пусть машина $M$ вычисляет функцию $f$. Тогда существует такая машина $M'$, которая вычисляет ту же функцию, но финальная конфигурация которой на любом входе $w$ из области определения $f$ имеет вид $q_f f(w)$. + \end{fulllemma} + + \begin{proof} + Машина $M'$ будет последовательным соединением четырёх машин. + + \begin{enumerate} + \item Первая машина $M_1$ преобразует начальную конфигурацию $q'_0w$ в конфигурацию $\triangleleft q_0w \triangleright$, где $q_0$ — начальное состояние машины $M$. + \item Вторая машина $M_2$ работает так же, как исходная машина $M$, но сохраняет окаймление конфигурации символами $\triangleleft,\ \triangleright$. + \item Третья машина $M_3$ стирает символы слева от положения головки в финальной конфигурации машины $M_2$. + \item Четвёртая машина $M_4$ стирает символы справа от последнего символа результата работы $M_2$ и возвращает головку в ту ячейку, в которой она была при остановке машины $M_2$. + \end{enumerate} + + Как ясно из этого описания, при корректной реализации каждой из этих четырёх машин их соединение $M'$ удовлетворяет искомому свойству. + + Опишем реализации этих четырёх машин. + + Машина $M_1$ последовательно выполняет следующие шаги: + + \begin{enumerate} + \item сдвинуться на одну ячейку влево, записать в неё символ $\triangleleft$ + \item сдвинуться до первого пустого символа справа + \item записать символ $\triangleright$ + \item сдвинуться до символа $\triangleleft$ слева + \end{enumerate} + + Таблица переходов машины $M_2$ совпадает с таблицей переходов исходной машины $M$ за исключением работы на добавленных символах $\triangleleft,\ \triangleright$. На символе $\triangleleft$ машина выполняет следующие такты работы: + + \begin{enumerate} + \item записать пустой символ, сдвинуться влево и перейти в состояние $\overline{q}$ + \item записать символ $\triangleleft$, сдвинуться вправо перейти в состояние $q$ + \end{enumerate} + + Работа $M_2$ на символе $\triangleright$ устроена аналогично (разумеется, символ переносится вправо). + + \begin{figure}[h] + \begin{center} + \begin{minipage}[h]{0.6\linewidth} + \includegraphics[height=2cm, width=\linewidth]{images/MTboarder.png} + \caption{Сдвиг левого ограничителя рабочей зоны} + \end{minipage} + \end{center} + \end{figure} + + Как видно из описания, количество состояний у машины $M_2$ в два раза больше, чем у исходной машины $M$, а работа при чтении добавленных символов окаймления устроена так, что машина переносит символ окаймления на одну ячейку вне рабочей зоны, возвращается назад и продолжает работу как исходная машина $M$. Поэтому машина $M_2$ закончит работу, имея слева и справа от рабочей зоны символы $\triangleleft,\ \triangleright$. + + Опишем теперь устройство машины $M_3$. Она начинает работу в одном из финальных состояний $q_f$ исходной машины $M$. Работа машины $M_3$ разбивается на следующие шаги: + + \begin{enumerate} + \item пометить текущую ячейку, сдвинуться влево и перейти в состояние $q_l$ + \item идти влево до символа $\triangleleft$, заменяя символ в каждой ячейке на пустой символ + \item на символе $\triangleleft$ записать пустой символ и перейти в финальное состояние $q_r$ + \end{enumerate} + + Второй шаг реализуется такой таблицей переходов: + + \[ + \delta(a,\ q_l) = (\Lambda,\ q_l, -1),\ a \neq \triangleleft + \] + + Ясно, что в результате работы машины $M_3$ все символы слева от результата работы исходной машины $M$ будут заменены на пустые. + + Последняя машина $M_4$ должна убирать мусор справа от результата работы исходной машины. Она начинает работу в состоянии $q_r$ (финальном состоянии предыдущей машины) и исполняет следующие шаги: + + \begin{enumerate} + \item сдвинуться вправо до помеченной ячейки + \item сдвинуться вправо до пустого символа (быть может, помеченного) + \item идти вправо до символа $\triangleright$, заменяя символ в каждой ячейке на пустой символ + \item на символе $\triangleright$ записать пустой символ + \item идти влево до помеченной ячейки + \item убрать пометку и остановиться + \end{enumerate} + + По завершении последовательной работы машин $\{M_1,\ M_2,\ M_3,\ M_4\} = M'$ финальная конфигурация на входе $w$ из области определения $f$ как раз будет иметь вид $q_f f(w)$. + + \end{proof} + + По лемме об уборке мусора каждая вычислимая на МТ функция вычислима машиной, которая в конце работы оставляет на ленте только результат работы. + + Машину $M_1$, вычисляющую $g$, заменяем на "усовершенствованную" машину $M_1'$, вычисляющую ту же функцию $g$, но при этом не оставляющую "мусора". Также заменим $M_2$ на аналогичную $M_2'$. Последовательно соединяем $M_1'$ и $M_2'$, вычисляющую $f$, и получаем композицию машин $M_2' \circ M_1'$, вычисляющую композицию функций $f \circ g$. + + Тогда ясно, что последовательное соединение любого количества таких "усовершенствованных" машин вычисляет композицию функций, вычислимых этими машинами. + +\end{proof} + +\end{document} diff --git a/discrete-math/tex/images/1.png b/discrete-math/tex/images/1.png new file mode 100644 index 0000000..9f4aeef Binary files /dev/null and b/discrete-math/tex/images/1.png differ diff --git a/discrete-math/tex/images/2.png b/discrete-math/tex/images/2.png new file mode 100644 index 0000000..9441378 Binary files /dev/null and b/discrete-math/tex/images/2.png differ diff --git a/discrete-math/tex/images/3.png b/discrete-math/tex/images/3.png new file mode 100644 index 0000000..c33a327 Binary files /dev/null and b/discrete-math/tex/images/3.png differ diff --git a/discrete-math/tex/images/Comp.png b/discrete-math/tex/images/Comp.png new file mode 100644 index 0000000..c877afb Binary files /dev/null and b/discrete-math/tex/images/Comp.png differ diff --git a/discrete-math/tex/images/CompAs.png b/discrete-math/tex/images/CompAs.png new file mode 100644 index 0000000..b780ba8 Binary files /dev/null and b/discrete-math/tex/images/CompAs.png differ diff --git a/discrete-math/tex/images/MTboarder.png b/discrete-math/tex/images/MTboarder.png new file mode 100644 index 0000000..f148a58 Binary files /dev/null and b/discrete-math/tex/images/MTboarder.png differ diff --git a/discrete-math/tex/images/Tab2MT.png b/discrete-math/tex/images/Tab2MT.png new file mode 100644 index 0000000..cd89e12 Binary files /dev/null and b/discrete-math/tex/images/Tab2MT.png differ diff --git a/discrete-math/tex/images/TabMT.png b/discrete-math/tex/images/TabMT.png new file mode 100644 index 0000000..3de325b Binary files /dev/null and b/discrete-math/tex/images/TabMT.png differ diff --git a/discrete-math/tex/images/bi.png b/discrete-math/tex/images/bi.png new file mode 100644 index 0000000..b28208e Binary files /dev/null and b/discrete-math/tex/images/bi.png differ diff --git a/discrete-math/tex/images/in.png b/discrete-math/tex/images/in.png new file mode 100644 index 0000000..c6beb81 Binary files /dev/null and b/discrete-math/tex/images/in.png differ diff --git a/discrete-math/tex/images/kantorbern1.jpg b/discrete-math/tex/images/kantorbern1.jpg new file mode 100644 index 0000000..831df0e Binary files /dev/null and b/discrete-math/tex/images/kantorbern1.jpg differ diff --git a/discrete-math/tex/images/kantorbern2.jpg b/discrete-math/tex/images/kantorbern2.jpg new file mode 100644 index 0000000..a21450a Binary files /dev/null and b/discrete-math/tex/images/kantorbern2.jpg differ diff --git a/discrete-math/tex/images/kantorbern3.jpg b/discrete-math/tex/images/kantorbern3.jpg new file mode 100644 index 0000000..664d743 Binary files /dev/null and b/discrete-math/tex/images/kantorbern3.jpg differ diff --git a/discrete-math/tex/images/sur.png b/discrete-math/tex/images/sur.png new file mode 100644 index 0000000..9dfdab5 Binary files /dev/null and b/discrete-math/tex/images/sur.png differ diff --git a/linear-algebra/colloc/definitions.pdf b/linear-algebra/colloc/definitions.pdf new file mode 100644 index 0000000..d1d954b Binary files /dev/null and b/linear-algebra/colloc/definitions.pdf differ diff --git a/linear-algebra/colloc/questions.pdf b/linear-algebra/colloc/questions.pdf new file mode 100644 index 0000000..a28b8ca Binary files /dev/null and b/linear-algebra/colloc/questions.pdf differ diff --git a/linear-algebra/colloc/tex/definitions.tex b/linear-algebra/colloc/tex/definitions.tex new file mode 100644 index 0000000..676ed24 --- /dev/null +++ b/linear-algebra/colloc/tex/definitions.tex @@ -0,0 +1,839 @@ +\input{../../tex/header.tex} + +\title{Линейная Алгебра и Геометрия\\Определения} +\author{Лекторий ПМИ ФКН} +\date{3-4 июня 2016} + +\begin{document} +\maketitle + +\begin{center} +\huge{Относитесь к данному материалу критически! Никто не гарантирует, что это абсолютно правильные билеты: в них могут быть недочеты, ошибки, опечатки, что угодно, ведь эти билеты писали студенты, а не преподаватели. Старайтесь вникать в то, что читаете, а не просто зазубривать.} +\end{center} + +\begin{enumerate} +\item \textbf{Алгебраическая форма комплексного числа. Сложение, умножение и деление комплексных чисел в алгебраической форме.} + +Запись $z = a + bi$, где $a, b \in \R$, называется алгебраической формой комплексного числа $z \in \mathbb{C}$. + +$a = \Re z$ — действительная часть числа $z$. + +$b = \Im z$ — мнимая часть числа $z$. + +Сложение: $$ (a + bi) + (c + di) = (a + c) + (b + d)i.$$ + +Умножение: $$(a + bi)(c + di) = ac + adi + bci + bdi^2 = (ac - bd) + (ad + bc)i.$$ + +Деление: $$\frac{a + bi}{c + di} = \frac{(a + bi)(c - di)}{c^2 + d^2} = \frac{ac + bd}{c^2 + d^2} + \frac{bc - ad}{c^2 + d^2}i, \quad (c + di) \neq 0.$$ + +В делении используется формула обратного элемента: +$$ +\frac{1}{a + bi} = \frac{\overline{a + bi}}{|a + bi|^2} = \frac{a - bi}{a^2 + b^2}. +$$ + +\item \textbf{Комплексное сопряжение и его свойства: сопряжение суммы и произведения комплексных чисел.} + +Отображение $\mathbb{C} \rightarrow \mathbb{C} : a + bi \mapsto a - bi$ называется (комплексным) сопряжением. Само число $\overline{z} = a - bi$ называется (комплексно) сопряженным к числу $z = a + bi$. + +Для любых двух комплексных чисел $z, w \in \mathbb{C}$ выполняется, что +\begin{enumerate} +\item $\overline{\overline{z}} = z$ сопряжённое к сопряжённому есть само это число +\item $z \cdot \overline{z} = |z^2|$ +\item $z + \overline{z} = 2Re(z)$ Re(z) --- действительная часть числа $z$ +\item $\overline{z + w} = \overline{z} + \overline{w}$; +\item $\overline{zw} = \overline{z} \cdot \overline{w}$. +\end{enumerate} + +\item \textbf{Геометрическая модель комплексных чисел, интерпретация в ней сложения и сопряжения.} + +Заметим, что поле комплексных чисел $\mathbb{C} = \{(a, b) \mid a, b \in \mathbb{R}\}$ равно $\mathbb{R}^2$. Следовательно, комплексные числа можно представить как точки на действительной плоскости $\mathbb{R}^2$, или сопоставить их векторам. + +В таком представлении сложение комплексных чисел интерпретируется как сложение векторов, а сопряжение — как отражение относительно оси $Ox (\Re z)$. + +\item \textbf{Модуль комплексного числа и его свойства: неотрицательность, неравенство треугольника, модуль произведения двух комплексных чисел.} + +Модулем комплексного числа $z = a + bi$ называется длина соответствующего вектора. Обозначение: $|z|; |a+bi| = \sqrt{a^2 + b^2}$. + +Свойства модуля: +\begin{enumerate} +\item $|z| \geqslant 0$, причем $|z| = 0$ тогда и только тогда, когда $z = 0$; +\item $|z + w| \leqslant |z| + |w|$ — неравенство треугольника; +\item $z\cdot\overline{z} = |z|^2$; +\item $|zw| = |z| \cdot |w|$; +\end{enumerate} +\item \textbf{Аргумент комплексного числа.} + +Аргументом комплексного числа $z \neq 0$ называется всякий угол $\varphi$ такой что +\[ +\cos \varphi = \frac{a}{|z|} = \frac{a}{\sqrt{a^2 + b^2}}; \quad \sin \varphi = \frac{b}{|z|} = \frac{b}{\sqrt{a^2 + b^2}}. +\] +\item \textbf{Тригонометрическая форма комплексного числа.} + +Используя аргумент, можно представить комплексное число следующим образом: +\[ +\left. +\begin{aligned} +&a = |z|\cos \varphi \\ +&b = |z|\sin \varphi +\end{aligned} +\right| \Rightarrow z = a + bi = |z| \cos \varphi + i |z| \sin \varphi = |z|(\cos\varphi + i\sin\varphi) +\] + +Запись $z = |z|(\cos\varphi + i\sin\varphi)$ называется тригонометрической формой \\ комплексного числа $z$. + +\item \textbf{Формула Муавра.} + +Пусть $z = |z|\left(\cos\varphi + i \sin \varphi\right)$. Тогда: +\[z^n = |z|^n\left(\cos\left(n\varphi\right)+i\sin\left(n\varphi\right)\right) \quad \forall n \in \mathbb{Z}. +\] + +\item \textbf{Извлечение корней из комплексных чисел.} + +Пусть $n\in\mathbb N$ и $n\geqslant2$. + +Корнем $n$-й степени из числа $z$ называется всякое $w\in\mathbb C$: $w^n=z$. То есть +\[ +\sqrt[n]{z} = \{w\in\mathbb C\ |\ w^n = z\}. +\] + +Представим $z$ и $w$ в тригонометрическом виде: +\begin{gather*} +z = |z|\left(\cos\varphi+i\sin\varphi\right), \quad w = |w|\left(\cos\psi+i\sin\psi\right) +\end{gather*} + +Если $z=0$, то $w=0$. В противном случае, $z$ имеет ровно $n$ корней $n$-й степени: + +\[ \sqrt[n]{z} = \Biggl\{\sqrt[n]{|z|}\left(\cos\cfrac{\varphi+2\pi k}{n}+i\sin\cfrac{\varphi+2\pi k }{n}\right)\ \biggl|\ k=0,\ldots,n-1\Biggr\}. +\] + +\item \textbf{Решение квадратных уравнений с комплексными коэффициентами.} + +Пусть дано квадратное уравнение $az^2+bz+c=0$, где $a,\ b,\ c\in\mathbb{C}$ и $ a \neq 0$. Тогда оно решается аналогично квадратным уравнениям над полем $\R$, с тем лишь отличием, что из дискриминанта всегда можно извлечь корень. +\begin{gather*} +\{d_1,d_2\} = \sqrt[2]{b^2-4ac} \\ +z_1 = \cfrac{-b+d_1}{2a},\ z_2 = \cfrac{-b+d_2}{2a} +\end{gather*} + +\item \textbf{Основная теорема алгебры комплексных чисел.} + +Всякий многочлен $P\left(z\right) = a_nz^n + a_{n-1}z^{n-1} + \ldots \hm{+} a_1z + a_0$ степени $n$, где $n \geqslant 1$, $a_n \neq 0$, и $a_0,\ldots,a_n \in \mathbb{C}$ имеет корень. + +\item \textbf{Овеществление комплексного векторного пространства и его размерность.} + +$V$ --- векторное пространство над $\mathbb{C}$. Овеществление пространства $V$ --- это то же пространство $V$, рассматриваемое как пространство над $\mathbb{R}$. Обозначение: $V_\mathbb{R}$. + +Пусть $\dim V < \infty$. Тогда $\dim V_\mathbb{R} = 2\dim V$. + +\item \textbf{Комплексификация вещественного векторного пространства и его размерность.} + +Пусть $W$ --- пространство над $\mathbb{R}$. Комплексификация пространства $W$ --- это множество $W\times W = W^\mathbb{C} \hm{=} \{\left( u, v\right)\ |\ u,v \in W\}$ с операциями $\left(u_1, v_1\right) + \left(u_2, v_2\right) = \left(u_1+u_2, v_1+v_2\right)$, $\left(a + bi\right)\left(u, v\right) \hm{=} \left(au-bv, av+bu\right)$, где $(a + bi) \in \C$. + +Рутинная проверка показывает, что $W^\C$ является векторным пространством над полем~$\C$, причем $\dim W^\mathbb{C} = \dim W$. + +\item \textbf{Сумма двух подпространств векторного пространства.} + +Пусть $V$ --- конечномерное векторное пространство, а $U$ и $W$ --- его подпространства. + +Сумма подпространств $U$ и $W$ --- это множество +\[ +U+W = \{u + w\ |\ u \in U, w \in W\}, +\] +которое является подпространством векторного пространства $V$. + +\item \textbf{Теорема о связи размерности суммы двух подпространств с размерностью их пересечения.} + +Пусть $V$ --- конечномерное векторное пространство, а $U$ и $W$ --- его подпространства. + +$\dim \left(U \cap W\right) = \dim U + \dim W - \dim \left(U+W\right)$ + +\item \textbf{Прямая сумма двух подпространств векторного пространства.} +Пусть $V$ --- конечномерное векторное пространство, а $U$ и $W$ --- подпространства. + +Если $U \cap W = \{0\}$, то $U + W$ называется прямой суммой. + +\item \textbf{Матрица перехода от одного базиса векторного пространства к другому.} + +Пусть $V$ --- векторное пространство, $\dim V = n$, $\e = (e_1, \ldots, e_n)$ и $\e' =(e_1', \ldots, e_n')$ --- базисы в $V$. + +Матрицей перехода от базисе $\e$ к базису $\e'$ называется матрица, по столбцам которой стоят координаты базиса $\e'$ в базисе $\e$. +\begin{gather*} +e'_j = \sum_{i = 1}^{n} c_{ij}e_i, \quad c_{ij} \in F \\ +(e'_1, \ldots, e'_n) = (e_1, \ldots, e_n) \cdot C, \quad C = (c_{ij}) \text{--- матрица перехода} +\end{gather*} + +\item \textbf{Формула преобразования координат вектора при замене базиса векторного пространства.} + +Пусть $V$ --- векторное пространство. Формула преобразования координат вектора $v \in V$ при переходе от базиса $\e$ к $\e'$: +\begin{gather*} +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} += C +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*} +\qquad \text{или} \qquad +x_i = \sum_{j = 1}^{n}c_{ij}x'_j, +\end{gather*} +где $(x_1, \ldots, x_n)$ --- координаты вектора $v$ в базисе $\e $, $(x_1', \ldots, x_n')$ --- координаты вектора $v$ в базисе $\e '$ и $C$ --- матрица перехода от базиса $\e $ к базису $\e '$. + +\item \textbf{Линейное отображение.} + +Пусть $V$ и $W$ --- два векторных пространства над полем $F$. + +Отображение $f : V \rightarrow W$ называется линейным, если: +\begin{enumerate} +\item $f(u_1 + u_2) = f(u_1) + f(u_2), \quad \forall u_1, u_2 \in V$; +\item $f(\alpha u) = \alpha f(u), \quad \forall u \in V,\ \forall \alpha \in F$. +\end{enumerate} + +\item \textbf{Изоморфизм векторных пространств. Изоморфные векторные пространства.} + +Пусть $V$ и $W$ --- два векторных пространства над полем $F$. + +Отображение $\phi: V \rightarrow W$ называется изоморфизмом, если $\phi$ линейно и биективно. Обозначение: $\phi : V \isom W$. + +Два векторных пространства $V$ и $W$ называются изоморфными, если существует изоморфизм $\phi: V \isom W$ (и тогда существует изоморфизм $V \leftisom W$). Обозначение: $V \simeq W$ или $V \cong W$. + +\item \textbf{Критерий изоморфности двух конечномерных векторных пространств.} + +Два конечномерных векторных пространства $V$ и $W$ изоморфны тогда и только тогда, когда $\dim V \hm= \dim W$. + +\item \textbf{Матрица линейного отображения.} + +Пусть $V$ и $W$ --- векторные пространства, $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $\phi: V \rightarrow W$ --- линейное отображение. + +Матрицей линейного отображения $\phi$ в базисах $\e$ и $\mathbb{f}$ (или по отношению к базисам $\mathbb{e}$ и~$\mathbb{f}$) называется такая матрица, у которой в $j$-ом столбце выписаны координаты вектора $\phi(e_j)$ в базисе $\mathbb{f}$. +\[ +\phi(e_j) = a_{1j}f_1 + \ldots + a_{mj}f_m = \sum_{i = 1}^{m}a_{ij}f_i, \quad A = (a_{ij}) \in \Mat_{m\times n} \text{ --- матрица $\phi$} +\] + +\item \textbf{Сумма двух линейных отображений и её матрица.} + +Пусть $\phi, \psi \in \Hom(V, W)$. + +Отображение $\phi + \psi \in \Hom(V, W)$ --- это $(\phi + \psi)(v):= \phi(v) + \psi(v)$ -- сумма отображений. + +Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $\phi, \psi \in \Hom(V, W)$. При этом $A_{\phi}$ --- матрица линейного отображения $\phi$, $A_{\psi}$ --- матрица для $\psi$, $A_{\phi+\psi}$ --- для $\phi + \psi$. + +Тогда $A_{\phi+\psi} = A_{\phi} + A_{\psi}$. + +\item \textbf{Произведение линейного отображения на скаляр и его матрица.} + +Пусть $\phi, \psi \in \Hom(V, W)$. + +Отображение $\alpha \in F, \alpha\phi \in \Hom(V, W)$ --- это $(\alpha\phi)(v) := \alpha(\phi(v))$ -- произведение линейного отображения на скаляр. + +Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $\phi, \psi \in \Hom(V, W)$. При этом $A_{\phi}$ --- матрица линейного отображения $\phi$, $A_{\psi}$ --- матрица для $\psi$, $A_{\alpha\phi}$ --- для $\alpha\phi$. + +Тогда $A_{\alpha\phi} = \alpha A_{\phi}$. + +\item \textbf{Композиция линейных отображений и её матрица.} + +Возьмем три векторных пространства --- $U, V$ и $W$ размерности $n, m$ и $k$ соответственно, и их базисы $\mathbb{e}, \mathbb{f}$ и $\mathbb{g}$. Также рассмотрим цепочку линейных отображений $U \xrightarrow{\psi} V \xrightarrow{\phi} W$. + +Отображение $\phi\circ\psi \in \Hom(U, W)$ -- это $(\phi\circ\psi)(v) := \phi(\psi(v))$ -- композиция линейных отображений. + +Пусть $A$ --- матрица $\phi$ в базисах $\mathbb{f}$ и $\mathbb{g}$, $B$ --- матрица $\psi$ в базисах $\mathbb{e}$ и $\mathbb{f}$, $C$ --- матрица $\phi\circ\psi$ в базисах $\mathbb{e}$ и $\mathbb{g}$. + +Тогда $C = AB$. + +\item \textbf{Ядро и образ линейного отображения.} + +Пусть $V$ и $W$ --- векторные пространства, $\phi: V \rightarrow W$ --- линейное отображение. + +\textit{Ядро $\phi$} --- это множество $\Ker\phi := \{v \in V \mid \phi(v) = 0 \}$. + +\textit{Образ $\phi$} --- это множество $\Im \phi := \{w \in W \mid \exists v \in V : \phi(v) = w \}$. + +\item \textbf{Критерий инъективности линейного отображения в терминах его ядра.} + +Пусть $\phi\colon V \rightarrow W$ --- линейное отображение. + +Отображение $\phi$ инъективно тогда и только тогда, когда $\Ker \phi = \{0\}$. + +\item \textbf{Связь между рангом матрицы линейного отображения и размерностью его образа.} + +Пусть $V, W$ --- векторные пространства, $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $A$ --- матрица $\phi$ по отношению к $\mathbb{e},\ \mathbb{f}$. + +Тогда $\dim \Im \phi = \rk A$. + +\item \textbf{Критерий изоморфности линейного отображения в терминах его матрицы.} + +Пусть $V$ и $W$ --- векторные пространства, $\phi: V \rightarrow W$ --- линейное отображение. + +Отображение $\phi$ является изоморфизмом тогда и только тогда, когда его матрица является квадратной и невырожденной. + +\item \textbf{Ранг произведения двух матриц.} + +Пусть $A \in \Mat_{k\times m},\ B\in \Mat_{m\times n}$. Тогда $\rk AB \leqslant \min\{\rk A, \rk B\}$. + +\item \textbf{Теорема о связи размерностей ядра и образа линейного отображения.} + +Пусть $\phi\colon V \rightarrow W$ --- линейное отображение. + +Тогда $\dim \Im \phi = \dim V - \dim \Ker \phi$. + +\item \textbf{Линейный оператор.} + +Пусть $V$ --- конечномерное векторное пространство. + +Линейным оператором (или линейным преобразованием) называется всякое линейное отображение $\phi \colon V \rightarrow V$, то есть из $V$ в себя. + +\item \textbf{Матрица линейного оператора.} + +Пусть $V$ --- векторное пространство, $\mathbb{e} = (e_1, \ldots, e_n)$ --- его базис и $\phi$ --- его линейный оператор. + +Матрицей линейного оператора $\phi$ называется такая матрица, в $j$-ом столбце которой стоят координаты вектора $\phi(e_j)$ в базисе $\e$. +$$ +\left(\phi(e_1), \ldots, \phi(e_n)\right) = \left(e_1, \ldots, e_n\right)A, \quad A \text{ --- матрица $\phi$} +$$ + +\item \textbf{Формула изменения матрицы линейного оператора при переходе к другому базису.} + +Пусть $\phi$ --- линейный оператор векторного пространства $V$, $A$ --- матрица $\phi$ в базисе $\mathbb{e} = (e_1, \ldots, e_n)$. Пусть $\mathbb{e}' = (e_1', \ldots, e_n')$ --- другой базис, причём $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$, где $C$ --- матрица перехода, и $A'$ --- матрица $\phi$ в базисе $\mathbb{e}'$. + +Тогда $A' = C^{-1}AC$. + +\item \textbf{Подобные матрицы.} + +Две матрицы $A', A \in M_n(F)$ называются подобными, если существует такая матрица $C \in M_n(F), \det C \neq 0$, что $A' = C^{-1}AC$. + +\item \textbf{Подпространство, инвариантное относительно линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Подпространство $U \subseteq V$ называется инвариантным относительно $\phi$ (или $\phi$-инвариантным), если $\phi(U)\subseteq U$. То есть $\forall u\in U \colon \phi(u)\in U$. + +\item \textbf{Матрица линейного оператора в базисе, дополняющем базис инвариантного подпространства.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Пусть $U\subset V$ --- $\phi$-инвариантное подпространство. Также пусть $(e_1, \ldots, e_k)$ --- базис в $U$. Дополним его до базиса $V\colon$ $\mathbb{e} = (e_1, \ldots, e_n)$. Тогда +\begin{gather} + \underbrace{A(\phi,\;\mathbb{e})}_{\text{Матрица с углом нулей}} = \begin{pmatrix} + B& C \\ + 0& D + \end{pmatrix}, \quad\text{где $B\in M_k$} +\end{gather} + +\item \textbf{Собственный вектор линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Ненулевой вектор $v\in V$ называется \textit{собственным} для $V$, если $\phi(v) = \lambda v$ для некоторго $\lambda \in F$. + +\item \textbf{Собственное значение линейного оператора.} + +Элемент $\lambda \in F$ называется собственным значением линейного оператора $\phi$ векторно пространства $V$, если существует такой ненулевой вектор $v \in V$, что $\phi(v) = \l v$. + +\item \textbf{Собственное подпространство линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Множество $V_{\lambda}(\phi) = \{v\in V\ |\ \phi(v) = \lambda v\}$ называется собственным подпространством линейного оператора, отвечающим собственному значению $\lambda$. + +\item \textbf{Диагонализуемый линейный оператор.} + +Линейный оператор $\phi\colon V \rightarrow V$ называется диагонализуемым, если существует базис $\mathbb{e}$ в $V$ такой, что $A(\phi, \mathbb{e})$ диагональна. + +\item \textbf{Критерий диагонализуемости линейного оператора в терминах собственных векторов.} + +Линейный оператор $\phi\colon V \rightarrow V$ диагонализуем тогда и только тогда, когда в $V$ существует базис из собственных векторов. + +\item \textbf{Характеристический многочлен линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Многочлен $\chi_{\phi}(t) = (-1)^n\det(\phi - t \id)$ называется характеристическим для линейного оператора $\phi$. + +\item \textbf{Связь собственных значений линейного оператора с его характеристическим многочленом.} + +$\lambda$ --- собственное значение линейного оператора $\phi$ тогда и только тогда, когда $\chi_\phi(\lambda) = 0$. + +\item \textbf{Алгебраическая кратность собственного значения линейного оператора.} + +Алгебраической кратностью собственного значения $\l$ линейного оператора $\phi \colon V \to V$ называется число $k$, которое равно кратности $\lambda$ как корня характеристического многочлена~$\phi$. + +\item \textbf{Геометрическая кратность собственного значения линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор, $\lambda$ --- его собственное значение и $V_\lambda(\phi)$ --- соответствующее собственное подпространство. + +Геометрической кратностью собственного значения $\lambda$ называется число $\dim V_\lambda(\phi)$. + +\item \textbf{Связь между алгебраической и геометрической кратностями собственного значения линейного оператора.} + +Геометрическая кратность не больше алгебраической кратности. + +\item \textbf{Сумма нескольких подпространств векторных пространств.} + +Пусть $U_1, \ldots, U_k$ --- подпространства векторного пространства $V$. Суммой нескольких пространств называется $U_1 + \ldots + U_k = \{u_1 + \ldots + u_k \; | \; u_i \in U_i \}$. + +\item \textbf{Прямая сумма нескольких подпространств векторных пространств.} + +Пусть $U_1, \ldots, U_k$ --- подпространства векторного пространства $V$. + +Сумма нескольких подпространств $U_1 + \ldots + U_k$ называется прямой, если из условия $\:u_1 + \ldots + u_k = 0$, где $u_i \in U_i$, следует, что $u_1 = \ldots = u_k = 0$. + +\item \textbf{Эквивалентные условия, определяющие прямую сумму нескольких подпространств векторного пространства.} + +Пусть $U_1, \ldots, U_k$ --- подпространства векторного пространства $V$. + +Следующие условия эквивалентны: + \begin{enumerate} + \item Сумма $U_1 + \ldots + U_k$ --- прямая; + \item Если $\mathbb{e}_i$ --- базис $U_i$, то $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 + \ldots + U_k;$ + \item $\dim(U_1 + \ldots + U_k) = \dim{U_1} + \ldots + \dim{U_k}.$ + \end{enumerate} + +\item \textbf{Сумма собственных подпространств линейного оператора, отвечающих попарно различным собственным значениям.} + +Пусть $V$ --- векторное пространство над полем $F$, $\phi$ его линейный оператор, $\lambda_1, \ldots, \lambda_k$ --- набор собственных значений $\phi$, где $\lambda_i \neq \lambda_j$ при $i \neq j$, и $V_{\lambda_i}(\phi) \subseteq V$ --- соответствующее собственное подпространство. + +Тогда сумма $V_{\lambda_1}(\phi) + \ldots + V_{\lambda_k}(\phi)$ является прямой. + +\item \textbf{Критерий диагонализуемости линейного оператора в терминах его характеристического многочлена и кратностей собственных значений.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Линейный оператор $\phi$ диагонализируем тогда и только тогда, когда +\begin{enumerate} +\item $\chi_\phi(t)$ разлагается на линейные множители; +\item Если $\chi_\phi(t) = (t - \l_1)^{k_1}\dots(t - \l_s)^{k_s}$, где $\l_i \neq \l_j$ при $i \neq j$, то $\dim V_{\l_i}(\phi) = k_i \ \forall i$ (то есть для любого собственного значения $\phi$ равны геометрическая и алгебраическая кратности). +\end{enumerate} + +\item \textbf{Корневой вектор линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Вектор $v \in V$ называется корневым вектором линейного оператора $\phi$, отвечающим значению $\l \in F$, если существует целочисленное $m \geqslant 0$ такое, что $(\phi - \l\id)^m(v) = 0$. + +Наименьшее такое $m$ называют высотой корневого вектора $v$. + +\item \textbf{Корневое подпространство линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Множество $V^\l(\phi) = \{ v \in V \mid \exists m \geqslant 0 : (\phi - \l\id)^m(v) = 0, m \in \mathbb Z \}$ называется корневым пространством для $\l \in F$. + +\item \textbf{Характеристический многочлен ограничения линейного оператора на корневое подпространство.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Будем обозначать как $\phi \; \vline_{V}$ ограничение линейного оператора на пространство $V$. + +Характеристический многочлен линейного отображения $\phi \; \vline_{V^{\lambda}(\phi)}$ равен $(t - \lambda)^{k}$, где $k \hm= \dim V^\l (\phi)$. + +\item \textbf{Размерность корневого подпространства линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Если $\lambda$ --- собственное значение $\phi$, то $\dim{V^{\lambda}(\phi)}$ равна алгебраической кратности $\lambda$. + +\item \textbf{Сумма корневых подпространств линейного оператора, отвечающих попарно различным собственным значениям.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Если $\lambda_1, \ldots, \lambda_k$, где $\lambda_i \neq \lambda_j$ при $i \neq j$ --- собственные значения $\phi$, то сумма $V^{\lambda_1}(\phi) + \ldots \hm+ V^{\lambda_k}(\phi)$ --- прямая. + +\item \textbf{Признак разложимости пространства в прямую сумму корневых подпространств линейного оператора.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор. + +Если характеристический многочлен $\chi_\phi(t)$ разлагается на линейные множители, причём $\chi_\phi(t) = (t - \lambda_1)^{k_1}\ldots(t - \lambda_s)^{k_s}$, то $V = \bigoplus_{i = 1}^s V^{\lambda_i}(\phi)$. + +\item \textbf{Жорданова клетка.} + +Пусть $\lambda \in F$. \textbf{Жорданова клетка} порядка $n$, отвечающая значению $\lambda$ (с собственным значением $\l $) --- это матрица следующего вида: +\begin{gather*} +J_\l^n = +\begin{pmatrix} +\l & 1 & 0 & \ldots & 0 & 0 \\ +0 & \l & 1 & \ldots & 0 & 0 \\ +0 & 0 & \l & \ddots & 0 & 0 \\ +\vdots & \vdots & \vdots & \ddots & \ddots & \vdots \\ +0 & 0 & 0 & \ldots & \l & 1 \\ +0 & 0 & 0 & \ldots & 0 & \l +\end{pmatrix} \in M_n(F). +\end{gather*} + +\item \textbf{Теорема о Жордановой нормальной форме линейного оператора.} + +Пусть $V$ --- векторное пространство, $\phi$ --- линейный оператор. + +Пусть $\chi_\phi(t)$ разлагается на линейные множители. Тогда существует базис $\e$ в $V$ такой, что +\begin{gather*} +A(\phi, \e) = +\begin{pmatrix*} +J_{\mu_1}^{n_1} & 0 & \ldots & 0 \\ +0 & J_{\mu_2}^{n_2} & \ldots & 0 \\ +\vdots & \vdots & \ddots & \vdots \\ +0 & 0 & \ldots & J_{\mu_p}^{n_p} +\end{pmatrix*} \quad (*) +\end{gather*} +Кроме того, матрица $(*)$ определена однозначно с точностью до перестановки жордановых клеток. + +Матрица $(*)$ называется жордановой нормальной формой линейного оператора. + +\item \textbf{Линейная функция.} + +Линейной функцией (формой, функционалом) на векторном пространстве $V$ называется всякое линейное отображение $\sigma \colon V \rightarrow F$. + +\item \textbf{Двойственный (сопряжённый) базис пространства линейных функций.} + +Пусть $\e = (e_1, \ldots, e_n)$ --- базис $V$. Рассмотрим линейные формы $\epsilon_1, \ldots, \epsilon_n$ такие, что $\epsilon_i(e_j) =~\delta_{ij}$, где $\delta_{ij} = +\begin{cases} +1, & i = j \\ +0, & i \neq j +\end{cases} +$ --- символ Кронекера. \\То есть $\epsilon_i = (\delta_{i1}, \ldots, \delta_{ii}, \ldots, \delta_{in}) = (0, \ldots, 1, \ldots, 0)$. + +Тогда $(\epsilon_1, \ldots, \epsilon_n)$ --- базис в $V^*$, называющийся двойственным (сопряжённым) к базису $\e$. +\item \textbf{Билинейная функция.} + +Билинейной функцией (формой) на векторном пространстве $V$ называется всякое билинейное отображение $\beta \colon V \times V \rightarrow F$. То есть это отображение, линейное по каждому аргументу: +\begin{enumerate} +\item $\beta(x_1 + x_2, y) = \beta(x_1, y) + \beta(x_2, y)$; +\item $\beta(\l x, y) = \l\beta(x, y)$; +\item $\beta(x, y_1 + y_2) = \beta(x, y_1) + \beta(x, y_2)$; +\item $\beta(x, \l y) = \l\beta(x, y)$. +\end{enumerate} + +\item \textbf{Матрица билинейной функции.} + +Пусть $V$ --- векторное пространство, $\dim V < \infty$, $\beta \colon V \times V \rightarrow F$ --- билинейная функция. + +Матрицей билинейной функции в базисе $\e = (e_1, \ldots, e_n)$ называется матрица $B = (b_{ij})$, где $b_{ij} \hm= \beta(e_i, e_j)$. + +\item \textbf{Формула для вычисления значений билинейной функции в координатах.} + +Пусть $(e_1, \ldots, e_n)$ --- базис $V$, $\beta \colon V \times V \to F$ --- билинейная функция, $B$ --- ее матрица в базисе $\e $. Тогда для некоторых векторов $x = x_1e_1 + \ldots + x_ne_n \in V$ и $y = y_1e_1 + \ldots + y_ne_n \in V$ верно, что: +\begin{gather*} +\beta(x, y) = (x_1, \ldots, x_n)B \vvector{y} +\end{gather*} + +\item \textbf{Формула изменения матрицы билинейной функции при переходе к другому базису.} + +Пусть $\e = (e_1, \ldots, e_n)$ и $\e' = (e'_1, \ldots, e'_n)$ --- два базиса $V$, $\beta$ --- билинейная функция на $V$. Пусть также $\e' = \e C$, где $C$ --- матрица перехода, также $B(\beta, \e) = B$ и $B(\beta, \e') = B'$. + +Тогда $B' = C^TBC$. + +\item \textbf{Ранг билинейной функции.} + +Пусть $B(\beta, \e)$ -- матрица билинейной функции $\beta$ в базисе $\e$. + +Число $\rk B$ называется рангом билинейной функции $\beta$. Обозначение: $\rk \beta$. + +\item \textbf{Симметричная билинейная функция.} + +Билинейная функция $\beta$ называется симметричной, если $\beta(x, y) =\beta(y, x)$ для любых $x, y \in V$. + +\item \textbf{Квадратичная форма.} + +Пусть $\beta \colon V\times V \rightarrow F$ --- билинейная функция. Тогда функция $Q_\beta \colon V \rightarrow F$, заданная формулой $Q_\beta(x) = \beta(x, x)$, называется квадратичной формой (функцией), ассоциированной с билинейной функцией $\beta$. + +\item \textbf{Соответствие между симметричными билинейными функциями и квадратичными формами.} + +Пусть $\beta \colon V\times V \rightarrow F$ --- симметричная билинейная функция, где $F$ --- поле, в котором $0 \neq 2$ (то есть можно делить на два). + +Отображение $\beta(x, y) \mapsto Q_\beta(x) = \beta(x, x)$ является биекцией между симметричными билинейными функциями на $V$ и квадратичными функциями на $V$. + +\item \textbf{Поляризация квадратичной формы.} + +Симметричная билинейная функция $\beta(x, y) = \frac{1}{2}\left( Q(x + y) - Q(x) - Q(y) \right)$ называется поляризацией квадратичной формы $Q$. + +\item \textbf{Матрица квадратичной формы.} + +Пусть $V$ --- векторное пространство, $\dim V < \infty$. + +Матрицей квадратичной формы $Q \colon V \to F$ в базисе $\e$ называется матрица соответствующей ей симметричной билинейной функции $\beta \colon V \times V \rightarrow F$ в том же базисе. + +\item \textbf{Канонический вид квадратичной формы.} + +Квадратичная форма $Q$ имеет в базисе $\e = (e_1, \ldots, e_n)$ канонический вид, если для любого вектора $x = x_1e_1 + \ldots + x_ne_n$ верно, что $Q(x) = a_1x_1^2 +\ldots + a_nx_n^2$, где $a_i \in F$. Иными словами, она имеет диагональную матрицу. + +\item \textbf{Нормальный вид квадратичной формы.} + +Квадратичная форма $Q$ имеет нормальный вид в базисе $\e = \vector{e}$, если для любого вектора $x = x_1e_1 + \ldots + x_ne_n$ верно, что $Q(x) = a_1x_1^2 +\ldots + a_nx_n^2$, причем $a_i \in \{-1, 0, 1\}$. + +\item \textbf{Индексы инерции квадратичной формы.} + +Пусть $Q$ --- квадратичная форма над $\R$, которая в базисе $\e = \vector{e}$ имеет нормальный вид: +$$ +Q(x_1, \ldots, x_n) = x_1^2 + \ldots + x_s^2 - x_{s + 1}^2 - \ldots - x_{s + t}^2, +$$ +где $s$ --- это количество положительных слагаемых, а $t$ --- отрицательных. Тогда: + +\begin{enumerate} +\item $i_+ := s$ --- положительный индекс инерции; +\item $i_- := t$ --- отрицательный индекс инерции; +\item $i_0 := n - s - t$ --- нулевой индекс инерции. +\end{enumerate} + +\item \textbf{Закон инерции для квадратичной формы.} + +Индексы инерции не зависят от выбора базиса, в котором квадратичная форма $Q$ имеет нормальный вид. + +\item \textbf{Положительно/неотрицательно определенная квадратичная форма.} + +Квадратичная форма $Q$ называется: +\begin{enumerate} +\item положительно определенной, если $Q(x) > 0\ \forall x \neq 0$. Обозначение: $Q > 0$; +\item неотрицательно определенной, если $Q(x) \geqslant 0\ \forall x$. Обозначение: $Q \geqslant 0$. +\end{enumerate} + +\item \textbf{Отрицательно/неположительно определенная квадратичная форма.} + +Квадратичная форма $Q$ называется: +\begin{enumerate} +\item отрицательно определенной, если $Q(x) < 0\ \forall x \neq 0$. Обозначение: $Q < 0$; +\item неположительно определенной, если $Q(x) \leqslant 0\ \forall x$. Обозначение: $Q \leqslant 0$. +\end{enumerate} + +\item \textbf{Неопределенная квадратичная форма.} + +Квадратичная форма $Q$ называется неопределенной, если существуют такие векторы $x, y$, что $Q(x) > 0$ и $Q(y) < 0$. + +\item \textbf{Теорема Якоби.} + +Пусть $Q$ --- квадратичная форма и $\delta_i \neq 0$ для всех $i$. Тогда $\rk Q = n$ и $i_{-}(Q)$ равен числу перемен знака последовательности $\delta_0, \delta_1, \ldots, \delta_n$. + +Здесь $\delta_i$ --- угловой минор $i\times i$-подматрицы матрицы соответствующей симметричной билинейной функции $\beta$ в некотором базисе; $\delta_0 = 1$. + +\item \textbf{Критерий Сильвестра положительной определенности квадратичной формы.} + +Квадратичная форма $Q$ является положительно определенной тогда и только тогда, когда $\delta_i > 0$ для всех $i$. + +Здесь $\delta_i$ --- угловой минор $i\times i$-подматрицы матрицы соответствующей симметричной билинейной функции $\beta$ в некотором базисе; $\delta_0 = 1$. + +\item \textbf{Критерий отрицательной определенности квадратичной формы.} + +Квадратичная форма $Q$ является отрицательно определенной тогда и только тогда,\\ когда: +$$ +\begin{cases} + \delta_i < 0, & 2 \nmid i \\ + \delta_i > 0, & 2 \mid i +\end{cases}. +$$ +Здесь $\delta_i$ --- угловой минор $i\times i$-подматрицы матрицы соответствующей симметричной билинейной функции $\beta$ в некотором базисе; $\delta_0 = 1$. + +\item \textbf{Евклидово пространство.} + +Евклидово пространство --- это векторное пространство $\mathbb{E}$ над полем $\mathbb{R}$, на котором задана положительно определённая симметрическая билинейная функция $(\cdot, \cdot)$, которую мы будем называть скалярным произведением. + +\item \textbf{Длина вектора в евклидовом пространстве.} + +Пусть $\E$ --- евклидово пространство, $x\in \mathbb{E}$. Тогда длиной вектора называют величину $|x| = \sqrt{(x,x)}$. + +\item \textbf{Неравенство Коши-Буняковского.} + +Пусть $\E$ --- евклидово пространство, $x, y \in \E$. Тогда $|(x,y)| \leqslant |x||y|$, причём знак равенства возможен тогда и только тогда, когда $x$ и $y$ пропорциональны. + +\item \textbf{Угол между векторами Евклидова пространства.} + +Пусть $\E$ --- евклидово пространство. Углом между векторами $x, y \in \E$ называют такой $\alpha$, что $ \cos \alpha = \cfrac{(x,y)}{|x||y|}$. + +\item \textbf{Матрица Грама системы векторов евклидова пространства.} + +Пусть $\E$ --- евклидово пространство. + +Матрица Грама системы $v_1, \ldots, v_k \in \E$ это + $$G(v_1,\ldots, v_k) := (g_{ij}),\quad g_{ij} = (v_i,v_j).$$ + +\item \textbf{Свойства определителя матрица Грама.} + +Пусть $\E$ --- евклидово пространство, $G(v_1,\ldots, v_k)$ --- матрица Грама. Тогда: +\begin{enumerate} + \item $\det G(v_1, \ldots, v_k) \geqslant 0$; + \item $\det G(v_1, \ldots, v_k) = 0$ тогда и только тогда, когда $v_1, \ldots, v_k$ линейно зависимы. +\end{enumerate} + +\item \textbf{Ортогональное дополнение системы векторов евклидова пространства.} + +Пусть $S$ --- произвольное подпространство евклидова пространства $\E$. Ортогональным дополнением к $S$ называется множество $S^{\perp} = \{x\in \mathbb{E}\; |\; (x,y) = 0\;\forall y \in S\}$. + +\item \textbf{Ортогональная проекция вектора на подпространство.} + +Пусть $S$ --- подпространство евклидова пространства $\E$. Тогда любой вектор $x \in E$ единственным образом разбивается на сумму $x = y + z$, где $y \in S$ и $z \in S^\perp$. + +Вектор $y$ называется ортогональной проекцией вектора $x$ на подпространство $S$. Обозначение: $\pr_S x$. + +\item \textbf{Ортогональная составляющая вектора относительно подпространства.} + +Пусть $S$ --- подпространство евклидова пространства $\E$. Тогда любой вектор $x \in E$ единственным образом разбивается на сумму $x = y + z$, где $y \in S$ и $z \in S^\perp$. + +Вектор $z$ называется ортогональной составляющей вектора $x$ относительно (вдоль) подпространства $S$. Обозначение: $\ort_S x$. + +\item \textbf{Ортогональный базис.} + +Базис $(e_1, \ldots, e_n)$ в евклидовом пространстве $\mathbb{E}$ называется ортогональным, если \\$(e_i, e_j)= 0\; \forall i\neq j$. Это равносильно тому, что $G(e_1, \ldots, e_n)$ диагональна. + +\item \textbf{Ортонормированный базис.} + +Базис $(e_1, \ldots, e_n)$ в евклидовом пространстве $\mathbb{E}$ называется ортонормированным, если он является ортогональным базисом и дополнительно $(e_i, e_i) = 1\; \forall i$. Это равносильно тому, что $G(e_1, \ldots, e_n) = E$. + +\item \textbf{Ортогональная матрица.} + +Пусть $\e = (e_1, \ldots, e_n)$ и $\e' = (e_1', \ldots, e_n')$ --- два ортонормированных базиса в евклидовом пространстве $\E$, причем $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$. + +Тогда матрица $C$ называется ортогональной. + +\item \textbf{Формула для ортогональной проекции вектора на подпространство в терминах его ортогонального базиса.} + +Пусть $S$ --- подпространство евклидова пространства $\E$, $(e_1, \ldots, e_k)$ --- его ортогональный базис, $x \in \mathbb{E}$. + + +Тогда $\pr_S x = \sum\limits_{i = 1}^{k}\cfrac{(x,e_i)}{(e_i, e_i)}e_i$. В частности, если базис ортонормированный, $\pr_S x = \sum\limits_{i = 1}^{k}(x,e_i)e_i$ + +\item \textbf{Теорема Пифагора в евклидовом пространстве.} + +Если векторы евклидова пространства $x$ и $y$ перпендикулярны, то $|x+y|^2 = |x|^2 + |y|^2$. + +\item \textbf{Расстояние между векторами евклидова пространства.} + +Расстоянием между векторами евклидова пространства $x$ и $y$ называется число \\$\rho(x,y) := |x-y|$. + +\item \textbf{Связь ортогональной составляющей вектора относительно подпространства с расстоянием до этого подпространства.} + +Пусть $U$ --- подпространство евклидова пространства $\E$. + +Модуль ортогональной составляющей вектора $x \in E$ относительно подпространства $U$ равен расстоянию от вектора $x$ до подпространства $U$. +$$ +\rho (x,U) = |\ort_U x|. +$$ + +\item \textbf{Формула для расстояния от вектора до подпространства в терминах матриц Грама.} + +Пусть $U$ --- подпространство евклидова пространства $\E$, $x \in \E$, $(e_1, \ldots, e_k)$ --- базис $U$. Тогда +$(\rho(x,U))^2 = \cfrac{\det G(e_1, \ldots, e_k, x)}{\det G(e_1, \ldots, e_k)}$. + +\item \textbf{$n$-мерный параллелепипед и его объем.} + +$N$-мерным параллелепипедом, натянутым на векторы $a_1, \ldots, a_n$ евклидова пространства $\E$ называется множество +$$ +P(a_1, \ldots, a_n) := \left\{ x = \sum_{i = 1}^n x_ia_i \mid 0 \leqslant x_i \leqslant 1 \right\}. +$$ + +Объем $n$-мерного параллелепипеда $P(a_1, \ldots, a_{n})$ --- это число $\vol P(a_1, \ldots, a_{n})$, определяемое рекурсивно следующим образом: +\begin{align*} +n = 1 \quad& \vol P(a_1) = |a_1| \\ +n > 1 \quad& \vol P(a_1, \ldots, a_n) = \vol P(a_1, \ldots, a_{n-1})\cdot |h| +\end{align*} +Где $h = \ort_{\langle a_1, \ldots, a_{n-1}\rangle}a_n$ --- высота $P(a_1, \ldots, a_n)$. + +\item \textbf{Формула для объема $n$-мерного параллелепипеда (любая из двух).} + +Пусть $\E$ --- векторное пространство, $\vector{e}$ --- его ортогональный базис и $\vector{a} \hm= \vector{e}A$ для некоторой матрицы $A \in M_n(\R)$. Тогда $\vol P\vector{a} = |\det A|$. + +Вторая формула: $\vol P\vector{a}^2 = \det G\vector{a}$. + +\item \textbf{Критерий изоморфности двух конечномерных евклидовых пространств.} + +Два конечномерных евклидовых пространства $\E$ и $\E'$ изоморфны тогда и только тогда, когда их размерности совпадают. + +\item \textbf{Сопряженный линейный оператор.} + +Пусть $\E$ --- евклидово пространство. Линейный оператор $\psi$ в $\E$ называется сопряженным к $\phi$, если для всех векторов $x,\ y \in \E$ верно, что $(\psi(x), y)\hm = (x, \phi(y))$. Обозначение: $\psi = \phi^*$. + +\item \textbf{Матрица сопряженного оператора в произвольном и ортонормированном базисах.} + +Пусть $\E$ --- евклидово пространство, $\e = \vector{e}$ --- базис $\E$, $G = G\vector{e}$ --- матрица Грама, $\phi$ --- линейный оператор в $\E$, $A_\phi$ --- матрица $\phi$ в базисе $\e$, $A_{\phi^*}$ --- матрица $\phi^*$ в том же базисе. Тогда: +$$ +A_{\phi^*} = G^{-1}A_\phi^TG. +$$ +В частности, если $\e$ --- ортонормированный базис, то $A_{\phi^*} = A_{\phi}^T$. + +\item \textbf{Самосопряженный линейный оператор.} + +Линейный оператор $\phi$ евклидова пространства $\E$ называется самосопряженным (симметрическим), если $\phi^* = \phi$. Это равносильно тому, что $(\phi(x), y) = (x, \phi(y)))$ для любых векторов $x,\ y \in \E$. + +\item \textbf{Канонический вид самосопряженного линейного оператора.} + +Самосопряженный линейный оператор $\phi$ имеет канонический вид в базисе $\e$, если его матрица в этом базисе имеет диагональный вид с собственными значениями на диагонали. + +\item \textbf{Приведение квадратичной формы к главным осям.} + +Для любой квадратичной формы $Q$ над евклидовым пространством $\mathbb{E}$ существует ортонормированный базис, в котором $Q$ имеет канонический вид. +$$ +Q(x_1, \ldots, x_n) = \lambda_1 x_1^2 + \ldots + \lambda_n x_n^2. +$$ +Причем числа $\lambda_1, \ldots, \lambda_n$ определены однозначно с точностью до перестановки. + +\item \textbf{Ортогональный линейный оператор.} + +Линейный оператор $\phi$ евклидова пространства $\E$ называется ортогональным, если +$$ +(\varphi(x), \varphi(y)) = (x,y), \quad \forall x, y \in \E. +$$ +Другими словами, $\varphi$ сохраняет скалярное произведение, осуществляет изоморфизм $\E$ на себя. + +Эквивалентные определения: +\begin{enumerate} +\item $|\phi(x)| = |x|$ для всех $x \in \E$, то есть $\phi$ сохраняет длины; +\item существует $\phi^{-1}$, причем $\phi^{-1} = \phi^*$, то есть $\phi \cdot \phi^* = \phi^*\cdot \phi = \id$; +\item если $\e$ --- ортонормированный базис, то $A(\phi, \e)$ --- ортогональная матрица; +\item если $(e_1, \ldots, e_n)$ --- ортонормированный базис, то $(\phi(e_1), \ldots, \phi(e_n))$ --- тоже ортонормированный базис. +\end{enumerate} + +\item \textbf{Классификация ортогональных линейных операторов в одномерном и двумерном евклидовых пространствах.} + +Пусть $\E$ --- евклидово пространство, $\e$ --- его базис, $\phi$ --- его ортогональный линейный оператор, $A$ --- матрица $\phi$ в базисе $\e$. + +Если $\dim \E = 1$, то $\phi = \pm \id$. + +Если $\dim \E = 2$, то возможны два случая: +\begin{enumerate} +\item $\phi$ это поворот пространства на угол $\alpha$, $A = \begin{pmatrix} +\cos\alpha & \sin\alpha \\ +-\sin\alpha & \cos\alpha +\end{pmatrix}$; +\item $\phi$ это отражение относительно некоторой прямой, $A = \begin{pmatrix} +1 & 0 \\ +0 & -1 +\end{pmatrix}$. +\end{enumerate} +\item \textbf{Канонический вид ортогонального линейного оператора.} + +Ортогональный линейный оператор $\phi$ евклидова пространства $\E$ имеет в базисе $\e$ канонический вид, если его матрица в этом базисе имеет вид: +$$ +\begin{pmatrix} +\Pi(\alpha_1)\\ +&\ddots \\ +&&\Pi(\alpha_k)\\ +&&&-1\\ +&&&&\ddots\\ +&&&&&-1\\ +&&&&&& 1\\ +&&&&&&& \ddots \\ +&&&&&&&& 1 +\end{pmatrix}, +$$ +где $\Pi(\alpha_i) = \begin{pmatrix} +\cos\alpha_i & \sin\alpha_i \\ +-\sin\alpha_i & \cos\alpha_i +\end{pmatrix}$ --- матрица поворота на угол $\alpha_i$. + +\item \textbf{Классификация ортогональных линейных операторов в трехмерного евклидовом пространстве.} + +Пусть $\E$ --- евклидово пространство, $\dim \E = 3$, $\phi$ --- его ортогональный линейный оператор, $A(\phi, \e)$ --- матрица $\phi$ в некотором базисе $\e$. + +Тогда возможны два случая: +\begin{enumerate} +\item $\phi$ это поворот на угол $\alpha$ вокруг оси $\langle e_3 \rangle$, где $\e = (e_1, e_2, e_3)$ --- некоторый ортонормированный базис, $A(\phi, \e) = \begin{pmatrix} +\Pi(\alpha) & 0 \\ +0 & 1 +\end{pmatrix}$; +\item $\phi$ это <<зеркальный поворот>>, то есть поворот на угол $\alpha$ вокруг прямой $e_3$ и зеркальное отражение относительно $\langle e_1, e_2\rangle = \langle e_3\rangle^\perp$, где $\e = (e_1, e_2, e_3)$ --- некоторый ортонормированный базис, $A(\phi, \e) = \begin{pmatrix} +\Pi(\alpha) & 0 \\ +0 & -1 +\end{pmatrix}$. +\end{enumerate} + + +\end{enumerate} + +\end{document} diff --git a/linear-algebra/colloc/tex/questions.tex b/linear-algebra/colloc/tex/questions.tex new file mode 100644 index 0000000..d201281 --- /dev/null +++ b/linear-algebra/colloc/tex/questions.tex @@ -0,0 +1,3336 @@ +\input{../../tex/header.tex} + +\title{Линейная Алгебра и Геометрия\\Вопросы} +\author{Лекторий ПМИ ФКН} +\date{3-4 июня 2016} + +\begin{document} +\maketitle + +\begin{center} +\huge{Относитесь к данному материалу критически! Никто не гарантирует, что это абсолютно правильные билеты: в них могут быть недочеты, ошибки, опечатки, что угодно, ведь эти билеты писали студенты, а не преподаватели. Старайтесь вникать в то, что читаете, а не просто зазубривать.} +\end{center} + +\tableofcontents +\newpage + +\section{Понятие поля. Простейшие примеры. Поле комплексных чисел, его построение.} + +\begin{Def} +Скаляры — это элементы некоторого фиксированного поля. +\end{Def} + +\begin{Def} +Полем называется множество $F$, на котором заданы две операции — «сложение» $(+)$ и «умножение» $(\cdot)$, +\[ +F \times F \rightarrow F \Rightarrow +\begin{aligned} ++\!:\:& (a, b) \mapsto a + b \\ +\cdot:\:& (a, b) \mapsto a \cdot b +\end{aligned} +\] +удовлетворяющие следующим свойствам («аксиомам поля»): $\forall a, b, c \in F$ +\begin{enumerate} +\item $a + b = b + a$ (коммутативность по сложению); +\item $(a + b) + c = a + (b + c)$ (ассоциативность по сложению); +\item $\exists\: 0 \in F \colon 0 + a = a + 0 = a$ (существование нулевого элемента); +\item $\exists\: {-a} \in F\colon a + (-a) = (-a) + a = 0$ (существование противоположного элемента); +\item $a(b + c) = ab + ac$ (дистрибутивность; связь между сложением и умножением); +\item $ab = ba$ (коммутативность по умножению); +\item $(ab)c = a(bc)$ (ассоциативность по умножению); +\item $\exists\: 1 \in F\setminus\{0\} : 1 \cdot a = a \cdot 1 = a$ (существование единицы); +\item $a \neq 0 \Rightarrow \exists a^{-1} \in F : a \cdot a^{-1} = a ^{-1} \cdot a = 1$ (существование обратного элемента). +\end{enumerate} +\end{Def} + +\begin{Comment} +\ +\begin{enumerate} + \item Элемент $0$ --- единственный. + \item И элемент $-a$ единственный. + \item Даже элемент $1$ единственный. + \item Как это ни удивительно, но $a^{-1}$ тоже единственный. +\end{enumerate} +\end{Comment} +Легко увидеть, что пункты 2 и 4 доказываются одинаково с точностью до замены операции, как и пункты 1 и 3. + +\begin{proof} +Докажем пункт 3. Если существует $1'$ --- еще одна единица, тогда по аксиомам $1'=1'\cdot1=1$. + +Докажем теперь пункт 4. Пусть $b$ и $c$ таковы, что $b \neq c$ и $ba = ab = ac = ca = 1$. Тогда +\[ +bac = \left(ba\right)c = b\left(ac\right) = 1\cdot c = c = 1 \cdot b = b +\] + +То есть $b = c$. +\end{proof} + +\begin{Examples} \ +\begin{itemize} +\item $\mathbb{Q}$ — рациональные числа; +\item $\mathbb{R}$ — вещественные числа; +\item $\mathbb{C}$ — комплексные числа; +\item $F_2 = \{0, 1\}$, при сложении и умножении по модулю 2. +\end{itemize} +\end{Examples} + +\subsection*{Поле комплексных чисел} +Поле действительных чисел $\mathbb{R}$ плохо тем, что в нем уравнение $x^2 + 1 = 0$ не имеет решения. Отсюда возникает идея определить поле, удовлетворяющее следующим требованиям: +\begin{itemize} +\item[(T1)] новое поле содержит $\mathbb{R}$; +\item[(Т2)] уравнение $x^2 +1 = 0$ имеет решение. +\end{itemize} +Давайте формально построим такое поле. + +\begin{Def} +Полем $\mathbb{C}$ комплексных чисел называется множество $\{(a, b) \mid a, b \in \mathbb{R}\}$, на котором заданы операции сложения: $(a_1, b_1) + (a_2, b_2) = (a_1 + a_2, b_1 + b_2)$ и умножения: $(a_1, b_1) \cdot (a_2, b_2) = (a_1a_2 - b_1b_2, a_1b_2 + b_1a_2)$. +\end{Def} + +\begin{Suggestion} +$\mathbb{C}$ и впрямь является полем. +\end{Suggestion} + +\begin{proof} +Операции сложения и умножения введены, осталось только проверить выполнение всех аксиом. +\begin{enumerate} +\item очевидно, так как сложение идет поэлементно; +\item также очевидно; +\item $0 = (0, 0)$; +\item $-(a, b) = (-a, -b)$; +\item почти очевидно (т.е. прямая проверка); +\item ясно (тоже прямая проверка); +\item проверим: +\begin{gather*} +((a_1, b_1) (a_2, b_2)) (a_3, b_3) = (a_1a_2 - b_1b_2, a_1b_2 + b_1a_2) (a_3, b_3) = \\ += (a_1a_2a_3 - b_1b_2b_3 - a_1b_2b_3 - b_1a_2b_3, a_1a_2b_3 - b_1b_2b_3 + a_1b_2a_3 + b_1a_2a_3) = \\ += (a_1, b_1) (a_2a_3 - b_2b_3, a_2b_3 + b_2a_3) = (a_1, b_1)((a_2, b_2) (a_3, b_3)); +\end{gather*} +\item $1 = (1, 0)$; +\item $(a, b) \neq 0 \Leftrightarrow a^2 + b^2 \neq 0 \rightarrow (a, b)^{-1} = \left(\frac{a}{a^2 + b^2}, \frac{-b}{a^2 + b^2}\right)$. +\end{enumerate} +\end{proof} + +Осталось только проверить, правда ли введенное поле $\mathbb{C}$ удовлетворяет нашим требованиям: +\begin{itemize} +\item[(Т1)] Заметим, что в подмножестве $\mathbb{C}$, состоящим из элементов вида $(a, 0)$ операции сложения и умножения будут работать как в поле вещественных чисел. +\begin{gather*} +(a, 0) + (b, 0) = (a + b, 0) \\ +(a, 0) \cdot (b, 0) = (ab, 0) +\end{gather*} +Следовательно, отображение $a \mapsto (a, 0)$ отождествляет $\mathbb{R}$ с этим подмножеством, то есть $\mathbb{R} \rightarrow \mathbb{C}$. Что нам и требуется. +\item[(Т2)] Примем $i = (0, 1)$. Тогда $i^2 = (0, 1) \cdot (0, 1) = (-1, 0) = -1$. Итого, требование выполнено. +\end{itemize} + +Однако запись комплексных чисел в виде упорядоченной пары $(a, b)$ не очень удобна и громоздка. Поэтому преобразуем запись следующим образом: +\[ +(a, b) = (a, 0) + (0, b) = (a, 0) + (b, 0) \cdot (0, 1) = a + bi. +\] + +Тем самым мы получили реализацию поля $\mathbb{C}$ комплексных чисел как множества \\ $\{a + bi \mid a, b \in \mathbb{R},\ i^2 = -1\}$, с обычным сложением и умножением. + +\section{Алгебраическая форма комплексного числа, его действительная и мнимая часть. Комплексное сопряжение и его свойства.} + +\begin{Def} +Запись $z = a + bi$ называется алгебраической формой комплексного числа $z \in \mathbb{C}$. + + +$a = \Re z$ — действительная часть числа $z$. + + +$b = \Im z$ — мнимая часть числа $z$. +\end{Def} + +\begin{Def} +Числа вида $z = bi$ (т.е. $\Re z = 0$) называются чисто мнимыми. +\end{Def} + +\begin{Def} +Отображение $\mathbb{C} \rightarrow \mathbb{C} : a + bi \mapsto a - bi$ называется (комплексным) сопряжением. Само число $\overline{z} = a - bi$ называется (комплексно) сопряженным к числу $z = a + bi$. +\end{Def} + +\begin{Lemma} +Для любых двух комплексных числе $z, w \in \mathbb{C}$ выполняется, что +\begin{enumerate} +\item $\overline{z + w} = \overline{z} + \overline{w}$; +\item $\overline{zw} = \overline{z} \cdot \overline{w}$. +\end{enumerate} +\end{Lemma} + +\begin{proof} +Пусть $z = a + bi$, а $w = c + di$. +\begin{enumerate} +\item $\overline{z} + \overline{w} = a - bi + c - di = (a + c) - (b + d)i = \overline{z+ w}$ +\item $\overline{z} \cdot \overline{w} = (a - bi)(c - di) = ac - adi - bci + bdi^2 = (ac - bd) - (ad + bc)i = \overline{zw}$ +\end{enumerate} +\end{proof} + +\begin{Comment} +Равенство $z = \overline{z}$ равносильно равенству $\Im z = 0$, то есть $z \in \mathbb{R}$. +\end{Comment} + +\section{Геометрическая модель комплексных чисел, интерпретация сложения и сопряжения в этой модели. Модуль и аргумент комплексного числа, его тригонометрическая форма.} + +Заметим, что поле комплексных числе $\mathbb{C} = \{(a, b) \mid a, b \in \mathbb{R}\}$ равно $\mathbb{R}^2$. Следовательно, комплексные числа можно представить как точки на действительной плоскости $\mathbb{R}^2$, или сопоставить их векторам. + +\begin{center} +%{\includegraphics{z-as-vector}} +\begin{tikzpicture} +\begin{axis} + [ + axis lines = center, + xtick={0, 3}, + xticklabels = {$0$, $a$}, + ytick = {2}, + yticklabels = {$b$}, + xlabel=$\mathrm{Re}\,z$, + ylabel=$\mathrm{Im}\,z$, + ymin=-1, + ymax=+3, + xmin=-1, + xmax=+4 + ] + \node [right, red] at (axis cs: 3, 2) {$a+bi$}; + \addplot[->] coordinates { (0,0) (3,2) }; + \addplot [dashed, black] coordinates { (3, 0) (3,2) }; + \addplot [dashed, black] coordinates { (0,2) (3,2) }; +\end{axis} +\end{tikzpicture} +\end{center} + +В таком представлении сложение комплексных чисел сопоставляется со сложением векторов, а сопряжение — с отражением относительно оси $Ox (\Re z)$. + +\begin{Def} +Модулем комплексного числа $z = a + bi$ называется длина соответствующего вектора. Обозначение: $|z|; |a+bi| = \sqrt{a^2 + b^2}$. +\end{Def} + +Свойства модуля: +\begin{enumerate} +\item $|z| \geqslant 0$, причем $|z| = 0$ тогда и только тогда, когда $z = 0$; +\item $|z + w| \leqslant |z| + |w|$ — неравенство треугольника; +\item $z\cdot\overline{z} = |z|^2$; +\begin{proof} +$(a + bi)(a - bi) = a^2 - (bi)^2 = a^2 + b^2 = |z|^2$. +\end{proof} +\item $|zw| = |z| \cdot |w|$; +\begin{proof} +Возведем в квадрат. +\begin{gather*} +|z|^2 \cdot |w|^2 = z \overline{z} w \overline{w} = (zw)\overline{z}\overline{w} = zw\overline{zw} = |zw|^2 +\end{gather*} +\end{proof} +\end{enumerate} + +\begin{Comment} +Из свойства 3 следует, что при $z \neq 0$ выполняется: +\begin{gather*} +z^{-1} = \frac{\overline{z}}{|z|^2}\\ +(a + bi)^{-1} = \frac{1}{a + bi} = \frac{a - bi}{a^2 + b^2}. +\end{gather*} +\end{Comment} + +\begin{Def} +Аргументом комплексного числа $z \neq 0$ называется всякий угол $\varphi$ такой что +\[ +\cos \varphi = \frac{a}{|z|} = \frac{a}{\sqrt{a^2 + b^2}}; \quad \sin \varphi = \frac{b}{|z|} = \frac{b}{\sqrt{a^2 + b^2}}. +\] +\end{Def} +Неформально говоря, аргумент $z$ — это угол между осью $Ox$ и соответствующим вектором. + +\begin{Comment} \ +\begin{enumerate} +\item Аргумент определен с точностью до $2\pi$. +\item Аргумент $z = 0$ не определен. +\end{enumerate} +\end{Comment} +Для $z \neq 0$ введем множество $\Arg z = \{\text{множество всех аргументов $z$}\}$ — \textit{большой аргумент}. Также введем \textit{малый аргумент} $\arg z$ — это такой $\varphi \in \Arg z$, который удовлетворяет условию $0 \leqslant \varphi < 2\pi$ и, следовательно, определен однозначно. + +Используя аргумент, можно представить комплексное число следующим образом: +\[ +\left. +\begin{aligned} +&a = |z|\cos \varphi \\ +&b = |z|\sin \varphi +\end{aligned} +\right| \Rightarrow z = a + bi = |z| \cos \varphi + i |z| \sin \varphi = |z|(\cos\varphi + i\sin\varphi) +\] + +\begin{Def} +Запись $z = |z|(\cos\varphi + i\sin\varphi)$ называется тригонометрической формой комплексного числа $z$. +\end{Def} + +\begin{Comment} +\[ +r_1(\cos\varphi_1 + i\sin\varphi_1) = r_2(\cos\varphi_2 + i\sin\varphi_2) \Leftrightarrow +\left\{ +\begin{aligned} +&r_1 = r_2 \\ +&\varphi_1 = \varphi_2 + 2\pi n, \quad n \in \mathbb{Z} +\end{aligned} +\right. +\] +\end{Comment} + +\section{Умножение, деление и возведение в степень комплексных чисел в тригонометрической форме. Формула Муавра.} + +\begin{Suggestion} +Пусть $z_1 = |z_1|\left(\cos{\varphi_1}+i\sin{\varphi_1}\right)$, $z_2 = |z_2|\left(\cos{\varphi_2} + i\sin{\varphi_2}\right)$. Тогда +\[ +z_1z_2 = |z_1||z_2|\left(\cos\left(\varphi_1 + \varphi_2\right) + i\sin\left(\varphi_1 + \varphi_2\right)\right) +\] +Иными словами, при умножении комплексных чисел их модули перемножаются, а аргументы складываются. +\end{Suggestion} + +\begin{proof} +Просто раскроем скобки и приведём подобные. +\begin{gather*} +z_1z_2 = |z_1||z_2|\left(\cos\varphi_1\cos\varphi_2-\sin\varphi_1\sin\varphi_2 + i\left(\cos\varphi_1\sin\varphi_2+\cos\varphi_2\sin\varphi_1\right)\right) = \\ =|z_1||z_2|\left(\cos\left(\varphi_1 + \varphi_2\right) + i\sin\left(\varphi_1 + \varphi_2\right)\right) +\end{gather*} +\end{proof} + +\begin{Consequence} +$\cfrac{z_1}{z_2} = \cfrac{|z_1|}{|z_2|}\left(\cos\left(\varphi_1-\varphi_2\right) + i\sin\left(\varphi_1 - \varphi_2\right)\right)$ +\end{Consequence} + +\begin{Consequence}[Формула Муавра] +Пусть $z = |z|\left(\cos\varphi + i \sin \varphi\right)$. Тогда: +\[z^n = |z|^n\left(\cos\left(n\varphi\right)+i\sin\left(n\varphi\right)\right) \quad \forall n \in \mathbb{Z}. +\] +\end{Consequence} + +\begin{Comment} +В комплексном анализе функция $\exp x\colon\ \mathbb{R} \rightarrow \mathbb{R}$ доопределяется до $\exp z\colon \ \mathbb{C}~\rightarrow~\mathbb{C}$ следующим образом: +\[ +\exp z =\sum\limits_{n=0}^{\infty}\cfrac{z^n}{n!}\ . +\] +И тогда оказывается, что $\exp z$ обладает теми же свойствами, кроме того: +\[ +e^{i\varphi} = \cos\varphi + i\sin\varphi \quad \forall \varphi \in \mathbb{C}. +\] +\end{Comment} + +Всякое $z \in \mathbb{C}$ можно представить в виде $z = |z|e^{i\varphi}$, где $\varphi \in \Arg\left(z\right)$. Тогда формула Муавра приобретает совсем очевидный вид: +\[ +|z_1|e^{i\varphi_2}\cdot|z_2|e^{i\varphi_2} = |z_1||z_2|e^{i\left(\varphi_1+\varphi_2\right)}. +\] + +\begin{Comment} +Отображение $R_\varphi \colon \mathbb{C}\rightarrow\mathbb{C}$, $z\rightarrow ze^{i\varphi}$, $\varphi \in \mathbb{R}$ определяет поворот на угол $\varphi$ вокруг $0$. +\end{Comment} + +\section{Извлечение корней из комплексных чисел.} + +Пусть $n\in\mathbb N$ и $n\geqslant2$. + +\begin{Def} +Корнем $n$-й степени из числа $z$ называется всякое $w\in\mathbb C$: $w^n=z$. То есть +\[ +\sqrt[n]{z} = \{w\in\mathbb C\ |\ w^n = z\}. +\] +\end{Def} + +Если $z=0$, то $|z| = 0$, а значит $|w| = 0$, $w=0$. Получается, 0 --- единственное комплексное число, у которого корень определён однозначно. + +Далее рассмотрим случай $z \neq 0$. +\begin{gather*} +z = |z|\left(\cos\varphi+i\sin\varphi\right)\\ +w = |w|\left(\cos\psi+i\sin\psi\right) +\end{gather*} +\[ +z = w^n \Leftrightarrow +\begin{cases} +|z| = |w|^n \\ +n\psi\in\Arg\left(z\right) +\end{cases} +\Leftrightarrow +\begin{cases} +|w|= \sqrt[n]{|z|}\\ +n\psi= \varphi+2\pi k,\quad k\in \mathbb Z +\end{cases}\\ +\Leftrightarrow +\begin{cases} +|w|=\sqrt[n]{|z|}\\ +\psi = \cfrac{\varphi+2\pi k}{n},\quad k \in \mathbb{Z} +\end{cases} +\] + +С точностью до кратного $2\pi$ различные значения в формуле $\psi = \cfrac{\varphi+2\pi k }{n}$ получаются при $k = 0,\ 1,\ldots,n-1$. Значит $z$ имеет ровно $n$ корней $n$-й степени. + +\[ \sqrt[n]{z} = \Biggl\{|z|\left(\cos\cfrac{\varphi+2\pi k}{n}+i\sin\cfrac{\varphi+2\pi k }{n}\right)\ \biggl|\ k=0,\ldots,n-1\Biggr\} +\] + +\begin{Comment} +Точки из множества $\sqrt[n]{z}$ при $z\neq 0$ лежат в вершинах правильного $n$-угольника, вписанного в окружность радиуса $\sqrt[n]{|z|}$. +\end{Comment} + +\begin{Examples} $z=-1=\cos\pi+i\sin\pi $ +$$\sqrt[3]{z} = \biggl\{ \cos\cfrac\pi3+i\sin\cfrac\pi3;\ \cos\pi+i\sin\pi;\ \cos\cfrac{5\pi}{3}+i\sin\cfrac{5\pi}{3} \biggl\} +$$ +\begin{center} +\begin{tikzpicture}[scale=0.5] +\begin{scope}[thick,font=\scriptsize] +\draw [->] (-5,0) -- (5,0) node [above left] {$\Re z$}; +\draw [->] (0,-5) -- (0,5) node [below right] {$\Im z$}; +\draw (-3,-3pt) -- (-3,3pt) node [above left] {$-1$} node [below left] {$w_1$}; +\draw (0,0) -- (1.5, 2.6) node [right] {$w_0$}; +\draw (0,0) -- (1.5, -2.6) node [below right] {$w_2$}; +\end{scope} +\path [draw=black,fill=none] (0,0) circle (3); +\end{tikzpicture} +\end{center} + +\end{Examples} + +\section{Решение квадратных уравнений с комплексными коэффициентами. Формулировка основной теоремы алгебры комплексных чисел.} + +Пусть дано квадратное уравнение $az^2+bz+c=0$, где $a,\ b,\ c\in\mathbb{C}$ и $ a \neq 0$. Тогда имеем: +\begin{gather*} + z^2+\frac{b}{a}z+\frac{c}{a} = 0\\ + z^2+2\frac{b}{2a}z+\frac{b^2}{4a^2}+\frac{c}{a}-\frac{b^2}{4a^2} = 0\\ + \left(z+\frac{b}{2a}\right)^2=\frac{b^2-4ac}{4a^2}\\ + z+\frac{b}{2a} \in \sqrt{\frac{b^2-4ac}{4a^2}}=\frac{\sqrt{b^2-4ac}}{2a} +\end{gather*} + +То есть все решения --- это $z_1 = \cfrac{-b+d_1}{2a},\ z_2 = \cfrac{-b+d_2}{2a}$, где $\{d_1,d_2\} = \sqrt[2]{b^2-4ac}$. В частности, квадратное уравнение всегда имеет комплексный корень, а при $b^2-4ac\neq0$ два корня. + +\begin{Theorem}[Основная теорема алгебры] +Всякий многочлен $P\left(z\right) = a_nz^n + a_{n-1}z^{n-1} + \ldots \hm{+} a_1z + a_0$ степени $n$, где $n \geqslant 1$, $a_n \neq 0$, и $a_0,\ldots,a_n \in \mathbb{C}$ имеет корень. +\end{Theorem} + +\section{Овеществление комплексного векторного пространства; связь между соответствующими размерностями в конечномерном случае.} + +Пусть $V$ --- векторное пространство над $\mathbb{C}$. +\begin{Def} +Овеществление пространства $V$ --- это то же пространство $V$, рассматриваемое как пространство над $\mathbb{R}$. Обозначение: $V_\mathbb{R}$. +\end{Def} +Операция умножения на элементы $\mathbb{R}$ в $V$ уже есть, так как $\mathbb{R}$ --- подполе в $\mathbb{C}$. + +\begin{Examples} +$\mathbb{C}_\mathbb{R} = \mathbb{R}^2$. +\end{Examples} +\begin{Suggestion} +$V$ --- векторное пространство над $\mathbb{C}$, $\dim V < \infty$. Тогда $\dim V_\mathbb{R} = 2\dim V$. +\end{Suggestion} +\begin{proof} +Пусть $e_1, \ldots, e_n$ --- базис в $V$. Тогда $V = \{z_1e_1 + \ldots + z_ne_n\ |\ z_k \in \mathbb{C}\}$, причём такая запись единственная в силу определения базиса. Пусть $z_k = a_k+ib_k$, причём такая запись тоже единственная. Тогда будем иметь +\begin{gather*} +V = \{ \left(a_1+ib_1\right)e_1 + \ldots + \left(a_n+ib_n\right)e_n\ |\ a_k, b_k \in \mathbb{R}\} =\\ += \{a_1e_1 + \ldots + a_ne_n + b_1ie_1 + \ldots + b_nie_n\ |\ a_k, b_k \in \mathbb{R}\} +\end{gather*} +И причём такая запись тоже единственная. Выходит, что $e_1, e_2, \ldots, e_n, ie_1, ie_2, \ldots, ie_n$ --- базис в $V_\mathbb{R}$, в котором $2n = 2\dim V$ элементов. +\end{proof} + +\section{Комплексификация действительного векторного пространства; свзязь между соответствующими размерностями в конечномерном случае.} + +\begin{Def} +Комплексификация пространства $W$ --- это множество $W\times W = W^\mathbb{C} \hm{=} \{\left( u, v\right)\ |\ u,v \in W\}$ с операциями $\left(u_1, v_1\right) + \left(u_2, v_2\right) = \left(u_1+u_2, v_1+v_2\right)$, $\left(a + ib\right)\left(u, v\right) \hm{=} \left(au-bv, av+bu\right)$, где $a + ib \in \C$. +\end{Def} +\begin{Examples} +$\mathbb{R}^\mathbb{C} = \mathbb{C}$. +\end{Examples} + +\begin{Statement} +В нём выполняются все 8 аксиом векторного пространства над $\mathbb{C}$. +\end{Statement} +$W$ отождествляется подмножеством $\{\left(u, 0\right)\ |\ u\in W\}$. Действительно +\[ +w\in W\Leftrightarrow \left(w,0\right) \in W^\mathbb{C};\ i\left(w,0\right) = \left(0, w\right) \in W^\mathbb{C} +\] +В итоге $\forall \left(u, v\right) \in W^\mathbb{C}$ представим в виде +\[ +\left(u,v\right) = \left(u,0\right) + \left(0,v\right) = \left(u,0\right) + i\left(v,0\right) = u+iv +\] +То есть $W^\mathbb{C} = \{u+iv\ |\ u,v\in W\}$. +\begin{Suggestion} +$\dim W^\mathbb{C} = \dim W$ +\end{Suggestion} +\begin{Comment} +Здесь $W^\mathbb{C}$ --- пространство над $\mathbb{C}$, а $W$ --- над $\mathbb{R}$. +\end{Comment} +\begin{proof} +Пусть $e_1, \ldots, e_n$ --- базис в $W$. Тогда +\begin{gather*} +W^\mathbb{C} = \{\left(u,v\right)\ |\ u,v \in W\} = \{\left(a_1e_1 + a_2e_2 + \ldots + a_ne_n, b_1e_1 + b_2e_2 + \ldots + b_ne_n\right)\ |\ a_k,b_k \in \mathbb{R}\} = \\ += \{\left(a_1e_1,b_1e_1\right) + \ldots + \left(a_ne_n, b_ne_n\right)\} = \{\left(a_1+ib_1\right)e_1 + \ldots +\left(a_n + ib_n)e_n\right)\} = \\ += \{z_1e_1 + \ldots + z_ne_n\ |\ z_k \in \mathbb{C} \} +\end{gather*} +То есть выходит, что $e_1, \ldots, e_n$ --- базис в $W^\mathbb{C}$. +\end{proof} + +\section{Сумма двух подпространств векторного пространства. Связь размерностей двух подпространств с размерностями их суммы и пересечения. Прямая сумма двух подпространств.} + +Пусть $V$ --- конечномерное векторное пространство, а $U$ и $W$ --- подпространства (в качестве упражнения лектор предлагает доказать, что их пересечение --- тоже подпространство). + +\begin{Def} +Сумма подпространств $U$ и $W$ --- это множество. +\[ +U+W = \{u + w\ |\ u \in U, w \in W\} +\] +\end{Def} + +\begin{Comment} +$\dim \left( U \cap W \right) \leqslant \dim U \leqslant \dim \left(U + W\right)$ +\end{Comment} + +\begin{Examples} +Двумерные плоскости в пространстве $\mathbb{R}^3$ содержат общую прямую. +\end{Examples} + +\begin{Theorem} +$\dim \left(U \cap W\right) = \dim U + \dim W - \dim \left(U+W\right)$ +\end{Theorem} + +\begin{proof} +Положим $p = \dim \left(U \cap W\right)$, $k = \dim U$, $m = \dim W$. Выберем базис $a \hm{=} \{ a_1, \ldots, a_p\}$ в пересечении. Его можно дополнить до базиса $W$ и до базиса $U$. Значит $\exists b = \{ b_1, \ldots, b_{k-p}\}$ такой, что $a\cup b$ --- базис в $U$ и $\exists c = \{ c_1, \ldots, c_{m-p}\}$ такой, что $a \cup c$ --- базис в $W$. + +Докажем, что $a \cup b \cup c$ --- базис в $U+W$. + +Во-первых, докажем, что $U+W$ порождается множеством $a \cup b \cup c$. +\begin{gather*} +\left. +\begin{aligned} + &v \in U+W \Rightarrow \exists u \in U, w \in W\colon \ v = u+w\\ + &u \in U=\langle a \cup b\rangle \subset \langle a \cup b \cup c\rangle\\ + &w \in W=\langle a \cup c\rangle \subset \langle a \cup b \cup c\rangle\\ +\end{aligned} +\right| + \Rightarrow v = u + w \in \langle a \cup b \cup c\rangle + \Rightarrow U + W = \langle a \cup b \cup c\rangle +\end{gather*} + +Во-вторых, докажем линейную независимость векторов из $a \cup b \cup c$. + +Пусть скаляры $\alpha_1, \ldots, \alpha_p$, $\beta_1, \ldots, \beta_{k-p}$, $\gamma_1, \ldots, \gamma_{m-p}$ таковы, что: +\begin{gather*} +\underbrace{\alpha_1a_1+ \ldots +\alpha_pa_p}_x + \underbrace{\beta_1b_1+ \ldots +\beta_{k-p}b_{k-p}}_y + \underbrace{\gamma_1c_1 + \ldots + \gamma_{m-p}c_{m-p}}_z=0\\ +x+y+z = 0\\ +z = -x -y\\ +z \in W\\ +-x-y \in U\cap W\\ +\Rightarrow \exists \lambda_1,\ldots, \lambda_p \in F \colon z = \lambda_1a_1+\ldots+\lambda_pa_p +\end{gather*} +Тогда $\lambda_1a_1 + \ldots + \lambda_pa_p - \gamma_1c_1 - \ldots - \gamma_{m-p}c_{m-p} = 0$. Но $a \cup c$ --- базис $W$. Следовательно, $\lambda_1 \hm{=} \ldots = \lambda_p = \gamma_1 = \ldots = \gamma_{m-p} = 0$. Но тогда $0 = x+y = \alpha_1a_1 + \ldots + \alpha_pa_p + \beta_1b_1 + \ldots + \beta_{k-p}b_{k-p}$. Но $a\cup b$ --- базис $U \Rightarrow \alpha_1 = \ldots = \alpha_p = \beta_1 = \ldots = \beta_{k-p} = 0$. Итого, все коэффициенты равны нулю и линейная независимость тем самым доказана. То есть $a \cup b \cup c$ --- базис $U+W$. +\begin{gather*} + \dim \left(U+W\right) = |a\cup b \cup c| = |a| + |b| + |c| = p + k-p + m-p = k + m -p =\\ + =\dim U + \dim W - \dim\left(U\cap W\right) +\end{gather*} +\end{proof} + +\begin{Def} +Если $U \cap W = \{0\}$, то $U + W$ называется прямой суммой. +\end{Def} +\begin{Consequence} +В таком случае $\dim\left(U+W\right) = \dim U + \dim W$. +\end{Consequence} +\begin{Examples} + $U$ --- плоскость, $W$ --- прямая в $\mathbb{R}^3$. +\end{Examples} + + +\section{Описание всех базисов n-мерного векторного пространства в терминах одного базиса и матриц координат.} + +Пусть $V$ --- векторное пространство, $\dim V = n$, $e_1, \ldots, e_n$ --- базис. То есть +\[ +\forall v \in V \quad \exists!\: v = x_1e_1 + \ldots + x_ne_n, +\] +где $x_1, \ldots, x_n \in F$ --- координаты вектора $v$ в базисе $\left(e_1, \ldots, e_n\right)$. +Пусть также есть базис $e_1', \ldots, e_n'$: +\begin{align*} + e_1' &= c_{11}e_1 + c_{21}e_2 + \ldots + c_{n1}e_n\\ + e_2' &= c_{12}e_1 + c_{22}e_2 + \ldots + c_{n2}e_n\\ + \vdots\\ + e_n' &= c_{1n}e_1 + c_{2n}e_2 + \ldots + c_{nn}e_n +\end{align*} +Обозначим матрицу $C = \left(c_{ij}\right)$. Тогда можно переписать $\left(e_1', \ldots, e_n'\right)$ как $\left(e_1, \ldots, e_n\right)\cdot C$. +\begin{Suggestion} +$e_1', \ldots, e_n'$ образуют базис тогда и только тогда, когда $\det C \neq 0$. +\end{Suggestion} + +\begin{proof} \ +\begin{itemize} +\item[{$[\Rightarrow]$}] $e_1', \ldots, e_n'$ --- базис, а значит $\exists C' \in M_n \colon$ +\begin{gather*} +\left(e_1, \ldots, e_n\right) = \left(e_1', \ldots, e_n'\right)C' = \left(e_1, \ldots, e_n\right)CC'\\ +E = CC'\\ +C' = C^{-1} \Leftrightarrow \exists C^{-1} \Leftrightarrow \det{C} \neq 0 +\end{gather*} +\item[{$[\Leftarrow]$}] $\det C \neq 0 \Rightarrow \exists C^{-1}$. Покажем, что $e_1', \ldots, e_n'$ в таком случае линейно независимы. Пусть $x_1e_1' + x_2e_2' + \ldots + x_ne_n' = 0$. Тогда можно записать +\begin{gather*} +\left(e_1', e_2', \ldots, e_n'\right) +\begin{pmatrix} + x_1\\ + x_2\\ + \vdots\\ + x_n +\end{pmatrix} = 0\\ +\left(e_1, \ldots, e_n\right)C\begin{pmatrix} + x_1\\ + x_2\\ + \vdots\\ + x_n +\end{pmatrix} = 0 +\end{gather*} +Поскольку $\left(e_1, \ldots, e_n\right)$ --- базис, то $C \begin{pmatrix} + x_1\\ + x_2\\ + \vdots\\ + x_n +\end{pmatrix} = 0$. Умножая слева на обратную матрицу, получаем, что $x_1 = x_2 = \ldots = x_n = 0$ +\end{itemize} +\end{proof} + +\section{Матрица перехода от одного базиса конечномерного векторного пространства к другому. Формула преобразования координат при замене базиса.} + +Пусть $V$ --- векторное пространство, $\dim V = n$, вектора $e_1, \ldots, e_n$ --- базис, а $e'_1, \ldots, e'_n$ --- некий набор из $n$ векторов. Тогда каждый вектор из этого набора линейно выражается через базис. +\begin{gather*} +e'_j = \sum_{i = 1}^{n} c_{ij}e_i, \quad c_{ij} \in F \\ +(e'_1, \ldots, e'_n) = (e_1, \ldots, e_n) \cdot C, \quad C = (c_{ij}) +\end{gather*} +То есть мы получили матрицу, где в $j$-ом столбце стоят коэффициенты линейного разложения вектора $e'_j$ в базисе $(e_1, \ldots, e_n)$. + +Теперь пусть $e'_1, \ldots, e'_n$ --- тоже базис в $V$. В этом случае $\det C \neq 0$. + +\begin{Def} +Матрица $C$ называется матрицей перехода от базиса $(e_1, \ldots, e_n)$ к базису $(e'_1, \ldots, e'_n)$. +\end{Def} + +\begin{Comment} +Матрица перехода от $(e'_1, \ldots, e'_n)$ к $(e_1, \ldots, e_n)$ есть $C^{-1}$. +\end{Comment} + +Небольшое замечание касательно записи: когда базис записан в скобках, то есть $(e_1, \ldots, e_n)$, то нам важен порядок векторов в нем, в противном случае, при записи $e_1, \ldots, e_n$, порядок не важен. + +Итого, имеем два базиса пространства $V$, $(e_1, \ldots, e_n)$ и $(e'_1, \ldots, e'_n)$, и матрицу перехода $C$ такую, что $(e'_1, \ldots, e'_n) = (e_1, \ldots, e_n) \cdot C$. Возьмем некий вектор $v$ и разложим его по обоим базисам. +\begin{gather*} +v \in V \Rightarrow +\begin{aligned} +& v = x_1e_1 + \ldots + x_ne_n, \quad & x_i \in F \\ +& v = x'_1e'_1 + \ldots + x'_ne'_n, \quad & x'_i \in F +\end{aligned} +\end{gather*} + +\begin{Suggestion} +Формула преобразования координат при переходе к другому базису: +\begin{gather*} +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} += C +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*} +\qquad \text{или} \qquad +x_i = \sum_{j = 1}^{n}c_{ij}x'_j +\end{gather*} +\end{Suggestion} + +\begin{proof} +С одной стороны: +\begin{gather*} +v = x'_1 e'_1 + \ldots + x'_ne'_n = +\begin{pmatrix*} +e'_1 & \ldots & e'_n +\end{pmatrix*} +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*} = +\begin{pmatrix*} +e_1 & \ldots & e_n +\end{pmatrix*} C +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*}. +\end{gather*} + +Однако с другой стороны: +\begin{gather*} +v = x_1e_1 + \ldots + x_ne_n = +\begin{pmatrix*} +e_1 & \ldots & e_n +\end{pmatrix*} +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*}. +\end{gather*} + +Сравнивая одно с другим, получаем, что: +\[ +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} = C +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*}. +\] +\end{proof} + +\section{Линейные отображения векторных пространств, их простейшие свойства. Примеры.} + +Пусть $V$ и $W$ --- два векторных пространства над полем $F$. + +\begin{Def} +Отображение $f : V \rightarrow W$ называется линейным, если: +\begin{enumerate} +\item $f(u_1 + u_2) = f(u_1) + f(u_2), \quad \forall u_1, u_2 \in V$; +\item $f(\alpha u) = \alpha f(u), \quad \forall u \in V,\ \forall \alpha \in F$. +\end{enumerate} +\end{Def} + +\begin{Comment} +Свойства 1--2 эквивалентны тому, что +\[ +f(\alpha_1 u_1 + \alpha_2 u_2) = \alpha_1f(u_1) + \alpha_2f(u_2), \quad \forall u_1, u_2 \in V,\ \forall \alpha_1, \alpha_2 \in F. +\] +\end{Comment} +Здесь важно понимать, что сначала сложение векторов и умножение на скаляр происходит в пространстве $V$, а потом в пространстве $W$. + +\vspace{0.3cm} +\textbf{Простейшие свойства.} +\begin{enumerate} +\item $f(\vec{0}_V) = \vec{0}_W$ +\begin{proof} +$f(\vec{0}_V) = f(0 \cdot \vec{0}_V) = 0f(\vec{0}_V) = \vec{0}_W$ +\end{proof} +\item $\phi(-u) = -\phi(u)$, где $(-u)$ --- обратный элемент к $u$. +\begin{proof} +$\phi(-u) + \phi(u) = \phi(-u+u) = \phi(\vec{0}_V) = \vec{0}_W \Rightarrow \phi(-u) = -\phi(u)$ +\end{proof} +\end{enumerate} + +\vspace{0.3cm} +\textbf{Примеры} +\begin{itemize} +\item[\textbf{(0)}] $V \rightarrow V: v \mapsto v$ --- тождественное отображение. +\item[\textbf{(1)}] $f: \mathbb{R} \rightarrow \mathbb{R}$ линейно $\Leftrightarrow \exists k \in \mathbb{R}: f(x) = kx, \quad \forall x \in \mathbb{R}$ +\begin{proof} \ +\begin{description} +\item[$\Rightarrow$] $f(x) = f(x \cdot 1) = xf(1) = kx$, где $k = f(1)$ +\item[$\Leftarrow$] Проверим необходимые условия линейности. +\begin{enumerate} +\item $f(x) = kx \Rightarrow f(x_1 + x_2) = k(x_1 + x_2) = kx_1 + kx_2 = f(x_1) + f(x_2)$ +\item $f(\alpha x) = k\alpha x = \alpha k x = \alpha f(x)$ +\end{enumerate} +\end{description} +\end{proof} +\item[\textbf{(2)}] $f: \mathbb{R}^2 \rightarrow \mathbb{R}^2$ --- декартова система координат. +\begin{itemize} +\item[2.1] Поворот вокруг 0 на угол $\alpha$ линеен. +\item[2.2] Проекция на прямую, проходящую через 0, линейна. +\end{itemize} +\item[\textbf{(3)}] $P_n = R[x]_{\leqslant n}$ --- пространство всех многочленов от $x$ степени не больше $n$. +\begin{gather*} +\Delta : f \mapsto f' \text{ (производная)} \\ +\left. +\begin{aligned} +(f+g)' &= f' + g' \\ +(\alpha f)' &= \alpha f' +\end{aligned} +\right| \Rightarrow \Delta \text{ --- линейное отображение из $P_n$ в $P_{n-1}$} +\end{gather*} +\item[\textbf{(4)}] Векторное пространство $V$, $\dim V = n$, $e_1, \ldots, e_n$ --- базис. +\begin{gather*} +V \mapsto \mathbb{R}^n \\ +x_1e_1 + \ldots + x_ne_n \mapsto +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} \text{ --- тоже линейное отображение.} +\end{gather*} +\item[\textbf{(5)}] $A \in \Mat_{m\times n}$, $k \geqslant 1$ --- любое, $\phi: \Mat_{n\times k} \rightarrow \Mat_{m\times k}$. +\begin{gather*} +\phi(X) = A \cdot X \\ +A(X_1 + X_2) = AX_1 + AX_2 \\ +A(\alpha X) = \alpha(AX) +\end{gather*} +Частный случай, при $k = 1$ --- $\phi: F^n \rightarrow F^m$. +\end{itemize} + +\section{Изоморфизм векторных пространств. Отображение, обратное к изоморфизму. Композиция двух линейных отображений, композиция двух изоморфизмов. Отношение изоморфности на множестве всех векторных пространств. Классы изоморфизма векторных пространств.} + +\begin{Def} +Отображение $\phi: V \rightarrow W$ называется изоморфизмом, если $\phi$ линейно и биективно. Обозначение: $\phi : V \isom W$. +\end{Def} + +\begin{Suggestion} +Пусть $\phi: V \rightarrow W$ --- изоморфизм. Тогда $\phi^{-1}: W \rightarrow V$ --- тоже изоморфизм. +\end{Suggestion} +\begin{proof} +Так как $\phi$ --- биекция, то $\phi^{-1}$ --- тоже биекция. +\begin{gather*} +w_1, w_2 \in W \Rightarrow \exists v_1, v_2 \in V: +\begin{aligned} +&\phi(v_1) = w_1 & v_1 = \phi^{-1}(w_1)\\ +&\phi(v_2) = w_2 & v_2 = \phi^{-1}(w_2) +\end{aligned} +\end{gather*} +Тогда осталось только доказать линейность обратного отображения. Для этого проверим выполнение необходимых условий линейности. +\begin{enumerate} +\item $ \phi^{-1}(w_1 + w_2) = \phi^{-1}\left(\phi(v_1) + \phi(v_2)\right) = \phi^{-1}\left(\phi(v_1 + v_2)\right) = \id (v_1 + v_2) = v_1 + v_2$ +\item $\alpha \in F, \quad \phi^{-1}(\alpha w_1) = \phi^{-1}(\alpha\phi(v_1)) = \phi^{-1}(\phi(\alpha v_1)) = \id (\alpha v_1) = \alpha v_1$. +\end{enumerate} +\end{proof} + +\begin{Def} +Два векторных пространства $V$ и $W$ называются изоморфными, если существует изоморфизм $\phi: V \isom W$ (и тогда существует изоморфизм $V \leftisom W$ по предположению). Обозначение: $V \simeq W$ или $V \cong W$. +\end{Def} + +Отображения можно соединять в композиции: +\begin{gather*} +\left. +\begin{aligned} +\phi&: U \rightarrow V \\ +\psi&: V \rightarrow W +\end{aligned} +\right|\Rightarrow \psi \circ \phi : U \rightarrow W \quad \psi \circ \phi(u) = \psi(\phi(u)) +\end{gather*} + +\begin{Suggestion}\ +\begin{enumerate} +\item Если $\phi$ и $\psi$ линейны, то $\psi \circ \phi$ тоже линейно. +\item Если $\phi$ и $\psi$ изоморфизмы, то $\psi \circ \phi$ тоже изоморфизм. +\end{enumerate} +\end{Suggestion} + +\begin{proof} \ +\begin{enumerate} +\item Проверим необходимые условия линейности. +\begin{enumerate} +\item $(\psi \circ \phi)(u_1 + u_2) = \psi(\phi(u_1 + u_2)) = \psi(\phi(u_1) + \phi(u_2)) = \psi(\phi(u_1)) + \psi(\phi(u_2)) = \\ = (\psi \circ\phi)(u_1) + (\psi \circ \phi)(u_2)$ +\item $(\psi \circ \phi)(\alpha u) = \psi(\phi(\alpha u)) = \psi(\alpha\phi(u)) = \alpha \psi(\phi(u)) = \alpha (\psi \circ \phi) (u)$ +\end{enumerate} +\item Следует из сохранения линейности и того, что композиция биекций тоже биекция. +\end{enumerate} +\end{proof} + +\begin{Consequence} +Изоморфизм это отношение эквивалентности на множестве всех векторных пространств над фиксированным полем $F$. +\end{Consequence} +\begin{proof} \ +\begin{description} +\item[Рефлексивность] $V \simeq V$. +\item[Симметричность] $V \simeq W \Rightarrow W \simeq V$. +\item[Транзитивность] $(V \simeq U)\ \land\ (U \simeq W) \Rightarrow V \simeq W$. +\end{description} +\end{proof} + +То есть множество всех векторных пространств над фиксированным полем $F$ разбивается на попарно непересекающиеся классы, причем внутри одного класса любые два пространства изоморфны. Такие классы называются \textit{классами эквивалентности}. + +\section{Критерий изоморфности двух конечномерных векторных пространств.} + +\begin{Theorem} +Два конечномерных векторных пространства $V$ и $W$ над полем $F$ изоморфны тогда и только тогда, когда $\dim V = \dim W$. +\end{Theorem} + +Сначала докажем следующую лемму. + +\begin{Lemma}[1] +Для векторного пространства $V$ над полем $F$ размерности $n$ верно, что $V \simeq F^n$. +\end{Lemma} +\begin{proof} +Рассмотрим отображение $\phi: V \rightarrow F^n$ из примера 4. Пусть $(e_1, \ldots, e_n)$ --- базис пространства $V$. Тогда: +\[ +x_1e_1 + \ldots + x_ne_n \mapsto +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*}, \quad x_i \in F. +\] +Отображение $\phi$ линейно и биективно, следовательно $\phi$ --- изоморфизм. А раз существует изоморфное отображение между пространствами $V$ и $F^n$, то они изоморфны. +\end{proof} + +\begin{Comment} +Говорят, что функция $\phi$ \textit{отождествляет} пространство $V$ с пространством $F^n$, если $\phi: V \isom F^n$. +\end{Comment} + +Докажем ещё одну лемму. +\begin{Lemma}[2] +Пусть $\phi: V \isom W$ --- изоморфизм векторных пространств, а $e_1, \ldots, e_n$--- базис $V$. Тогда $\phi(e_1), \ldots, \phi(e_n)$ --- базис $W$. +\end{Lemma} + +\begin{proof} +Пусть $w \in W$ --- произвольный вектор. Положим $v \in V$ таковым, что $v \hm= \phi^{-1}(w)$. +\begin{gather*} +\begin{aligned} +v &= x_1e_1 + \ldots + x_ne_n, \quad x_i \in F \\ +w &= \phi(v) = \phi(x_1e_1 + \ldots + x_ne_n) = x_1\phi(e_1) + \ldots + x_n\phi(e_n) +\end{aligned} \Rightarrow W = \langle \phi(e_1), \ldots, \phi(e_n)\rangle +\end{gather*} + +Покажем, что $\phi(e_1), \ldots, \phi(e_n)$ --- линейно независимые вектора. + +Пусть $\alpha_1, \ldots, \alpha_n \in F$ таковы, что $\alpha_1\phi(e_1) + \ldots + \alpha_n\phi(e_n) = 0$. Это то же самое, что $\phi(\alpha_1 e_1 \hm+ \ldots + \alpha_n e_n) = 0$. Применяя $\phi^{-1}$, получаем $\alpha_1 e_1 + \ldots \alpha_n e_n = \phi^{-1}(0) = 0$. Но так как $e_1, \ldots, e_n$~--- базис в $V$, то $\alpha_1 = \ldots= \alpha_n = 0$, и потому вектора $\phi(e_1), \ldots, \phi(e_n)$ линейно независимы. Следовательно, этот набор векторов --- базис в $W$. +\end{proof} + +Теперь приступим к доказательству теоремы. +\begin{proof} \ +\begin{description} +\item[$\Rightarrow$] $V \simeq W \Rightarrow \exists \phi: V \isom W$. Тогда по лемме 2, если $e_1, \ldots, e_n$ --- базис $V$, то $\phi(e_1), \ldots, \phi(e_n)$ --- базис $W$, и тогда $\dim V = \dim W$. +\item[$\Leftarrow$] Пусть $\dim V = \dim W = n$. Тогда по лемме 1 существуют изоморфизмы $\phi: V \isom F^n$ и $\psi : W \isom F^n$. Следовательно, $\psi^{-1}\circ\phi: V \rightarrow W$ --- изоморфизм. +\end{description} +\end{proof} + +То есть получается, что с точностью до изоморфизма существует только одно векторное пространство размерности $n$. + +\section{Существование и единственность линейного отображения с заданными образами базисных векторов.} + +Пусть $V$, $W$ --- векторные пространства над $F$, и $e_1, \ldots, e_n$ --- базис $V$. +\begin{Suggestion} \ +\begin{enumerate} +\item Всякое линейное отображение $\phi : V \rightarrow W$ однозначно определяется векторами $\phi(e_1), \ldots, \phi(e_n)$. +\item Для всякого набора векторов $f_1, \ldots, f_n \in W$ существует единственное линейное отображение $\phi: V \rightarrow W$ такое, что $\phi(e_1) = f_1, \phi(e_2) = f_2, \ldots, \phi(e_n) = f_n$. +\end{enumerate} +\end{Suggestion} +\begin{proof} \ +\begin{enumerate} +\item Пусть $v \in V$, $v = x_1 e_1 + \ldots + x_ne_n$, где $x_i \in F$. Тогда $\phi(v) = x_1\phi(e_1) + \ldots + x_n \phi(e_n)$, то есть если мы знаем вектора $\phi(e_i)$, то сможем задать $\phi(v)$ для любого $v \in V$. +\item Определим отображение $\phi: V \rightarrow W$ по формуле $\phi(x_1 e_1 + \ldots + x_n e_n) = x_1f_1 + \ldots + x_nf_n$. Прямая проверка показывает, что $\phi$ линейна, а единственность следует из пункта 1. +\end{enumerate} +\end{proof} + +\begin{Consequence} +Если $\dim V = \dim W = n$, то для всякого базиса $e_1, \ldots, e_n$ пространства $V$ и всякого базиса $f_1, \ldots , f_n$ пространства $W$ существует единственный изоморфизм $\phi: V \isom W$ такой, что $\phi(e_1) = f_1, \ldots, \phi(e_n) = f_n$. +\end{Consequence} +\begin{proof} +Из пункта 2. предложения следует, что существует единственное линейное отображение $\phi: V \rightarrow W$ такое, что $\phi(e_1) = f_1, \ldots, \phi(e_n) = f_n$. Но тогда $\phi(x_1e_1 + \ldots + x_ne_n) \hm= x_1\phi(e_1) + \ldots + x_n\phi(e_n) = x_1f_1 + \ldots + x_nf_n$ для любых $x_i \in F$. Отсюда следует, что $\phi$ --- биекция. +\end{proof} + +\section{Матрица линейного отображения. Связь между координатами вектора и его образа при линейном отображении. Сумма двух линейных отображений и её матрица. Произведение линейного отображения на скаляр и его матрица.} + +Пусть $V$ и $W$ --- векторные пространства, $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $\phi: V \rightarrow W$ --- линейное отображение. Тогда: +\[ +\phi(e_j) = a_{1j}f_1 + \ldots + a_{mj}f_m = \sum_{i = 1}^{m}a_{ij}f_i. +\] + +\begin{Def} +Матрица $A = (a_{ij}) \in Mat_{m \times n}(F)$ называется \textit{матрицей линейного отображения $\phi$} в базисах $\mathbb{e}$ и $\mathbb{f}$ (или по отношению к базисам $\mathbb{e}$ и $\mathbb{f}$). +\end{Def} + +\begin{Comment} +Существует биекция $\{\text{линейные отображения } V \rightarrow W \} \rightleftarrows Mat_{m\times n}$. +\end{Comment} + +\begin{Comment} +В $A^{(j)}$ стоят координаты $\phi(e_j)$ в базисе $\mathbb{f}$. +\[ +(\phi(e_1), \ldots, \phi(e_n)) = (f_1, \ldots, f_m)\cdot A +\] +\end{Comment} + +Рассмотрим пример. + +Пусть $P_n = F[x]_{\leqslant n}$ --- множество многочленов над полем $F$ степени не выше $n$. Возьмем дифференцирование $\Delta: P_n \rightarrow P_{n-1}$. + +Базис $P_n$ --- $1, x, x^2, \ldots, x^n$. Базис $P_{n-1}$ --- $1, x, \ldots, x^{n-1}$. Тогда матрица линейного отображения будет размерности $n \times (n+1)$ и иметь следующий вид. +\[ +\begin{pmatrix*} +0 & 1 & 0 & 0 & \dots & 0 \\ +0 & 0 & 2 & 0 & \dots & 0 \\ +0 & 0 & 0 & 3 & \dots & 0 \\ +\hdotsfor{6} \\ +0 & 0 & 0 & 0 & \dots & n +\end{pmatrix*} +\] + +\begin{Suggestion} +Если $v = x_1 e_1 + \ldots + x_ne_n$ и $\phi(v) = y_1f_1 + \ldots + y_mf_m$, то +\[ +\begin{pmatrix*} +y_1 \\ +\vdots \\ +y_m +\end{pmatrix*} += A \cdot +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} +\] +\end{Suggestion} + +\begin{proof} +С одной стороны: +\[ +\phi(v) = x_1 \phi(e_1) + \ldots + x_n\phi(e_n) = (\phi(e_1), \ldots, \phi(e_n))\begin{pmatrix*}x_1 \\ \vdots \\ x_n\end{pmatrix*} = (f_1, \ldots, f_m)A\begin{pmatrix*}x_1 \\ \vdots \\ x_n\end{pmatrix*}. +\] +Однако с другой стороны: +\[ +\phi(v) = (f_1, \ldots, f_m)\begin{pmatrix*}y_1 \\ \vdots \\ y_m\end{pmatrix*}. +\] +Сравнивая обе части, получаем требуемое. +\end{proof} + +А теперь проанализируем операции над матрицами линейных отображений. + +$V$ и $W$ --- векторные пространства. \textbf{Обозначение:} $\Hom(V, W):=$ множество всех линейных отображений $V \rightarrow W$. + +Пусть $\phi, \psi \in \Hom(V, W)$. + +\begin{Def}\ +\begin{enumerate} +\item $\phi + \psi \in \Hom(V, W)$ --- это $(\phi + \psi)(v):= \phi(v) + \psi(v)$. +\item $\alpha \in F, \alpha\phi \in \Hom(V, W)$ --- это $(\alpha\phi)(v) := \alpha(\phi(v))$. +\end{enumerate} +\end{Def} + +\begin{Task}\ +\begin{enumerate} +\item Проверить, что $\phi + \psi$ и $\alpha\phi$ действительно принадлежат $\Hom(V, W)$. +\item Проверить, что $\Hom(V, W)$ является векторным пространством. +\end{enumerate} +\end{Task} + +\begin{Suggestion} +Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $\phi, \psi \in \Hom(V, W)$. При этом $A_{\phi}$ --- матрица линейного отображения $\phi$, $A_{\psi}$ --- матрица для $\psi$, $A_{\phi+\psi}$ --- для $\phi + \psi$, а $A_{\alpha\phi}$ --- для $\alpha\phi$. + +Тогда $A_{\phi+\psi} = A_{\phi} + A_{\psi}$ и $A_{\alpha\phi} = \alpha A_{\phi}$. +\end{Suggestion} +\begin{proof} + Проверяется путём применения соответствующих операций с матрицами. +\end{proof} + +\section{Композиия двух линейных отображений и её матрица.} + +Возьмем три векторных пространства --- $U, V$ и $W$ размерности $n, m$ и $k$ соответственно, и их базисы $\mathbb{e}, \mathbb{f}$ и $\mathbb{g}$. Также рассмотрим цепочку линейных отображений $U \xrightarrow{\psi} V \xrightarrow{\phi} W$. Пусть $A$ --- матрица $\phi$ в базисах $\mathbb{f}$ и $\mathbb{g}$, $B$ --- матрица $\psi$ в базисах $\mathbb{e}$ и $\mathbb{f}$, $C$ --- матрица $\phi\circ\psi$ в базисах $\mathbb{e}$ и $\mathbb{g}$. + +\begin{Suggestion} +$C = AB$. +\end{Suggestion} +\begin{proof} Запишем по определению: +\begin{align*} +(\phi \circ \psi)(e_r) &= \sum_{p = 1}^{k}c_{pr}g_p, \quad r = 1, \ldots, n \\ +\psi(e_r) &= \sum_{q = 1}^{m}b_{qr}f_q, \quad r = 1, \ldots, n \\ +\phi(f_q) &= \sum_{p = 1}^{k}a_{pq}g_p, \quad q = 1, \ldots, m +\end{align*} +Тогда: +\begin{gather*} +(\psi\circ\psi)(e_r) = \phi(\psi(e_r)) = \phi\left(\sum_{q = 1}^{m}b_{qr}f_g \right) = \sum_{q = 1}^{m}b_{qr}\phi(f_g) = \sum_{q = 1}^{m}b_{qr}\left(\sum_{p = 1}^{k}a_{pq}g_p \right) = \sum_{p = 1}^{k}\left(\sum_{q = 1}^{m}a_{pq}b_{qr} \right)g_p \\ +\Downarrow \\ +c_{pr} = \sum_{q = 1}^{m}a_{pq}b_{qr} \\ +\Downarrow\\ + C = AB +\end{gather*} +\end{proof} + +\section{Ядро и образ линейного отображения. Критерий инъективности линейного отображения в терминах его ядра.} + +Пусть $V$ и $W$ --- векторные пространства с линейным отображением $\phi: V \rightarrow W$. + +\begin{Def} +\textit{Ядро $\phi$} --- это множество $\Ker\phi := \{v \in V \mid \phi(v) = 0 \}$. +\end{Def} +\begin{Def} +\textit{Образ $\phi$} --- это множество $\Im \phi := \{w \in W \mid \exists v \in V : \phi(v) = w \}$. +\end{Def} + +\begin{Examples} +Все то же $\Delta: P_n \rightarrow P_{n-1}$. Для него $\Ker \Delta = \{f \mid f = const\},\ \Im \Delta = P_{n-1}$. +\end{Examples} + +\begin{Suggestion}\ + \begin{enumerate} + \item $\Ker \phi$ --- подпространство в $V$. + \item $\Im \phi$ --- подпространство в $W$. + + \end{enumerate} +\end{Suggestion} + +\begin{proof} + Проверим по определению. + \begin{enumerate} + \item \begin{itemize} + \item $\phi(0_v) = 0_w$ --- этот факт мы уже доказали. + \item $v_1, v_2 \in \Ker \phi \Rightarrow \phi(v_1+v_2) = \phi(v_1) + \phi(v_2) = 0_w + 0_w = 0_w \Rightarrow v_1+v_2 \in \Ker \phi$. + \item $v \in \Ker \phi, \alpha \in F \Rightarrow \phi(\alpha v) = \alpha \phi(v) = \alpha 0 = 0$, то есть $\alpha v$ тоже лежит в ядре. + \end{itemize} + \item \begin{itemize} + \item $0_w = \phi(0_v) \Rightarrow 0_w \in \Im(\phi)$. + \item $w_1, w_2 \in \Im \phi \Rightarrow \exists v_1, v_2 \in V\colon w_1 = \phi(v_1), w_2 = \phi(v_2) \Rightarrow w_1 + w_2 = \phi(v_1) + \phi(v_2) = \phi(v_1 + v_2) \Rightarrow w_1 + w_2 \in \Im \phi$. + \item $w \in \Im \phi, \alpha \in F \Rightarrow \exists v \in V \colon \phi(v) = w \Rightarrow \alpha w = \alpha \phi(v) = \phi(\alpha v) \Rightarrow \alpha w \in \Im \phi$. + + \end{itemize} + \end{enumerate} + То есть все условия подпространства по определению выполнены и предложение доказано. +\end{proof} + +\begin{Suggestion}\ + \begin{enumerate} + \item Отображение $\phi$ инъективно тогда и только тогда, когда $\Ker \phi = \{0\}$. + \item Отображение $\phi$ сюръективно тогда и только тогда, когда $\Im \phi = W$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item \begin{itemize} + \item $[\Rightarrow]$ Очевидно. + \item $[\Leftarrow]$ $v_1, v_2 \in V :\ \phi(v_1)=\phi(v_2) \Rightarrow \phi (v_1 - v_2) = 0 \Rightarrow v_1 - v_2 = 0 \Rightarrow v_1 = v_2 $. + \end{itemize} + \item Очевидно из определения образа. + \end{enumerate} +\end{proof} + +\begin{Consequence} + Отображение $\phi$ является изоморфизмом тогда и только тогда, когда $\Ker \phi~=~\{0\}$ и $\Im \phi = W$. +\end{Consequence} + +\section{Связь между рангом матрицы линейного отображения и размерностью его образа. Критерий изоморфности линейного отображения в терминах его матрицы.} + +\begin{Suggestion} + Пусть $U \subset V$ --- подпространство и $e_1, \ldots, e_k$ --- его базис. Тогда: + \begin{enumerate} + \item $\phi(U)$ --- подпространство, $\phi(U) = \langle \phi(e_1), \ldots, \phi(e_k)\rangle$; + \item $\dim \phi(U) \leqslant \dim U$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item $\phi(x_1e_1 + x_2e_2 + \ldots + x_ke_k) = x_1\phi(e_1) + \ldots + x_k\phi(e_k) \in \langle \phi(e_1), \ldots, \phi(e_k)\rangle$. + \item $\phi(U) = \langle\phi(e_1), \ldots, \phi(e_k)\rangle \Rightarrow \dim \phi(U) \leqslant \dim U$ по основной лемме о линейной зависимости. + \end{enumerate} +\end{proof} + +Пусть $V, W$ --- векторные пространства, $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $A$ --- матрица $\phi$ по отношению к $\mathbb{e},\ \mathbb{f}$. + +\begin{Suggestion} + $\dim \Im \phi = \rk A$. +\end{Suggestion} + +\begin{proof} + \begin{gather*} + v \in V,\ v = x_1e_1 + \ldots x_ne_n\\ + \phi(v) = y_1f_1 + \ldots y_mf_m + \end{gather*} + Тогда: + $$ + \begin{pmatrix} + y_1\\ + \vdots\\ + y_m + \end{pmatrix} + = A \begin{pmatrix} + x_1\\ + \vdots\\ + x_n + \end{pmatrix}. + $$ + \par $A^{\left(j\right)}$ --- столбец координат в базисе $\mathbb{f}$, $\alpha_1, \ldots, \alpha_n \in F$. + \[ + \alpha_1 \phi(e_1) + \ldots + \alpha_n \phi(e_n) = 0 \Leftrightarrow \alpha_1 A^{\left(1\right)} + \ldots + \alpha_n A^{\left(n\right)} = 0 + \] + Отсюда следует, что: + \[ + \rk A = \rk\{\phi(e_1), \ldots, \phi(e_n)\} = \dim \underbrace{\langle\phi(e_1), \ldots, \phi(e_n)\rangle}_{\Im\phi} = \dim \Im \phi. + \] +\end{proof} + +\begin{Consequence} + Величина $\rk A$ не зависит от выбора базисов $\mathbb{e}$ и $\mathbb{f}$. +\end{Consequence} + +\begin{Def} + Величина $\rk A$ называется рангом линейного отображения $\phi$. Обозначение:~$\rk \phi$. +\end{Def} + +\begin{Consequence} + Если $\dim V = \dim W = n$, то $\phi$--- изоморфизм тогда и только тогда, когда $\det A \neq 0$. Тогда $A$ --- квадратная. +\end{Consequence} + +\begin{proof} +\ +\par $[\Rightarrow]$ $\phi$ --- изоморфизм, следовательно: + \[ + \Im \phi = W \Rightarrow \dim \Im \phi = n \Rightarrow \rk A = n + \Rightarrow \det A \neq 0. + \] +\par $[\Leftarrow]$ $\det A \neq 0 \Rightarrow \exists A^{-1}$. +\[ \begin{pmatrix} + y_1\\ + \vdots\\ + y_m +\end{pmatrix} = A +\begin{pmatrix} +x_1\\ +\vdots\\ +x_n +\end{pmatrix} +\Rightarrow +\begin{pmatrix} +x_1\\ +\vdots\\ +x_n +\end{pmatrix} = A^{-1} \begin{pmatrix} + y_1\\ + \vdots\\ + y_m +\end{pmatrix} +\] +Таким образом, линейное отображение $\phi$ является биекцией, а значит, и изоморфизмом. +\end{proof} + +\section{Ранг произведения двух матриц.} + +\begin{Suggestion} + Пусть $A \in \Mat_{k\times m},\ B\in \Mat_{m\times n}$. Тогда $\rk AB \leqslant \min\{\rk A, \rk B\}$. +\end{Suggestion} + +\begin{proof} + Реализуем $A$ и $B$ как матрицы линейных отображений, то есть $\phi_A\colon F^m \rightarrow~F^k,\\ \phi_B\colon F^n \rightarrow F^m$. Тогда $AB$ будет матрицей отображения $\phi_A \circ \phi_B$. + \[ + \rk(AB) = \rk (\phi_A\circ\phi_B) + \begin{cases} + \leqslant \dim \Im \phi_A = \rk A \\ + \leqslant \dim \Im \phi_B = \rk B + + \end{cases} + \] +Первое неравенство следует из того, что $\Im(\phi_A\circ \phi_B) \subset \Im \phi_A$, откуда в свою очередь следует, что $\dim \Im (\phi_A\circ \phi_B) \leqslant \dim \Im \phi_A$. Рассматривая второе неравенство, получаем: + \[ + \Im (\phi_A\circ \phi_B) = \phi_A(\Im \phi_B) \Rightarrow \dim \Im (\phi_A\circ \phi_B)= \dim(\phi_A(\Im\phi_B)) \leqslant \dim\Im \phi_B. + \] +\end{proof} + +\begin{Task}\ + \begin{itemize} + \item Если $A$ квадртана и $\det A \neq 0$, то $\rk AB = \rk B$. + \item Если $B \in M_n$ и $\det B \neq 0$, то $\rk AB = \rk A$. + \end{itemize} +\end{Task} + +\section{Теорема о связи размерностей ядра и образа линейного отображения.} + +\begin{Theorem} + $\dim \Im \phi = \dim V - \dim \Ker \phi$. +\end{Theorem} + +Существует 2 способа доказательства. Рассмотрим оба. + +\begin{proof}[Бескоординатный способ] + Пусть $\dim \Ker \phi = k$ и $e_1, \ldots, e_k$ --- базис в $\Ker \phi$. Дополним его до базиса $V$ векторами $e_{k+1}, \ldots, e_n$. Тогда: + \[ + \Im \phi = \langle\phi(e_1), \ldots, \phi(e_k), \ldots, \phi(e_n)\rangle = \langle0, 0, \ldots, 0, \phi(e_{k+1}), \ldots, \phi(e_n)\rangle = \langle\phi(e_{k+1}), \ldots, \phi(e_{n})\rangle + \] + +Пусть $\alpha_{k+1}\phi(e_{k+1}) + \ldots + \alpha_n\phi(e_n) = 0$ для некоторых $\alpha_1, \ldots, \alpha_n \in F$. Тогда: +\begin{gather*} + \phi(\alpha_{k+1}e_{k+1} + \ldots + \alpha_ne_n) = 0 \\ + \alpha_{k+1}e_{k+1} + \ldots + \alpha_ne_n \in \Ker \phi \\ + \alpha_{k+1}e_{k+1} + \ldots + \alpha_ne_n = \beta_1e_1 + \ldots \beta_ke_k, +\end{gather*} +для некоторых $\beta_1, \ldots, \beta_k \in F$. + +Но так как $e_1, \ldots, e_n$ --- базис в $V$, то $\alpha_{k+1} = \ldots = \alpha_n = \beta_1 = \ldots = \beta_k = 0$. То есть векторы $\phi(e_1), \ldots, \phi(e_n)$ линейно независимы, а значит, образуют базис $\Im \phi$. Что и означает, что $\dim\Im\phi = n - k = \dim V - \dim\Ker\phi$. +\end{proof} + +\begin{proof}[Координатный способ] + Зафиксируем базис $\mathbb{e} = (e_1, \ldots, e_n)$ в $V$ и базис $\mathbb{f} = (f_1, \ldots, f_m)$ в $W$. Пусть $A$ --- матрица $\phi$ в базисе $\mathbb{f}$. Тогда $v = x_1e_1 + \ldots + x_ne_n$, $\phi(v) = y_1f_1 + \ldots + y_mf_m$. Получим, что $\begin{pmatrix} y_1\\ \vdots \\ y_m \end{pmatrix} = A \begin{pmatrix} x_1\\ \vdots \\ x_n\end{pmatrix}$. + + $\Ker \phi$ состоит из векторов, координаты которых удовлетворяют СЛУ $ A \begin{pmatrix} x_1\\ \vdots \\ x_n\end{pmatrix} = 0$. Ранее в курсе мы уже доказали, что размерность пространства решений равна $n - \rk A$, то есть $\dim \Im \phi = n - \rk A = \dim V - \dim \Ker \phi$. +\end{proof} + +\section{Линейный оператор. Матрица линейного оператора. Формула преобразования координат вектора при действии линейного оператора. Формула изменения матрицы линейного оператора при переходе к другому базису.} + +Пусть $V$ --- конечномерное векторное пространство. + +\begin{Def} + Линейным оператором (или линейным преобразованием) называется всякое линейное отображение $\phi \colon V \rightarrow V$, то есть из $V$ в себя. Обозначение: $L(V) = \Hom(V, V)$. +\end{Def} + +\par Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис в $V$ и $\phi \in L(V)$. Тогда: +$$ +\left(\phi(e_1), \ldots, \phi(e_n)\right) = \left(e_1, \ldots, e_n\right)A, +$$ +где $A$ --- матрица линейного оператора в базисе $\mathbb{e}$. В столбце $A^{\left( j\right)}$ стоят координаты $\phi(e_j)$ в базисе $\mathbb{e}$. Матрица $A$ --- квадратная. +\begin{Examples}\ + \begin{enumerate} + \item $\forall v \in V : \phi(v) = 0$ --- нулевая матрица. + \item Тождественный оператор: $\forall v \in V : \id(v) = v$ --- единичная матрица. + \item Скалярный оператор $\lambda \id(v) = \lambda V$ --- матрица $\lambda E$ в любом базисе. + \end{enumerate} +\end{Examples} + +\begin{Consequence}[Следствия из общих фактов о линейных отображениях]\ + \begin{enumerate} + \item Всякий линейный оператор однозначно определяется своей матрицей в любом фиксированном базисе. + \item Для всякой квадратной матрицы существует, причем единственный, линейный оператор $\phi$ такой, что матрица $\phi$ есть $A$. + \item Пусть $\phi \in L(V)$, $A$ --- матрица $\phi$ в базисе $\mathbb{e}$. Тогда: + \begin{gather*} + v = x_1e_1 + \ldots + x_ne_n\\ \phi(v) = y_1e_1 + \ldots + y_n e_n \\ + \begin{pmatrix} + y_1\\ + \vdots \\ + y_n + \end{pmatrix} = A \begin{pmatrix} + x_1\\ + \vdots \\ + x_n + \end{pmatrix} + \end{gather*} + \end{enumerate} +\end{Consequence} +Пусть $\phi \in L(V)$, $A$ --- матрица $\phi$ в базисе $\mathbb{e} = (e_1, \ldots, e_n)$. Пусть $\mathbb{e}' = (e_1', \ldots, e_n')$ --- другой базис, причём $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$, где $C$ --- матрица перехода, и $A'$ --- матрица $\phi$ в базисе $\mathbb{e}'$. +\begin{Suggestion} + $A' = C^{-1}AC$. +\end{Suggestion} +\begin{proof} + \begin{gather} + (e_1', \ldots, e_n') = (e_1, \ldots, e_n)C \\ + e_j' = \sum\limits_{i=1}^{n} c_{ij}e_i \\ + \phi(e_j') = \phi\left(\sum\limits_{i=1}^{n} c_{ij}e_i\right) = \sum\limits_{i=1}^nc_{ij}\phi(e_i)\\ + (\phi(e_1'), \ldots, \phi(e_n')) = (\phi(e_1),\ldots,\phi(e_n))C = (e_1, \ldots, e_n)AC= (e_1', \ldots, e_n')\underbrace{C^{-1}AC}_{A'} + \end{gather} +\end{proof} + +\section{Инвариантность определителя матрицы линейного оператора относительно замены базиса. Критерий обратимости линейного оператора в терминах его ядра, образа и определителя.} + +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор, и $\mathbb{e}$ --- базис в $V$. + +\begin{Designation} + $A(\phi,\;\mathbb{e})$ --- матрица линейного оператора $\phi$ в базисе $\mathbb{e}$. +\end{Designation} + +Если $\mathbb{e}' = (e_1', \ldots, e_n')$ --- ещё один базис, причём $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$, где $C$ --- матрица перехода, $A = A(\phi,\; \mathbb{e})$ и $A' = A(\phi,\; \mathbb{e}')$. +В прошлый раз мы доказали, что $A' = C^{-1}AC$. + +\begin{Consequence} + Величина $\det A$ не зависит от выбора базиса. Обозначение: $\det\phi$. +\end{Consequence} + +\begin{proof} + Пусть $A'$ --- матрица $\phi$ в другом базисе. Тогда получается, что: + \begin{gather*} + \det A' = \det \left(C^{-1}AC\right) = \det C^{-1} \det A \det C = \det A \det C \cfrac{1}{\det C} = \det A. + \end{gather*} +\end{proof} + +Заметим, что $\det A$ --- инвариант самого $\phi$. + +\begin{Def} + Две матрицы $A', A \in M_n(F)$ называются подобными, если существует такая матрица $C \in M_n(F), \det C \neq 0$, что $A' = C^{-1}AC$. +\end{Def} + +\begin{Comment} + Отношение подобия на $M_n$ является отношением эквивалентности. +\end{Comment} + +\begin{Suggestion} + Пусть $\phi \in L(V)$. Тогда эти условия эквивалентны: + \begin{enumerate} + \item $\Ker\phi = \{0\}$; + \item $\Im \phi = V$; + \item $\phi$ обратим (то есть это биекция, изоморфизм); + \item $\det \phi \neq 0$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item $\Leftrightarrow$ 2 --- следует из формулы $\dim V = \dim \Ker \phi + \dim \Im \phi$. + \item $\Leftrightarrow$ 3 --- уже было. + \item $\Leftrightarrow$ 4 --- уже было. + \end{enumerate} +\end{proof} + +\begin{Def} + Линейный оператор $\phi$ называется вырожденным, если $\det \phi = 0$, и невырожденным, если $\det \phi \neq 0$. +\end{Def} + +\section{Подпространство, инвариантное относительно линейного оператора. Инвариантность ядра и образа. Матрица линейного оператора в базисе, дополняющем базис инвариантного подпространства.} + +\begin{Def} + Подпространство $U \subseteq V$ называется инвариантным относительно $\phi$ (или $\phi$-инвариантным), если $\phi(U)\subseteq U$. То есть $\forall u\in U \colon \phi(u)\in U$. +\end{Def} + +\begin{Examples}\ + \begin{enumerate} + \item $\{0\}, V$ --- они инвариантны для любого $\phi$. + \item $\Ker\phi$ $\phi$-инвариантно, $\phi(\Ker\phi) = \{0\} \subset \Ker\phi$ + \item $\Im\phi$ тоже $\phi$-инвариантно, $\phi(\Im\phi)\subset \phi(V) = \Im \phi$. + \end{enumerate} +\end{Examples} + +Пусть $U\subset V$ --- $\phi$-инвариантное подпространство. Также пусть $(e_1, \ldots, e_k)$ --- базис в $U$. Дополним его до базиса $V\colon$ $\mathbb{e} = (e_1, \ldots, e_n)$. +\begin{gather} + \underbrace{A(\phi,\;\mathbb{e})}_{\text{Матрица с углом нулей}} = \begin{pmatrix} + B& C \\ + 0& D + \end{pmatrix}, \quad\text{где $B\in M_k$} +\end{gather} +Это нетрудно понять, если учесть, что $\phi(e_i)\in \langle e_1, \ldots, e_k\rangle,\ i=1,\dots, k$. +Если $U = \Ker \phi$, то $B = 0$. Если $U = \Im \phi$, то $D = 0$. + +Обратно, если матрица $A$ имеет в базисе $\mathbb{e}$ такой вид, то $U = \langle e_1, \ldots e_k\rangle$ --- инвариантное подпространство. + +\begin{Generalization} + Пусть $V = U \oplus W$, где $U,\ W$ --- инвариантные подпространства, и $(e_1, \ldots, e_k)$ --- базис $W$. Тогда $\mathbb{e} = (e_1, \dots, e_n)$ --- базис $V$. + \[ + A(\phi,\; \mathbb{e}) = \begin{pmatrix} + *& 0 \\ + 0& * + \end{pmatrix} + \] +\end{Generalization} + +\begin{Generalization} + \[ + A(\phi, \mathbb{e}) = + \begin{array}{cc} + \arraycolsep=1.4pt + \begin{pmatrix} + * &0 &0 &\ldots &0\\ + 0 &* &0 &\ldots &0 \\ + 0 &0 &* &\ldots &0 \\ + \vdots &\vdots &\vdots &\ddots &\vdots\\ + 0 &0 &0 &\ldots &* + \end{pmatrix} + \begin{matrix} + k_1 \\ k_2 \\ k_3 \\ \vdots \\ k_s + \end{matrix} + \end{array}\] + Здесь $k_1, \ldots, k_s$ --- размеры квадратных блоков блочно-диагональной матрицы. Матрица $A(\phi,\; \mathbb{e})$ имеет такой вид тогда и только тогда, когда: + \begin{gather*} + U_1 = \langle e_1, \ldots, e_{k_1}\rangle \\ + U_2 = \langle e_{k_1+1}, \ldots, e_{k_2} \rangle \\ + \vdots\\ + U_{k_s} = \langle e_{n-k_s+1}, \ldots, e_n \rangle + \end{gather*} +\end{Generalization} + +\section{Собственные векторы и собственные значения линейного оператора. Собственное подпространство и его инвариантность. Диагонализуемый линейный оператор, критерий диагонализуемости.} + +Пусть $\phi\in L(V)$. + +\begin{Def} + Ненулевой вектор $v\in V$ называется \textit{собственным} для $V$, если $\phi(v) = \lambda v$ для некоторго $\lambda \in F$. При этом число $\lambda$ называется собственным значением линейного оператора $\phi$, отвечающим собственному вектору $v$. +\end{Def} + +\begin{Suggestion} + Вектор $v \in V,\ v \neq 0$ --- собственный вектор в $V$ тогда и только тогда, когда линейная оболочка $\langle v \rangle$ является $\phi$-инвариантным подпространством +\end{Suggestion} + +\begin{proof}\ +\begin{itemize} +\item $[\Rightarrow]$ $\phi(v) = \lambda v \Rightarrow \langle v \rangle = \{kv\ |\ k\in F\}$. Тогда $\phi(kv) = \lambda k v \in \langle v \rangle.$ + +\item $[\Leftarrow]$ $\phi(v) \in \langle v \rangle \Rightarrow \exists \lambda \in F\colon \phi(v) = \lambda v$. +\end{itemize} +\end{proof} + +\begin{Examples} + \begin{enumerate} + \item $V = \mathbb{R}^2$, $\phi$ --- ортогональная проекция на прямуую $l$. \\ + \definecolor{uuuuuu}{rgb}{0.26666666666666666,0.26666666666666666,0.26666666666666666} +\definecolor{ffqqqq}{rgb}{1.,0.,0.} +\definecolor{qqqqff}{rgb}{0.,0.,1.} +\definecolor{xdxdff}{rgb}{0.49019607843137253,0.49019607843137253,1.} +\begin{tikzpicture} +[line cap=round,line join=round,x=1.0cm,y=1.0cm] +\draw[->,color=black] (-6.325793656583929,0.) -- (8.562522298306716,0.); +\foreach \x in {-6.,-5.,-4.,-3.,-2.,-1.,1.,2.,3.,4.,5.,6.,7.,8.} +\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$}; +\draw[->,color=black] (0.,-4.268699038293166) -- (0.,4.869752361413149); +\foreach \y in {-4.,-3.,-2.,-1.,1.,2.,3.,4.} +\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$}; +\draw[color=black] (0pt,-10pt) node[right] {\footnotesize $0$}; +\clip(-6.325793656583929,-4.268699038293166) rectangle (8.562522298306716,4.869752361413149); +\draw [domain=-6.325793656583929:8.562522298306716] plot(\x,{(-0.--2.3*\x)/2.22}); +\draw [domain=-6.325793656583929:8.562522298306716] plot(\x,{(-0.--2.22*\x)/-2.3}); +\draw [->,color=ffqqqq] (0.,0.) -- (1.62,3.18); +\draw (1.62,3.18)-- (2.3703405621232294,2.4557582400375795); +\draw [->,color=ffqqqq] (0.,0.) -- (2.3703405621232294,2.4557582400375795); +\begin{scriptsize} +\draw [fill=xdxdff] (0.,0.) circle (2.5pt); +\draw[color=black] (4.330621985691042,4.747088584235883) node {$l$}; +\draw [fill=qqqqff] (1.62,3.18) circle (2.5pt); +\draw [fill=uuuuuu] (2.3703405621232294,2.4557582400375795) circle (1.5pt); +\end{scriptsize} +\end{tikzpicture}\\ + $0\neq v \in l \Rightarrow \phi(v) = 1\cdot v,\ \lambda =1$ \\ + $0 \neq v \perp l \Rightarrow \phi(v) = 0 = 0 \cdot v,\ \lambda = 1$ + \item Поворот на угол $\phi$ вокруг нуля на угол $\alpha$. + \begin{itemize} + \item $\alpha = 0 + 2\pi k$. Любой ненулевой вектор собственный. $\lambda = 1$. + \item $\alpha = \pi + 2\pi k$. Любой ненулевой вектор собственный. $\lambda = -1$. + \item $\alpha \neq \pi k$. Собственных векторов нет. + \end{itemize} + \item $V = P_n(F)$ --- многочлены степени $n$, $\phi = \Delta\colon f \rightarrow f'$. Тогда $0 \neq f$ --- собственный вектор тогда, и только тогда, когда $f = const$. + \end{enumerate} +\end{Examples} + +\subsection*{Собственное подпространство} + +Пусть $\phi\in L(V)$, $\lambda\in F$. + +\begin{Def} + Множество $V_{\lambda}(\phi) = \{v\in V\ |\ \phi(v) = \lambda v\}$ называется собственным подпространством линейного оператора, отвечающим собственному значению $\lambda$. +\end{Def} + +\begin{Task} +Доказать, что $V_\lambda(\phi)$ --- действительно подпространство. +\end{Task} + +\begin{Suggestion} +$V_\lambda(\phi) = \Ker(\phi - \lambda\id)$. +\end{Suggestion} +\begin{proof} + $$ + v \in V_{\lambda}(\phi) \Leftrightarrow \phi(v) = \lambda v \Leftrightarrow \phi(v) - \lambda v = 0 \Leftrightarrow (\phi - \lambda \id)(v) = 0 \Leftrightarrow v \in \Ker(\phi - \lambda \id) + $$ +\end{proof} +\begin{Consequence} + Собственное подпространство $V_{\lambda}(\phi) \neq \{0\}$ тогда и только тогда, когда \\$\det(\phi - \lambda \id) = 0$. +\end{Consequence} + +\subsection*{Диагонализуемость} +\begin{Def} + Линейный оператор $\phi$ называется диагонализуемым, если существует базис $\mathbb{e}$ в $V$ такой, что $A(\phi, \mathbb{e})$ диагональна. +\end{Def} +\begin{Suggestion}[Критерий диагонализуемости] + Отображение $\phi$ диагонализуемо тогда и только тогда, когда в $V$ существует базис из собственных векторов. +\end{Suggestion} + +\begin{proof} + Пусть $\mathbb{e}$ --- базис $V$. Тогда $A = \diag(\lambda_1, \ldots, \lambda_n)$, что равносильно $\phi(e_i) = \lambda_i e_i$. Это и означает, что все векторы собственные. +\end{proof} +В примерах выше: +\begin{enumerate} + \item $\phi$ диагонализуем. $e_1 \in l,\ e_2 \perp l$. Тогда матрица примет вид $A = \begin{pmatrix} + 1 &0 \\ + 0 &0 + \end{pmatrix}$. + \item Если $\alpha = \pi k$, то $\phi$ диагонализуем ($\phi = \id$ или $\phi = - \id$). Не диагонализуем в других случаях. + \item $\phi$ диагонализуем тогда и только тогда, когда $n = 0$. При $n > 0$ собственных векторов. +\end{enumerate} + +\section{Характеристический многочлен линейного оператора. Связь собственных значений линейного оператора с его характеристическим многочленом.} + +Пусть $\phi\in L(V)$, $\lambda\in F$. + +\begin{Def} + Многочлен $\chi_{\phi}(t) = (-1)^n\det(\phi - t \id)$ называется характеристическим. +\end{Def} + +\begin{Def} + Пусть $V$ --- конечномерное векторное пространство над полем $F$. Рассмотрим линейный оператор $\phi: V \to V$. Тогда характеристический многочлен $\phi$ имеет вид: + \begin{gather*} + \chi_{\phi}(t) = (-1)^n\det(\phi - tE) = (-1)^n + \begin{vmatrix} + a_{11} - t & a_{12} &\ldots &a_{1n}\\ + a_{21} & a_{22} - t &\ldots &a_{2n} \\ + \vdots &\vdots &\ddots &\vdots\\ + a_{n1} &a_{n2} &\ldots & a_{nn} - t + \end{vmatrix} + = \\ + = (-1)^n(t^n(-1)^n + \ldots) = t^n + c_{n-1}t^{n-1} + \ldots + c_0 + \end{gather*} +\end{Def} + +\begin{Task} +Доказать, что: + \[c_{n-1} = -tr\phi;\] + \[c_0 = (-1)^n \det\phi.\] +\end{Task} + +\begin{Suggestion} + $\lambda$ --- собственное значение линейного оператора $\phi$ тогда и только тогда, когда $\chi_\phi(\lambda) = 0$. +\end{Suggestion} + +\begin{proof} + $\lambda$ --- собственное значение $\Leftrightarrow \exists v \neq 0 : \phi(v) = \lambda {v} \Leftrightarrow (\phi - \lambda {E})v = 0 \Leftrightarrow \Ker(\phi - \lambda {E}) \neq \{0\} + \Leftrightarrow \det(\phi - \lambda {E}) = 0 \Leftrightarrow \chi_\phi(\lambda) = 0.$ +\end{proof} + +\begin{Suggestion} + Если $F = \mathbb{C}$ и $\dim V > 0$, то любой линейный оператор имеет собственный вектор. +\end{Suggestion} + +\begin{proof} + Пусть $\phi: V \to V$ --- линейный оператор и $\chi_\phi(t)$ --- его характеристический многочлен. У него есть корень $\lambda$ --- собственное значение $\phi$, следовательно существует и собственный вектор $v$ с собственным значением $\lambda$. +\end{proof} + +\begin{Examples} + Для линейного оператора $\phi = \begin{pmatrix} + 0& -1 \\ + 1& 0 + \end{pmatrix}$ + (поворот на $90^\circ$ градусов против часовой стрелки относительно начала координат) характеристический многочлен имеет вид $\chi_\phi(x) = t^2+1$. + \\ При $F = \mathbb{R} \Rightarrow$ собственных значений нет. + \\ При $F = \mathbb{C} \Rightarrow$ собственные значения $\pm i$. +\end{Examples} + +\section{Алгебраическая и геометрическая кратности собственного значения линейного оператора, связь между ними.} + +\begin{Theorem} + Многочлен степени $n$ в поле комплексных чисел имеет $n$ комплексных корней (с учетом кратности). +\end{Theorem} + +\begin{proof} + По основной теореме алгебры каждый многочлен $G(x) \in \mathbb{C}[x]$ степени больше 1 имеет корень. Тогда $G(x) = (x - a_1)G_1(x),$ где $a_1$ --- корень многочлена $G(x)$. В свою очередь, многочлен $G_1(x)$ также имеет корень, и тогда $G(x) = (x - a_1)G_1(x) = (x - a_1)(x - a_2)G_2(x)$. Продолжая по индукции, получаем, что $G(x) = (x - a_1)(x - a_2)\ldots(x - a_n)b_n$, где $b_n$ --- коэффициент при старшем члене. +\end{proof} + +Также мы получаем следующее представление: +$$ +b_nx^n + b_{n-1}x^{n-1} + \ldots + b_0 = b_n(x - a_1)^{k_1}\ldots(x - a_s)^{k_s} +$$ + +\begin{Def} + Кратностью корня $a_i$ называется число $k_i$ такое, что в многочлене \\$b_n(x - a_1)^{k_1}\ldots(x - a_s)^{k_s}$ множитель $(x - a_i)$ имеет степень $k_i$. +\end{Def} + +\begin{Def} + Если $k$ --- кратность корня характеристического многочлена, то $k$ --- алгебраическая кратность собственного значения. +\end{Def} + +\begin{Def} + Пусть $\lambda$ --- собственное значение $\phi$, тогда $V_\lambda(\phi) = \{v \in V \; | \; \phi(v) = \lambda v\}$ --- собственное подпространство, то есть пространство, состоящее из собственных векторов с собственным значением $\lambda$ и нуля. +\end{Def} + +\begin{Def} + $\dim V_\lambda$ --- геометрическая кратность собственного значения $\lambda$. +\end{Def} + +\begin{Suggestion} + Геометрическая кратность не больше алгебраической кратности. +\end{Suggestion} + +\begin{proof} + Зафиксируем базис $u_1, \ldots, u_p$ в пространстве $V_\lambda$, где $p = \dim{V_\lambda}$. Дополним базис $u_1, \ldots, u_p$ до базиса $u_1, \ldots, u_p, u_{p+1}, \ldots, u_n$ пространства $V$. Тогда матрица линейного оператора $\phi$ в + том базисе будет выглядеть следующим образом: + \begin{gather*} + A_\phi = + \begin{pmatrix*} + \begin{array}{c|c} + \l E & A \\ \hline + 0 & B + \end{array} + \end{pmatrix*}, \quad \lambda E \in M_p,\ A \in M_{n-p} + \end{gather*} + Тогда характеристический многочлен будет следующим: + \begin{gather*} + \chi_\phi(t) = (-1)^n \det (A_\phi - tE) = + \begin{vmatrix} + \begin{array}{c|c} + \begin{matrix} + \lambda - t & & 0 \\ + & \ddots & \\ + 0 & & \lambda - t + \end{matrix} + & A \\ \hline + 0 & B - tE + \end{array} + \end{vmatrix} + = (-1)^n(\lambda - t)^p\det(B - tE) + \end{gather*} + + Как видим, $\chi_\phi(t)$ имеет корень кратности хотя бы $p$, следовательно, геометрическая кратность, которая равна $p$ по условию, точно не превосходит алгебраическую. +\end{proof} + +\begin{Examples} Рассмотрим линейный оператор $\phi = \begin{pmatrix} + 2& 1 \\ + 0& 2 + \end{pmatrix}$. + + $V_2 = \langle e_1\rangle \Rightarrow$ геометрическая кратность равна 1. + + $\chi_\phi(t) = (t-2)^2 \Rightarrow$ алгебраическая кратность равна 2. +\end{Examples} + +\section{Сумма нескольких подпространств векторного пространства. Прямая сумма нескольких подпространств, эквивалентные условия.} + +\begin{Def} + Пусть $U_1, \ldots, U_k$ --- подпространства векторного пространства $V$. Суммой нескольких пространств называется + $$ + U_1 + \ldots + U_k = \{u_1 + \ldots + u_k \; | \; u_i \in U_i \}. \qquad (*) + $$ +\end{Def} + +\begin{Task} + $U_1+\ldots + U_k$ --- подпространство в $V$. +\end{Task} + +\begin{Def} + Сумма $(*)$ называется прямой, если из условия $\:u_1 + \ldots + u_k = 0$ следует, что $u_1 = \ldots = u_k = 0$. Обозначение: $U_1 \oplus \ldots \oplus U_k$. +\end{Def} + +\begin{Task} + Если $v \in U_1 \oplus \ldots \oplus U_k$, то существует единственный такой набор \\$u_1 \in U_1, \ldots, u_k \in U_k$, что $v = u_1 + \ldots + u_k$. +\end{Task} + +\begin{Theorem} + Следующие условия эквивалентны: + \begin{enumerate} + \item Сумма $U_1 + \ldots + U_k$ --- прямая; + \item Если $\mathbb{e}_i$ --- базис $U_i$, то $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 + \ldots + U_k;$ + \item $\dim(U_1 + \ldots + U_k) = \dim{U_1} + \ldots + \dim{U_k}.$ + \end{enumerate} +\end{Theorem} + +\begin{proof}\ +\begin{itemize} + \item[$(1) \Rightarrow (2)$] Пусть мы имеем прямую сумму $U_1 \oplus \ldots \oplus U_k$. Покажем, что $\mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 \oplus \ldots \oplus U_k$. + + Возьмем вектор $v \in U_1 \oplus \ldots \oplus U_k$ и представим его в виде суммы $v = u_1 + \ldots + u_k$, где $u_i \in U_i$. Такое разложение единственное, так как сумма прямая. Теперь представим каждый вектор этой суммы в виде линейной комбинации базиса соответствующего пространства: + $$ + v = (c^1_1e^1_1 + \ldots + c^1_{s_1}e^1_{s_1}) + \ldots + (c^k_1e^k_1 + \ldots + c^k_{s_k}e^k_{s_k}) + $$ + Здесь $e_j^i$ это $j$-ый базисный вектор в $\mathbb{e}_i$, базисе $U_i$. Соответственно, $c_j^i$ это коэффициент перед данным вектором. + + Если $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ не является базисом, то существует какая-то еще линейная комбинация вектора $v$ через эти же векторы: + $$ + v = (d^1_1e^1_1 + \ldots + d^1_{s_1}e^1_{s_1}) + \ldots + (d^k_1e^k_1 + \ldots + d^k_{s_k}e^k_{s_k}) + $$ + Вычтем одно из другого: + $$ + 0 = v - v = ((d^1_1 - c^1_1)e^1_1 + \ldots + (d^1_{s_1} - c^1_{s_1})e^1_{s_1}) + \ldots + ((d^k_1 - c^k_1) e^k_1 + \ldots + (d^k_{s_k} - c^k_{s_k})e^k_{s_k}) + $$ + + Но по определению прямой суммы, ноль представим только как сумма нулей, то есть $d^i_j$ должно равняться $c^i_j$. А это значит, что не существует никакой другой линейной комбинации вектора $v$. Что нам и требовалось. + + \item[$(2) \Rightarrow (1)$] Пусть $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 + \ldots + U_k$. Тогда представим 0 в виде суммы векторов из данных пространств: $0 = u_1 + \ldots + u_k$, где $u_i \in U_i$. Аналогично прошлому пункту, разложим векторы по базисам: + $$ + 0 = (c^1_1e^1_1 + \ldots + c^1_{s_1}e^1_{s_1}) + \ldots + (c^k_1e^k_1 + \ldots c^k_{sk}e^k_{sk}) + $$ + Но только тривиальная комбинация базисных векторов дает ноль. Следовательно, $u_1 \hm= \ldots = u_k = 0$, и наша сумма по определению прямая. + + \item[$(2) \Rightarrow (3)$] Пусть $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 + \ldots + U_k$. Тогда: + $$ + \dim(U_1 + \ldots + U_k) = |\mathbb{e}| = |\mathbb{e_1}|+ \ldots + |\mathbb{e_k}| = \dim(U_1) + \ldots + \dim(U_k). + $$ + + \item[$(3) \Rightarrow (2)$] Пусть $\dim(U_1 + \ldots + U_k) = \dim{U_1} + \ldots + \dim{U_k}.$ + + Векторы $\mathbb{e}$ порождают сумму, следовательно, из $\mathbb{e}$ можно выделить базис суммы: + $$ + \dim(U_1 + \ldots + U_k) \leqslant |\mathbb{e}| \leqslant |\mathbb{e_1}|+ \ldots + |\mathbb{e_k}| = \dim{U_1} + \ldots + \dim{U_k}. + $$ + Но по условию $\dim(U_1 + \ldots + U_k) = \dim{U_1} + \ldots + \dim{U_k}$. Тогда $\dim(U_1 + \ldots + U_k) = |\mathbb{e}|$, и $\mathbb{e}$ это базис $U_1 + \ldots + U_k$. + \end{itemize} + \end{proof} + +\section{Сумма собственных подпространств линейного оператора, отвечающих попарно различным собственным значениям. Признак диагонализуемости линейного опеаратора.} + +Пусть $V$ --- векторное пространство над полем $F$, $\phi \in L(V)$, $\lambda_1, \ldots, \lambda_k$ --- набор собственных значений $\phi$, где $\lambda_i \neq \lambda_j$ при $i \neq j$, и $V_{\lambda_i}(\phi) \subseteq V$ --- соответствующее собственное подпространство. + +\begin{Suggestion} +Сумма $V_{\lambda_1}(\phi) + \ldots + V_{\lambda_k}(\phi)$ является прямой. +\end{Suggestion} + +\begin{proof} +Докажем индукцией по $k$. + +База: $k = 1$. Тут все ясно. + +Теперь пусть утверждение доказано для всех значений, меньших $k$. Докажем для $k$. + +Пусть $v_i \in V_{\lambda_i}(\phi)$ и пусть $v_1 + \ldots + v_k = 0$. Тогда: +\begin{gather*} +\phi(v_1 + \ldots + v_k) = \phi(0) = 0 \\ +\phi(v_1) + \ldots + \phi(v_k) = 0 \\ +\lambda_1v_1 + \ldots + \lambda_kv_k = 0 +\end{gather*} +Теперь вычтем из нижней строчки $v_1 + \ldots + v_k = 0$, домноженное на $\lambda_k$. Получим: +\begin{gather*} +(\lambda_1 - \lambda_k)v_1 + \ldots + (\lambda_k -\lambda_k)v_k = 0 \\ +(\lambda_1 - \lambda_k)v_1 + \ldots + (\lambda_{k-1} -\lambda_k)v_{k-1} + 0v_k= 0 +\end{gather*} +Но из предположения индукции, а также потому что $\lambda_i \neq \lambda_j$ при $i \neq j$, следует, что $v_1 = \ldots \hm= v_{k-1} = 0$. Но тогда и $v_k = 0$. + +Следовательно, сумма прямая, что нам и требовалось. +\end{proof} + +\subsection*{Диагонализуемость} + +\begin{Consequence} +Если характеристический многочлен имеет ровно $n$ попарно различных корней, где $n = \dim V$, то $\phi$ диагонализируем. +\end{Consequence} + +\begin{proof} +Пусть $\l_1, \ldots, \l_n$ --- корни $\chi_\phi(t)$, $\l_i \neq \l_j$. Тогда для всех $i$ выполняется, что $V_{\l_i}(\phi) \neq \{0\}$ и, следовательно, $\dim V_{\l_i}(\phi) = 1$. Но так как сумма $V_{\l_1}(\phi) + \ldots + V_{\l_k}(\phi)$ --- прямая, то $\dim (V_{\l_1}(\phi) + \ldots + V_{\l_k}(\phi)) = \dim V_{\l_1}(\phi) + \ldots + \dim V_{\l_k}(\phi) = n$. Иными словами, $V = V_{\l_1}(\phi) \oplus \ldots \oplus V_{\l_k}(\phi)$. + +Выберем произвольные $v_i \in V_{\l_i}\setminus\{0\}$. Тогда $(v_1, \ldots, v_n)$ будет базисом в $V$. И так как все $v_i$~--- собственные значения для $\phi$, то $\phi$ диагонализируем. +\end{proof} + +\section{Критерий диагонализуемости линейного оператора в терминах его характеристического многочлена и кратностей собственных значений.} + +\begin{Theorem}[Критерий диагонализируемости - 2] +Линейный оператор $\phi$ диагонализируем тогда и только тогда, когда +\begin{enumerate} +\item $\chi_\phi(t)$ разлагается на линейные множители; +\item Если $\chi_\phi(t) = (t - \l_1)^{k_1}\dots(t - \l_s)^{k_s}$, где $\l_i \neq \l_j$ при $i \neq j$, то $\dim V_{\l_i}(\phi) = k_i \ \forall i$ (то есть для любого собственного значения $V$ равны геометрическая и алгебраическая кратности). +\end{enumerate} +\end{Theorem} + +\begin{proof}\ +\begin{itemize} +\item[$\Rightarrow$] Так как $\phi$ --- диагонализируем, то существует базис $\e = (e_1, \ldots, e_n)$ такой, что: +\begin{gather*} +A(\phi, \e) = +\begin{pmatrix*} +\mu_1 & & 0 \\ +& \ddots & \\ +0 & & \mu_n +\end{pmatrix*} = \diag(\mu_1, \ldots, \mu_n). +\end{gather*} +Тогда: +$$ +\chi_\phi(t) = (-1)^n +\begin{vmatrix} +\mu_1-t & & 0 \\ +& \ddots & \\ +0 & & \mu_n-t +\end{vmatrix} = (-1)^n(\mu_1 - t)\ldots(\mu_n - t) = (t - \mu_1)\ldots(t-\mu_n). +$$ +Итого, первое условие выполняется. + +Теперь перепишем характеристический многочлен в виде $\chi_\phi(t) = (t - \l_1)^{k_1}\dots(t - \l_s)^{k_s}$, где $\l_i \neq \l_j$ при $i \neq j$ и $\{ \l_1, \ldots, \l_s \} = \{\mu_1, \ldots, \mu_n \}$. Тогда $V_{\l_i} \supseteq \langle e_j \mid \mu_j = \l_i \rangle$, следовательно, $\dim V_{\l_i}(\phi) \geqslant k_i$. Но мы знаем, что $\dim V_{\l_i} \leqslant k_i$! Значит, $\dim V_{\l_i}(\phi) = k_i$. + +\item[$\Leftarrow$] Так как $V_{\l_1}(\phi) + \ldots + V_{\l_s}(\phi)$ --- прямая, то $\dim (V_{\l_1}(\phi) + \ldots + V_{\l_s}(\phi)) = k_1 + \ldots + k_s = n$. + +Пусть $\e_i$ --- базис в $V_{\l_i}$. Тогда $\e_1 \cup \ldots \cup \e_s$ --- базис в $V$. То есть мы нашли базис из собственных векторов, следовательно, $\phi$ диагонализируем. +\end{itemize} +\end{proof} + +\section{Существование одномерного или двумерного инвариантного подпространства у линейного оператора в векторном пространстве над R.} + +Пусть $V$ --- векторное пространство над полем $\C$, $\phi \in L(V)$. Тогда в $V$ есть собственный вектор (или одномерное $\phi$--инвариантное пространство). + +\vspace{0.2cm} +Теперь пусть $V$ --- векторное пространство над полем $\R$, $\phi \in L(V)$. + +\begin{Theorem} +Существует одномерное или двумерное $\phi$--инвариантное подпространство в $V$. +\end{Theorem} + +\begin{proof} +Пусть $\e = (e_1, \ldots, e_n)$ --- базис в $V$. Комплексифицируем $V$. +\begin{gather*} +V^{\C} = \{ u + iv \mid u, v \in V \} \\ +V^{\C} \supset V = \{u + i\cdot0 \mid u \in V \} +\end{gather*} +Рассмотрим линейный оператор $\phi_\C \in L(V^\C)$, заданный как $\phi_\C(e_i) = \phi(e_i),\ \forall i$. Значит, $e_1, \ldots, e_n$~--- базис в $V^\C$. Следовательно, $\chi_{\phi_\C}(t) = \chi_\phi(t)$, так как $A(\phi_\C, \e) = A(\phi, \e)$. + +\underline{Случай 1}: $\chi_\phi(t)$ имеет хотя бы один действительный корень. Отсюда следует, что в $V$ есть собственный вектор, что равносильно существованию одномерного $\phi$--инвариантного подпространства (тогда $V^\C$ нам не нужно). + +\underline{Случай 2}: $\chi_\phi$ не имеет действительных корней. Пусть $\l + i\mu$ --- некоторый корень $\chi_\phi(t) $, который, напомним, равен $\chi_{\phi_\C}(t)$. Тогда у $\phi_\C$ существует собственный вектор $u+iv \in V^\C$ с собственным значением $\l + i\mu$ такой, что: +\begin{gather*} +\phi_\C(u+iv) = (\l + i\mu)(u+iv)\\ +\phi_\C(u + iv) = \phi_\C(u) + i\phi_\C(v) = \phi(u) + i\phi(v) \\ +(\l + i\mu)(u + iv) = \l \mu - \mu v + i(\mu u + \l v) +\end{gather*} +Сравнивая два последних равенства, получаем: +\begin{gather*} +\phi(u) = \l u - \mu v \\ +\phi(v) = \mu u + \l v +\end{gather*} +Следовательно, $\langle u, v \rangle$ --- $\phi$--инвариантное подпространство в $V$, двумерное если $u$ и $v$ линейно независимы и одномерное в противном случае. +\end{proof} + +\begin{Task} +Когда нет действительных корней (второй случай), $\phi$-инвариантное подпространство в $V$ всегда двумерно. +\end{Task} + +\begin{Examples} +Поворот на $\alpha$ в $\R^2$: $ +\begin{pmatrix} +\cos \alpha & -\sin \alpha \\ +\sin \alpha & \cos \alpha +\end{pmatrix} +$. Тогда $u = e_1$, $v = e_2$, $\l + i\mu = \cos \alpha + i\sin \alpha$. +\end{Examples} + +\section{Корневые векторы линейного оператора. Корневое подпространство. Критерий нетривиальности корневого подпространства. Инвариантность корневого подпространства.} + +\begin{Def} +Вектор $v \in V$ называется корневым вектором линейного оператора $\phi$, отвечающим значению $\l \in F$, если существует целочисленное $m \geqslant 0$ такое, что $(\phi - \l\id)^m(v) = 0$. + +Наименьшее такое $m$ называют высотой корневого вектора $v$. +\end{Def} +\ \\ +\begin{Comment}\ +\begin{enumerate} +\item Вектор $v = 0$ для любого $\phi$ имеет высоту 0. +\item Корневые векторы высоты 1 --- это в точности собственные векторы. +\end{enumerate} +\end{Comment} + +\begin{Examples} +$V = F[x]_{\leqslant n}$, $\Delta: f \rightarrow f'$. Здесь $\l = 0$ --- единственное собственное значение. Все векторы --- корневые, отвечающие $\l = 0$. +\end{Examples} + +\begin{Def} +Множество $V^\l(\phi) = \{ v \in V \mid \exists m \geqslant 0 : (\phi - \l\id)^m(v) = 0, m \in \mathbb Z \}$ называется корневым пространством для $\l \in F$. +\end{Def} + +\begin{Task} +$V^\l(\phi)$ --- подпространство в $V$. +\end{Task} + +\begin{Comment} +$V_\l(\phi) \subseteq V^\l(\phi) \ \forall \l \in F$. +\end{Comment} + +\begin{Suggestion} + Корневое подпространство нетривиально тогда и только тогда, когда $\lambda$ является собственным значением. Другими словами, $V^{\lambda}(\phi) \neq \{0\} + \Leftrightarrow \chi_{\phi}(\lambda) = 0.$ +\end{Suggestion} +\begin{proof}\ + \begin{itemize} + \item[$\Leftarrow$] + $\chi_{\phi}(\lambda) = 0 \Rightarrow V_{\lambda}(\phi) \neq \{0\} \Rightarrow V^{\lambda}(\phi) \neq \{0\}$, так как $V^{\lambda}(\phi) \supset V_{\lambda}(\phi)$. + \item[$\Rightarrow$] + Пусть $V^{\lambda}(\phi) \neq \{0\} \Rightarrow \exists v \neq 0 \in V^{\lambda}(\phi) \Rightarrow \exists m \geqslant 1: (\phi - \lambda \id)^{m}(v) = 0$. \\ + Рассмотрим $u = (\phi - \lambda \id)^{m - 1}(v) \neq 0,$ тогда: + \begin{gather*} + (\phi - \lambda \id)(u) = (\phi - \lambda \id)(\phi - \lambda \id)^{m - 1}(v) = (\phi - \lambda \id)^{m}(v) = 0. + \end{gather*} + То есть вектор $u$ --- это вектор, для которого $(\phi - \lambda \id)(u) = 0$, то есть собственный вектор. Следовательно $\lambda$ --- собственное значение. + \end{itemize} +\end{proof} +\begin{Suggestion} + Для любого собственного значения $\lambda \in F$ подпространство $V^{\lambda}(\phi)$ инвариантно относительно $\phi$. +\end{Suggestion} +\begin{proof} + Пусть $v$ --- корневой вектор высоты $m$. Докажем, что $\phi(v)$ --- также корневой вектор. + + Заметим, что если $u = (\phi - \lambda \id)(v),$ то $u$ --- корневой вектор высоты $m - 1$, и, соответственно, лежит в корневом подпространстве: + $$ + u = (\phi - \lambda \id)(v) = \phi(v) - \lambda{v} \in V^{\lambda}(\phi). + $$ + Мы получили, что + $\phi(v) \in \lambda{v} + V^{\lambda}(\phi).$ + Но $\lambda{v} \in V^{\lambda}(\phi)$, то есть $\lambda{v} + V^{\lambda}(\phi) = V^{\lambda}(\phi)$ и $\phi(v) \in V^{\lambda}(\phi)$. Что и означает, что пространство инвариантно относительно оператора $\phi$. +\end{proof} + +\section{Характеристический многочлен ограничения линейного оператора на корневое подпространство.} + +Пусть $V$ --- конечномерное векторное пространство, $\phi$ --- его линейный оператор. + +Положим для краткости, что $\phi - \lambda \id = \phi_{\lambda}$. + +\vspace{0.2cm} +Заметим, что ядра степеней линейного оператора <<вкладываются>> друг в друга --- те векторы, которые стали нулевыми при применении линейного оператора $\phi^k_\lambda$, при применении линейного оператора $\phi_\lambda$ ещё раз так и остаются нулевыми, а также <<добиваются>> (переводятся в нулевые) некоторые ранее ненулевые векторы. Итого, получаем следующее: +\[ +V_\lambda(\phi) = \ker\phi_\lambda \subset \ker\phi^2_\lambda \subset \ldots \subset \ker\phi^m_\lambda +\subset \ldots +\] +Причём существует такое $m$, что $\ker\phi^m_\lambda = \ker\phi^{m + 1}_\lambda$, так как $V$ --- конечномерно и размерность его не может увеличиваться бесконечно. Выберем наименьшее такое $m$. +\begin{Task} + Доказать, что для любого $s \geqslant 0$ выполняется равенство $\ker\phi^m_\lambda = \ker\phi^{m + s}_\lambda.$ +\end{Task} +Заметим также, что $V^{\lambda}(\phi) = \ker\phi^m_\lambda.$ Пусть $k_i = \dim\ker\phi^i_\lambda$. +Тогда: + $$ \dim{V_{\lambda}(\phi)} = k_1 < k_2 < \ldots < k_m = \dim{V^{\lambda}(\phi)}. + $$ + + +Будем обозначать как $\limref{\phi}{V}$ ограничение линейного оператора на пространство $V$. + +\begin{Suggestion}\ + \begin{enumerate} + \item Характеристический многочлен линейного отображения $\phi \; \vline_{V^{\lambda}(\phi)}$ равен $(t - \lambda)^{k_m}$. + \item Если $\mu \neq \lambda$, то линейный оператор $\phi - \mu \id$ невырожден на $V^{\lambda}(\phi)$. + \end{enumerate} +\end{Suggestion} + +\begin{proof} + Пусть $k_i = \dim \ker \phi^i_\l$, для $i = 1, \ldots, m$. Пусть также $k_0 = 0$. + + Выберем базис $\mathbb{e} = (e_1, \ldots, e_{k_m})$ в $V^{\lambda}(\phi)$ так, чтобы + $(e_1, \ldots, e_{k_i})$ также был базисом в $\ker\phi^{i}_\lambda$. Тогда матрица ограничения $\phi_\l$ на $V^{\l}(\phi)$ в этом базисе имеет блочный вид: + \begin{gather*} + A(\limref{\phi_\l}{V^\l(\phi)}, \e) = + \begin{pmatrix} + 0 & * & * & \ldots & * & * \\ + 0 & 0 & * & \ldots & * & * \\ + 0 & 0 & 0 & \ldots & * & * \\ + \vdots &\vdots &\vdots & \ddots & \vdots & \vdots\\ + 0 & 0 & 0 & \ldots & 0 & * \\ + 0 & 0 & 0 &\ldots & 0 & 0 + \end{pmatrix}, + \end{gather*} + где $(i, j)$-ый блок --- это матрица $\Mat_{(k_i - k_{i - 1}) \times (k_j - k_{j - 1})}$. + + Но тогда: + \begin{gather*} + A(\limref{\phi}{V^\l(\phi)}, \e) = A(\limref{\phi_\l}{V^\l(\phi)}, \e) + \l E = + \begin{pmatrix} + A_1 & * & * & \ldots & * & * \\ + 0 & A_2 & * & \ldots & * & * \\ + 0 & 0 & A_3 & \ldots & * & * \\ + \vdots &\vdots &\vdots & \ddots & \vdots & \vdots\\ + 0 & 0 & 0 & \ldots & A_{m-1} & * \\ + 0 & 0 & 0 & \ldots & 0 & A_m + \end{pmatrix}, \quad \text{где } A_i = \lambda E_{k_i - k_{i - 1}} \quad (*) + \end{gather*} + А значит, характеристический многочлен линейного отображения $\limref{\phi}{V^\l(\phi)}$ равен $(t - \lambda)^{k_m}$. + + Теперь докажем невырожденность линейного оператора $(\phi - \mu\id)$ при $\mu \neq \l$. + + Рассмотрим матрицу ограничения этого оператора на корневое подпространство: + $$ + A(\limref{(\phi - \mu \id)}{V^\l(\phi)}, \e) = A(\limref{\phi}{V^\l(\phi)}, \e) - \mu E. + $$ + + Она имеет вид $(*)$, где $A_i = (\lambda - \mu)E_{k_i}$. Следовательно, + $$ + \det(\limref{(\phi - \mu \id)}{V^\l(\phi)}) = (\lambda - \mu)^{k_m} \neq 0. + $$ + Что и означает, что линейный оператор невырожден. +\end{proof} + +\section{Размерность корневого подпространства линейного оператора.} + +\begin{Suggestion} + Если $\lambda$ -- собственное значение $\phi$, то $\dim{V^{\lambda}(\phi)}$ равен кратности + $\lambda$ как корня многочлена $\chi_\phi(t)$. +\end{Suggestion} + +\begin{proof} + Пусть $(e_1, \ldots, e_k)$ --- базис $V^{\lambda}(\phi),\ k = \dim{V^{\lambda}(\phi)}$. Дополним $(e_1, \ldots, e_k)$ до базиса $\mathbb{e} = (e_1, \ldots, e_n)$ всего пространства $V$. Тогда матрица линейного оператора имеет следующий вид: + \begin{gather*} + A_\phi = + \begin{pmatrix} + \begin{array}{c|c} + B & * \\ \hline + 0 & C + \end{array} + \end{pmatrix},\quad B \in M_k,\ C \in M_{n-k} \\ + \chi_\phi(t) = \det(tE - A) = \det(tE - B)\det(tE - C). + \end{gather*} + + Заметим, что $\det(tE - B)$ --- это характеристический многочлен $\limref{\phi}{V^\l(\phi)}$, следовательно, + $$ + \chi_\phi(t) = (t - \lambda)^k\det(tE - C). + $$ + Осталось показать, что $\lambda$ --- не корень $\det(tE - C)$. + + Пусть $W = \langle e_{k+1}, \ldots, e_n \rangle$. Тогда рассмотрим линейный оператор $\psi \in L(W)$, у которого матрица в базисе $(e_{k+1}, \ldots, e_n)$ есть $C$. Предположим, что $\det(\lambda E - C) = 0.$ Это значит, что $\lambda$~--- собственное значение для $\psi$ и существует вектор $w \in W,\ w \neq 0$ такой, что $\psi(w) = \lambda w$. + + Тогда: + \begin{gather*} + \phi(w) = \l w + u, \quad u \in V^\l(\phi) \\ + \phi(w) - \l w \in V^\l(\phi) \\ + (\phi - \l\id)(w) \in V^\l(\phi) \Rightarrow w \in V^\l(\phi) + \end{gather*} + Получили противоречие. Значит, $\l$ --- не корень $\det(tE - C)$. +\end{proof} + +\begin{Consequence} + $V^{\lambda}(\phi) = \ker(\phi - \l\id)^s$, где $s$ --- кратность $\lambda$ как корня многочлена $\chi_\phi(t)$. +\end{Consequence} + +\section{Сумма корневых подпространств, отвечающих попарно различным собственным значениям. Признак разложимости пространства в прямую сумму корневых подпространств линейного оператора. Формулировка Теоремы о Жордановой нормальной форме линейного оператора.} + +\begin{Suggestion} + Если $\lambda_1, \ldots, \lambda_k$, где $\lambda_i \neq \lambda_j$ при $i \neq j$ --- собственные значения $\phi$, то сумма $V^{\lambda_1}(\phi) + \ldots + V^{\lambda_k}(\phi)$ --- прямая. +\end{Suggestion} + +\begin{proof} + Положим для краткости, что $\phi - \lambda \id = \phi_{\lambda}$. + + Докажем индукцией по $k$. + + База при $k = 1$ --- ясно. + + Теперь пусть утверждение доказано для всех значений, меньших $k$. Докажем для $k$. + + Выберем векторы $v_i \in V^{\lambda_i}(\phi)$ такие, что $v_1 + \ldots + v_k = 0$. Пусть $m$ --- высота вектора $v_k$. Тогда применим к нашей сумме оператор $\phi^m_{\lambda_k}$, получив следующее: + \[ + \phi^m_{\lambda_k}(v_1) + \ldots + \phi^m_{\lambda_k}(v_{k-1}) + \phi^m_{\lambda_k}(v_k) = 0. + \] + С другой стороны, $ \phi^m_{\lambda_k}(v_k) = 0$, то есть: + \[ + \phi^m_{\lambda_k}(v_1) + \ldots + \phi^m_{\lambda_k}(v_{k-1}) + \phi^m_{\lambda_k}(v_k) = \phi^m_{\lambda_k}(v_1) + \ldots + \phi^m_{\lambda_k}(v_{k-1}) = 0. + \] + Тогда по предположению индукции $\phi^m_{\lambda_k}(v_1) = \ldots = \phi^m_{\lambda_k}(v_{k-1}) = 0$. Hо + $ \limref{\phi_{\l_k}}{V^{\l_i}(\phi)}$ невырожден и, следовательно, обратим при $i \neq k$. Значит, $v_1 = \ldots = v_{k-1} = 0$. Но тогда и $v_k = 0$. + + Следовательно, сумма прямая, что нам и требовалось. +\end{proof} + +\begin{Theorem} + Если характеристический многочлен $\chi_\phi(t)$ разлагается на линейные множители, причём $\chi_\phi(t) = (t - \lambda_1)^{k_1}\ldots(t - \lambda_s)^{k_s}$, то $V = \bigoplus_{i = 1}^s V^{\lambda_i}(\phi)$. +\end{Theorem} + +\begin{proof} + Так как сумма $ V^{\lambda_1}(\phi) + \ldots + V^{\lambda_s}(\phi)$ прямая и для любого $i$ выполняется, что $\dim(V^{\lambda_i}(\phi)) = k_i$, то: + $$ + \dim(V^{\lambda_1}(\phi) + \ldots + V^{\lambda_s}(\phi)) = k_1 + \ldots + k_s = \dim{V}. + $$ + Следовательно, $V = \bigoplus_{i = 1}^s V^{\lambda_i}(\phi)$. +\end{proof} + +\subsection*{Жордановы клетки} +\begin{Def} +Пусть $\lambda \in F$. \textbf{Жордановой клеткой} порядка $n$, отвечающей значению $\lambda$, называется матрица вида: +\begin{gather*} +J_\l^n = +\begin{pmatrix} +\l & 1 & 0 & \ldots & 0 & 0 \\ +0 & \l & 1 & \ldots & 0 & 0 \\ +0 & 0 & \l & \ddots & 0 & 0 \\ +\vdots & \vdots & \vdots & \ddots & \ddots & \vdots \\ +0 & 0 & 0 & \ldots & \l & 1 \\ +0 & 0 & 0 & \ldots & 0 & \l +\end{pmatrix} \in M_n(F). +\end{gather*} +\end{Def} + +Пусть $V$ --- векторное пространство, $\phi$ --- линейный оператор. + +\begin{Theorem}[Жорданова нормальная форма линейного оператора] +Пусть $\chi_\phi(t)$ разлагается на линейные множители. Тогда существует базис $\e$ в $V$ такой, что +\begin{gather*} +A(\phi, \e) = +\begin{pmatrix*} +J_{\mu_1}^{n_1} & 0 & \ldots & 0 \\ +0 & J_{\mu_2}^{n_2} & \ldots & 0 \\ +\vdots & \vdots & \ddots & \vdots \\ +0 & 0 & \ldots & J_{\mu_p}^{n_p} +\end{pmatrix*} \quad (*) +\end{gather*} +Кроме того, матрица $(*)$ определена однозначно с точностью до перестановок жордановых клеток. +\end{Theorem} + +\begin{Def} +Матрица $(*)$ называется жордановой нормальной формой линейного оператора. +\end{Def} + +\begin{Consequence} +В векторном пространстве над полем комплексных чисел для любого линейного оператора существует жорданова нормальная форма. +\end{Consequence} + +\section{Линейная функция на векторном пространстве. Пространство линейных функций, его размерность. Двойственный (сопряжённый) базис.} + +\begin{Def} +Линейной функцией (формой, функционалом) на векторном пространстве $V$ называется всякое линейное отображение $\sigma \colon V \rightarrow F$. + +Обозначение: $V^* = \Hom(V, F)$. +\end{Def} + +\begin{Comment} +Функционалом принято называть, когда векторное пространство состоит из функций. +\end{Comment} + +\begin{Examples}\ +\begin{enumerate} +\item $\alpha \colon \R^n \rightarrow \R;\ \phi(v) = \langle v, e \rangle$ --- скалярное произведение с некоторым фиксированным $e$. +\item $\alpha \colon \mathcal{F}(X, F) \rightarrow F;\ \alpha(f) = f(x_0)$. Здесь $\mathcal{F}(X, F) = \{f \colon X \rightarrow F \}$. +\item $\alpha \colon C[a, b] \rightarrow \R;\ \alpha(f) = \int_a^b f(x) dx$. +\item $\alpha \colon M_n(F) \rightarrow F;\ \alpha(X) = \mathrm{tr}A$. +\end{enumerate} +\end{Examples} + +\begin{Def} +Пространство $V^*$ называется сопряженным (двойственным) к $V$. +\end{Def} + +Пусть $\e = (e_1, \ldots, e_n)$ --- базис $V$. Тогда он определяет изоморфизм $\phi \colon V^* \to \Mat_{1\times n}$, \\$\alpha \mapsto (\alpha_1, \ldots, \alpha_n)$, где $\alpha_i = \phi(e_i)$ и $\alpha$ --- линейная функция. При этом, если $x = x_1e_1 + \ldots + x_ne_n$, то $\alpha(x) = (\alpha_1, \ldots, \alpha_n)\begin{pmatrix}x_1\\ \vdots \\ x_n\end{pmatrix}$. + +\begin{Consequence} +$\dim V^* = n$. +\end{Consequence} + +Пусть $\e = (e_1, \ldots, e_n)$ --- базис $V$. Рассмотрим линейные формы $\eps_0, \ldots, \eps_n$ такие, что $\eps_i(e_j) =~\delta_{ij}$, где $\delta_{ij} = +\begin{cases} +1, & i = j \\ +0, & i \neq j +\end{cases} +$ --- символ Кронекера. То есть $\eps_i = (\delta_{i1}, \ldots, \delta_{ii}, \ldots, \delta_{in}) = (0, \ldots, 1, \ldots, 0)$. + +\begin{Suggestion} +$(\eps_1, \ldots, \eps_n)$ --- базис в $V^*$. +\end{Suggestion} + +\begin{proof} +Возьмем любое $\alpha \in V^*$. Положим $a_i = \alpha(e_i)$. Тогда $\alpha = a_1\eps_1 + \ldots + a_n\eps_n$. То есть мы получили, что через $(\eps_1, \ldots, \eps_n)$ действительно можно выразить любое $\alpha$. + +Теперь покажем, что $\eps_1, \ldots, \eps_n$ --- линейно независимы. Пусть $a_1\eps_1 + \ldots + a_n\eps_n = 0,\ a_i \in F$. Применив эту функцию к $e_i$, получим, что $a_1\eps_1(e_1) + \ldots + a_n\eps_n(e_i) = 0$. Отсюда следует, что $a_i = 0$, а все остальные $a_j$, при $j \neq i$, равны нулю в силу определения $\eps_j$. Итого, $a_1 = \ldots \hm= a_n = 0$, что и доказывает линейную независимость. +\end{proof} + +\begin{Def} +Базис $(\eps_1, \ldots, \eps_n)$ называется сопряженным к $\e$ базисом. +\end{Def} + +\begin{Task} +Всякий базис $V^*$ сопряжен некоторому базису $V$. +\end{Task} + +\section{Билинейная функция. Матрица билинейной функции. Формула для вычисления значений билинейной функции в координатах. Существование и единственность билинейной функции с заданной матрицей. Формула изменения матрицы билинейной функции при переходе к другому базису. Ранг билинейной функции.} + +\begin{Def} +Билинейной функцией (формой) на векторном пространстве $V$ называется всякое билинейное отображение $\beta \colon V \times V \rightarrow F$. То есть это отображение, линейное по каждому аргументу: +\begin{enumerate} +\item $\beta(x_1 + x_2, y) = \beta(x_1, y) + \beta(x_2, y)$; +\item $\beta(\l x, y) = \l\beta(x, y)$; +\item $\beta(x, y_1 + y_2) = \beta(x, y_1) + \beta(x, y_2)$; +\item $\beta(x, \l y) = \l\beta(x, y)$. +\end{enumerate} +\end{Def} + +\begin{Examples}\ +\begin{enumerate} +\item $V = \R^n,\ \beta(x, y) = \langle x, y \rangle$ --- скалярное произведение. +\item $V = \R^2,\ \beta(x, y) = \begin{vmatrix}x_1 & y_1 \\ x_2 & y_2\end{vmatrix}$. +\item $V = C[a, b],\ \beta(f, g) = \int_a^bf(x)g(x)dx$. +\end{enumerate} +\end{Examples} + +Пусть $V$ --- векторное пространство, $\dim V < \infty$, $\beta \colon V \times V \rightarrow F$ --- билинейная функция. + +\begin{Def} +Матрицей билинейной функции в базисе $\e$ называется матрица $B = (b_{ij})$, где $b_{ij} = \beta(e_i, e_j)$. Обозначение: $B(\beta, \e)$. +\end{Def} + +Пусть $x = x_1e_1 + \ldots + x_ne_n \in V$ и $y = y_1e_1 + \ldots + y_ne_n \in V$. Тогда: +\begin{gather*} +\beta(x, y) = \beta\left(\sum_{i = 1}^{n}x_ie_i, \sum_{j = 1}^{n}y_je_j\right) = \sum_{i = 1}^{n} x_i\beta\left(e_i, \sum_{j = 1}^{n}y_je_j\right) = \\ += \sum_{i = 1}^{n}x_i\sum_{j = 1}^{n}y_j\beta(e_i, e_j) = \sum_{i = 1}^{n}\sum_{j = 1}^{n}x_ib_{ij}y_j = \\ += (x_1, \ldots, x_n)B \vvector{y} \quad (*) +\end{gather*} + +\begin{Suggestion}\ +\begin{enumerate} +\item Всякая билинейная функция однозначно определяется своей матрицей в базисе $\e$ (и, следовательно, в любом другом базисе). +\item Для любой матрицы $B \in M_n(F)$ существует единственная билинейная функция $\beta$ такая, что $B = B(\beta, \e)$. +\end{enumerate} +\end{Suggestion} + +\begin{proof}\ +\begin{enumerate} +\item Уже доказано, это следует из формулы $(*)$. +\item Определим $\beta$ по формуле $(*)$. Тогда $\beta$ --- это билинейная функция на $V$ и ее матрица есть в точности $B$. Единственность следует из все той же формулы. +\end{enumerate} +\end{proof} + +Пусть $\e = (e_1, \ldots, e_n)$ и $\e' = (e'_1, \ldots, e'_n)$ --- два базиса $V$, $\beta$ --- билинейная функция на $V$. Пусть также $\e' = \e C$, где $C$ --- матрица перехода, также $B(\beta, \e) = B$ и $B(\beta, \e') = B'$. + +\begin{Suggestion} +$B' = C^TBC$. +\end{Suggestion} + +\begin{proof} +Рассмотрим представление вектора $x \in V$ в обоих базисах. +\begin{gather*} +\begin{aligned} +x = x_1e_1 + \ldots + x_ne_n = (e_1, \ldots, e_n)\vvector{x} \\ +x = x'_1e'_1 + \ldots + x'_ne'_n = (e'_1, \ldots, e'_n) \vvector{x'} +\end{aligned} +\Longrightarrow +\vvector{x} = C\vvector{x'} +\end{gather*} +Аналогично для $y \in V$: +\begin{gather*} +\begin{aligned} +y = (e_1, \ldots, e_n)\vvector{y} \\ +y = (e'_1, \ldots, e'_n) \vvector{y'} +\end{aligned} +\Longrightarrow +\vvector{y} = C\vvector{y'}. +\end{gather*} +Тогда, если мы транспонируем формулу для $x$, получаем: +$$ +\beta(x, y) = \vector{x}B\vvector{y} = \vector{x'}C^TBC\vvector{y'}. +$$ +Одновременно с этим: +$$ +\beta(x, y) = \vector{x'}B'\vvector{y'}. +$$ +Сравнивая эти две формулы, получаем, что $B' = C^TBC$. +\end{proof} + +\begin{Consequence} +Число $\rk B$ не зависит от выбора базиса. +\end{Consequence} + +\begin{Def} +Число $\rk B$ называется рангом билинейной функции $\beta$. Обозначение: $\rk \beta$. +\end{Def} + +\section{Симметричная билинейная функция. Характеризация симметричности билинейной функции в терминах её матрицы. Квадратичная форма. Соответствие между симметричными билинейными функциями и квадратичными формами. Матрица квадратичной формы.} + +\begin{Def} +Билинейная функция называется симметричной, если $\beta(x, y) =\beta(y, x)$ для любый $x, y \in V$. +\end{Def} + +\begin{Suggestion} +Билинейная функция $\beta$ симметрична тогда и только тогда, когда матрица $B(\beta, \e)$ --- симметрическая (т.е. она равна своей транспонированной). +\end{Suggestion} + +\begin{proof} +Пусть $B = B(\beta, \e)$. +\begin{itemize} +\item[$\Rightarrow$] $\beta(e_i, e_j) = b_{ij} = b_{ji} = \beta(e_j, e_i) \Rightarrow B$ симметрична. +\item[$\Leftarrow$] Пусть $x = x_1e_1 + \ldots x_ne_n$ и $y = y_1e_1 + \ldots + y_ne_n$. Также воспользуемся тем, что данная нам матрица симметрична, то есть равна своей транспонированной. +\begin{gather*} +\beta(y, x) = \vector{y}B\vvector{x} = \left[\vector{y}B\vvector{x}\right]^T =\\ += \vector{x}B^T\vvector{y} = \vector{x}B\vvector{y} = \beta(x, y) +\end{gather*} +То есть $\beta(y, x) = \beta(x, y)$, что и означает, что $\beta$ симметрична. +\end{itemize} +\end{proof} + +\subsection*{Квадратичные функции} + +\begin{Def} +Пусть $\beta \colon V\times V \rightarrow F$ --- билинейная функция. Тогда $Q_\beta \colon V \rightarrow F$, заданная формулой $Q_\beta(x) = \beta(x, x)$, называется квадратичной функцией (формой), ассоциированной с билинейной функцией $\beta$. +\end{Def} + +Покажем, что такая квадратичная функция по своему виду является однородным многочленом степени 2 от $n$ переменных. Пусть $\e = \vector{e}$ --- базис $V$, $B = B(\beta, \e)$, $x = \vector{x}$. Тогда: +$$ +Q_\beta(x) = \vector{x}V\vvector{x} = \sum_{i = 1}^{n}\sum_{j = 1}^{n}b_{ij}x_ix_j +$$ + +\begin{Examples} +Здесь $\e$ --- стандартный базис. +\begin{enumerate} +\item $V = \R^n,\ \beta(x, y) = x_1y_1 + \ldots + x_ny_n\ \Rightarrow\ Q_\beta(x) = x_1^2 + \ldots + x_n^2,\ B(\beta, \e) = E$. +\item $V = \R^2,\ \beta(x, y) = 2x_1y_2\ \Rightarrow\ Q_\beta(x) = 2x_1x_2,\ B(\beta, \e) = \begin{pmatrix}0 & 2 \\ 0 & 0\end{pmatrix}$. +\item $V=\R^2,\ \beta(x, y) = x_1y_2+x_2y_1\ \Rightarrow\ Q_\beta(x) = 2x_1x_2,\ B(\beta, \e) = \begin{pmatrix}0 & 1 \\ 1 & 0\end{pmatrix}$. +\end{enumerate} +\end{Examples} + +\begin{Comment} +Квадратичная функция задает билинейную функцию не однозначно (примеры 2 и 3). +\end{Comment} + +Предположим, что в нашем поле $F$ можно делить на два. То есть: рассматриваем такие поля $F$, в которых $1 + 1 \neq 0$. В терминах поля, это уже гораздо более осмысленное и понятное условие. + +\begin{Theorem} +Отображение $\beta \mapsto Q_\beta$ является биекцией между симметричными билинейными функциями на $V$ и квадратичными функциями на $V$. +\end{Theorem} + +\begin{proof}\ \\ +\underline{Суръективность.} Пусть $\beta$ --- билинейная функция. Рассмотрим тогда ассоциированную с ней квадратичную функцию $Q_\beta(x) = \beta(x, x)$. Пусть $\sigma(x, y) = \frac{1}{2}(\beta(x, y) + \beta(y, x))$ --- симметричная билинейная функция на $V$. Тогда: +$$ +Q_\sigma(x) = \sigma(x, x) = \frac{1}{2}(\beta(x, x) + \beta(x, x)) = \beta(x, x) = Q_\beta(x) +$$ +Итого, $Q_\sigma = Q_\beta$. Следовательно, отображение суръективно. + +\underline{Инъективность}. Пусть $\beta(x, y)$ -- симметричная билинейная функция. Аналогично, рассмотрим $Q_\beta(x) = \beta(x, x)$. Посмотрим на $Q_\beta(x + y)$: +\begin{gather*} +Q_\beta(x + y) = \beta(x + y, x + y) = \beta(x, x) + \beta(x, y) + \beta(y, x) + \beta(y, y) = Q_\beta(x) + Q_\beta(y) + 2\beta(x, y) \\ +\Downarrow \\ +\beta(x, y) = \frac{1}{2}\left( Q_\beta(x + y) - Q_\beta(x) - Q_\beta(y) \right) +\end{gather*} +Полученная выше формула как раз и означает, что значения билинейной функции однозначно задаются соответствующей квадратичной функцией. +\end{proof} + +\begin{Comment}\ +\begin{enumerate} +\item Билинейная функция $\sigma(x, y) = \frac{1}{2}(\beta(x, y) + \beta(y, x))$ называется симметризацией билинейной функции $\beta$. Причем если $B = B(\beta, \e)$ и $S = B(\sigma, \e)$, то $S = \frac{1}{2}(B + B^T)$. +\item Симметричная билинейная функция $\beta(x, y) = \frac{1}{2}\left( Q_\beta(x + y) - Q_\beta(x) - Q_\beta(y) \right)$ называется поляризацией квадратичной функции $Q$. +\end{enumerate} +\end{Comment} + +\begin{Examples} +Для предыдущих двух примеров: +$$ +\begin{pmatrix} +0 & 1 \\ +1 & 0 +\end{pmatrix} = \frac{1}{2}\left( +\begin{pmatrix} +0 & 2 \\ +0 & 0 +\end{pmatrix} ++ +\begin{pmatrix} +0 & 2 \\ +0 & 0 +\end{pmatrix}^T +\right) +$$ +\end{Examples} + +Пусть $V$ --- векторное пространство, $\dim V < \infty$, $\beta \colon V \times V \rightarrow F$ --- билинейная функция, $Q_\beta \colon V \times F$ --- ассоциированная с ней квадратичная форма. + +Матрица $Q_\beta$ равна матрице $\beta$. + +\section{Канонический и нормальный вид квадратичной формы. Метод Лагранжа приведения квадратичной формы к каноническому виду. Приведение квадратичной формы над полем R к нормальному виду.} + + +Пусть $V$ --- векторное пространство, $\dim V = n$, $\e = \vector{e}$ --- базис $V$, $Q \colon V \rightarrow F$ --- квадратичная функция на $V$. + +\begin{Theorem} +Для любой квадратичной функции $Q$ существует такой базис, в котором $Q$ имеет канонический вид. +\end{Theorem} + +\begin{proof} Метод Лагранжа. + +Докажем индукцией по $n$. + +При $n = 1$ имеем, что $Q(x) = ax^2$, то есть уже имеем канонический вид. + +Предположим, что для всех значений меньших $n$ доказано. Докажем тогда для $n$. + +Пусть $A = (a_{ij})$ --- матрица квадратичной функции $Q$ в исходном базисе. Тогда: +$$ +Q(x) = Q(x_1, \ldots, x_n) = \sum_{i = 1}^{n}a_{ii}x_i^2 + 2\sum_{1 \leqslant i < j \leqslant n}a_{ij}x_ix_j +$$ + +\underline{Случай 0}: пусть $a_{ij} = 0$ для всех пар $(i, j)$. Тогда $Q(x) = 0x_1^2 + \ldots + 0x_n^2$ --- уже канонический вид. + +\underline{Случай 1}: пусть существует такое $i$, что $a_{ii} \neq 0$. Перенумеровав переменные, считаем, что $a_{11} \neq 0$. Тогда: +\begin{gather*} +Q(x_1, \ldots, x_n) = (a_{11}x_1^2 + 2a_{12}x_1x_2 + \ldots + 2a_{1n}x_1x_n) + Q_1(x_2, \ldots, x_n) = \\ += \frac{1}{a_{11}}\left((a_{11}x_1 + \ldots + a_{1n}x_n)^2 - (a_{12}x_2 + \ldots + a_{1n}x_n)^2 \right) + Q_1(x_2, \ldots, x_n) = \\ += \frac{1}{a_{11}}(a_{11}x_1 + \ldots + a_{1n}x_n)^2 + Q_2(x_2, \ldots, x_n) +\end{gather*} +Теперь сделаем следующую замену переменных: +\begin{gather*} +x_1' = a_{11}x_1 + \ldots + a_{1n}x_n \\ +x_2' = x_2, \ldots, x_n' = x_n +\end{gather*} +Получаем: +$$ +Q(x_1', \ldots, x_n') = \frac{1}{a_{11}}x_1' + Q_2(x_2', \ldots, x_n') +$$ +Дальше пользуемся предположением индукции для $Q_2$, окончательно получая канонический вид для исходной $Q$. + +\underline{Случай 2}: пусть $a_{ii} = 0$ для всех $i$, но существует такая пара $(i, j)$, где $i < j$, что $a_{ij} \neq 0$. Переименовываем переменные так, чтобы $a_{12} \neq 0$ и делаем замену: +\begin{gather*} +x_1 = x_1' - x_2' \\ +x_2 = x_1' + x_2' \\ +x_3 = x_3', \ldots, x_n = x_n' +\end{gather*} +Тогда $2a_{12}x_1x_2 = 2a_{12}x_1'^2 - 2a_{12}x_2'^2$. Следовательно: +$$ +Q(x_1', \ldots, x_n') = 2a_{12}x_1'^2 - 2a_{12}x_2'^2 + 2\sum_{1 \leqslant i < j \leqslant n}a_{ij}x_i'x_j' +$$ +Таким образом, мы пришли к случаю 1, который уже умеем решать. +\end{proof} + +\begin{Consequence} +Всякую квадратичную функцию над полем $\R$ можно заменой базиса привести к нормальному виду. +\end{Consequence} + +\begin{proof} +Существует такой базис, в котором $Q(x_1, \ldots, x_n) = a_1x_1^2 + \ldots + a_nx_n^2$. Сделаем замену: +$$ +x_i' = +\begin{cases} +\sqrt{|a_i|}x_i, & \text{если } a_i \neq 0 \\ +x_i, & \text{если } a_i = 0 +\end{cases} +$$ +Второе условие нужно для того, чтобы можно было выразить старые переменные через новые, не деля при этом на ноль. + +Получаем, что $Q(x_1', \ldots, x_n') = \epsilon_1x_1'^2 + \ldots + \epsilon_nx_n'^2$, где $\epsilon_i = \sgn a_i \in \{-1, 0, 1\}$. Что нам и было надо. +\end{proof} + +\begin{Comment} +Если $F = \C$, то любую квадратичную функцию $Q$ можно привести к виду $Q(x_1, \ldots, x_n) = x_1^2 + \ldots + x_k^2$, где $k \leqslant n$ ($k = \rk Q$), то есть $B(Q, \e) = \diag(1, \ldots, 1, 0, \ldots, 0)$. +\end{Comment} + +\section{Закон инерции для квадратичной формы над R.} + +Пусть $Q$ --- квадратичная функция над $\R$, которая в базисе $\e$ имеет нормальный вид: +$$ +Q(x_1, \ldots, x_n) = x_1^2 + \ldots + x_s^2 - x_{s + 1}^2 - \ldots - x_{s + t}^2, +$$ +где $s$ --- это количество положительных слагаемых, а $t$ --- отрицательных. + +\begin{Theorem}[Закон инерции] +Числа $s,\ t$ не зависят от выбора базиса, в котором $Q$ имеет нормальный вид. +\end{Theorem} + +\begin{proof} +Пусть $\e = \vector{e}$ --- базис такой, что $v = x_1e_1 + \ldots + x_ne_n$ и $Q$ имеет в нем нормальный вид: $Q(v) = x_1^2 + \ldots + x_s^2 - x_{s + 1}^2 - \ldots - x_{s + t}^2$. + +Пусть также $\mathbb{f} = \vector{f}$ --- другой базис такой, что $v = y_1e_1 + \ldots + y_ne_n$ и $Q$ также имеет в нем нормальный вид: $Q(v) = y_1^2 + \ldots + y_p^2 - y_{p + 1}^2 - \ldots - y_{p + q}^2$. + +Заметим, что $s + t = p + q$, так как обе эти суммы равны $\rk Q$. В допущении, что $s \neq p$, не умоляя общности будем считать, что $s > p$. + +Положим $L_1 = \langle e_1, \ldots, e_s \rangle,\ \dim L_1 = s$ и $L_2 = \langle f_{p + 1}, \ldots, f_{n}\rangle,\ \dim L_2 = n - p$. Видно, что $L_1 + L_2 \subset V$, а значит, $\dim(L_1 + L_2) \leqslant n$. Тогда: +$$ +\dim(L_1 \cap L_2) = \dim L_1 + \dim L_2 - \dim(L_1 + L_2) \geqslant s + n - p - n = s - p > 0. +$$ +Следовательно, существует ненулевой вектор $v \in L_1 \cap L_2$. Разложим тогда этот вектор в базисах данных линейных оболочек: +\begin{gather*} +v = x_1e_1 + \ldots + x_se_s,\ \exists x_i \neq 0 \Rightarrow Q(v) = x_1^2 + \ldots + x_s^2 >0 \\ +v = y_{p + 1}f_{p + 1} + \ldots + y_nf_n \Rightarrow Q(v) = -y_{p+1}^2 - \ldots - y_{p + q}^2 \leqslant 0 +\end{gather*} + +Получили противоречие. Значит, исходное предположение неверно и $s = p$. Откуда в свою очередь следует, что $t = q$. +\end{proof} + +\begin{Def} +Эти числа имеют свои названия: +\begin{enumerate} +\item $i_+ := s$ --- положительный индекс инерции; +\item $i_- := t$ --- отрицательный индекс инерции; +\item $i_0 := n - s - t$ --- нулевой индекс инерции. +\end{enumerate} +\end{Def} + +\section{Метод Грама-Шмидта ортогонализации квадратичной формы. Теорема Якоби.} + +Пусть $V$ --- векторное пространство над полем $F$ размерности $n$, и $\mathbb{e} = (e_1, \ldots, e_n)$ --- его базис. Пусть также $Q\colon \; V \to F$ --- квадратичная форма, $\beta\colon\; V\times V \to F$ --- соответствующая билинейная функция и $B = B(\beta, \mathbb{e})$ --- ее матрица. +$$ +B = \begin{pmatrix} + b_{11}& b_{12} & b_{13} & \vdots\\ + b_{21}& b_{22} & b_{23} & \vdots\\ + b_{31}& b_{32}& b_{33} & \vdots\\ + \cdots& \cdots& \cdots& \ddots +\end{pmatrix} +$$ + +Рассмотрим $B_i$ --- левые верхние $i\times i$-подматрицы. Например, $B_1 = (b_{11})$, $B_2 = \begin{pmatrix} + b_{11}& b_{12}\\ + b_{21}& b_{22} +\end{pmatrix}$ +и так далее. +\par Матрица $B_i$ --- это матрица ограничения билинейной функции $\beta$ на подпространство, натянутое на векторы $(e_1, \ldots, e_i)$. Назовем \textit{верхним угловым минором} число $\delta_i = \det(B_i)$. Также будем считать, что $\delta_0 = 1$. +\begin{Def} + Базис $\mathbb{e}$ называется ортогональным (по отношению к $\beta$), если $\beta(e_i, e_j) = 0$ для любых $i \neq j$. В ортогональном базисе матрица квадратичной формы имеет канонический вид. +\end{Def} +\begin{Theorem}[Метод ортогонализации Грама -- Шмидта] + Предположим, что $\delta_i \neq 0$ для всех $i$. Тогда существует единственный базис $\mathbb{e}' = (e_1', \ldots, e_n')$ в $V$ такой, что + \begin{enumerate} + \item $\mathbb{e}'$ --- ортогональный + \item $e_1' = e_1,\\ e_2' \in e_2 + \langle e_1'\rangle,\\ e_3' \in e_3 + \langle e_1', e_2' \rangle,\\ \ldots\\ e_n' \in e_n + \langle e_1', \ldots, e_{n-1}'\rangle$ + \item $Q(e_i') = \cfrac{\delta_i}{\delta_{i-1}}$ для всех $i$. + \end{enumerate} +\end{Theorem} +\begin{proof} + Индукция по $n$. База для $n = 1$ очевидна. + \par Теперь пусть всё доказано для всех $k 0$ & $Q(x) > 0\ \forall x \neq 0$ \\ +отрицательно определенной & $Q < 0$ & $Q(x) < 0\ \forall x \neq 0$ \\ +неотрицательно определенной & $Q \geqslant 0$ & $Q(x) \geqslant 0\ \forall x$ \\ +неположительно определенной & $Q \leqslant 0$ & $Q(x) \leqslant 0\ \forall x$ \\ +неопределенной & $-$ & $\exists x, y \colon Q(x) > 0,\ Q(y) < 0$ +\end{tabular} + +\begin{tabular}{c|c|c} +Термин & Нормальный вид & Индексы инерции \\ \hline +положительно определенной & $x_1^2 + \ldots + x_n^2$ & $i_+=n,\ i_- = 0$ \\ +отрицательно определенной & $-x_1^2 - \ldots - x_n^2$ & $i_+=0,\ i_-=n$ \\ +неотрицательно определенной & $x_1^2 + \ldots + x_k^2,\ k \leqslant n$ & $i_+=k,\ i_-=0$ \\ +неположительно определенной & $-x_1^2 - \ldots - x_k^2,\ k \leqslant n$ & $i_+=0, i_-=k$ \\ +неопределенной & $x_1^2+\ldots+x_s^2-x_{s + 1}^2-\ldots-x_{s + t}^2,\ s,t\geqslant1$ & $i_+=s,\ i_-=t$ +\end{tabular} +\end{center} +\end{Def} + +\begin{Examples} $V = \R^2$. +\begin{enumerate} +\item $Q(x, y) = x^2 + y^2,\ Q > 0$; +\item $Q(x, y) = - x^2 - y^2,\ Q < 0$; +\item $Q(x, y) = x^2 - y^2$; +\item $Q(x, y) = x^2,\ Q \geqslant 0$; +\item $Q(x, y) = -x^2,\ Q \leqslant 0$. +\end{enumerate} +\end{Examples} + +\begin{Theorem}[Критерий Сильвестра] + $Q > 0$ тогда и только тогда, когда $\delta_i > 0$ для всех $i$. +\end{Theorem} +\begin{proof}\ \\ + $[\Leftarrow]$ Следует из теоремы Якоби. \\ + $[\Rightarrow]$ Докажем, чтo $\delta_i = \det(B_i) > 0$. Действительно, $B_i$ --- это матрица ограничения $Q\bigr|_{\langle e_1, \ldots, e_i\rangle}$. Оно так же будет строго положительным, следовательно, существует матрица $C_i \in M_n(\mathbb{R}),\\ \det(C_i)\neq 0$, такая, что $C_i^TBC_i = E$. Но тогда + $\det C^T_i\det B_i \det C_i = \det E = 1$. Следовательно, $\det B_i = \cfrac{1}{(\det C_i)^2} > 0$, что и требовалось. +\end{proof} +\begin{Theorem} + $Q < 0 \Leftrightarrow \begin{cases} + \delta_i < 0, & 2 \nmid i \\ + \delta_i > 0, & 2 \mid i + \end{cases}$ +\end{Theorem} +\begin{proof} + Применяя критерий Сильвестра для $B(Q, \mathbb{e}) = - B(-Q, \mathbb{e})$, получаем требуемое. +\end{proof} + +\section{Евклидово пространство. Длина вектора. Неравенство Коши-Буняковского. Угол между векторами.} + +\begin{Def} + Евклидово пространство --- это векторное пространство $\mathbb{E}$ над полем $\mathbb{R}$, на котором задана положительно определённая симметрическая билинейная функция $(\cdot, \cdot)$, которую мы будем называть скалярным произведением. +\end{Def} +\begin{Examples}\ +\begin{enumerate} +\item $\mathbb{R}^n,\ x = \begin{pmatrix}x_1\\ \vdots\\ x_n\end{pmatrix}$, $y = \begin{pmatrix}y_1\\ \vdots\\ y_n\end{pmatrix}, + (x,y) = \sum\limits_{i = 1}^n x_iy_i$. +\item $\E = C[0, 1]$, $(f, g) = \int_{0}^{1}f(x)g(x)dx$, $(f, f) = \int_{0}^{1}f^2(x)dx > 0$. +\end{enumerate} +\end{Examples} +\begin{Comment} + Важно отметить, что евклидово пространство можно определить только над полем $\mathbb{R}$. +\end{Comment} + +\begin{Def} + Пусть $x\in \mathbb{E}$. Тогда длиной вектора называют величину $|x| = \sqrt{(x,x)}$. +\end{Def} + +Очевидно, что $|x| \geqslant 0$, причем $|x| = 0$ тогда и только тогда, когда $x = 0$. + +\begin{Suggestion}[Неравенство Коши-Буняковского] + Пусть $x, y \in \E$. Тогда $|(x,y)| \leqslant |x||y|$, причём знак равенства возможен тогда и только тогда, когда $x$ и $y$ пропорциональны. +\end{Suggestion} +\begin{proof}\ + \begin{enumerate} + \item $x,y$ пропорциональны, т.е. $x = \lambda y$ для некоторого $\lambda$. Тогда: + \[ + |(x,y)| = |(x,\lambda x)| = \lambda|(x,x)| = |x|\lambda|x| = |x||y|. + \] + \item $x,y$ линейно независимы. Тогда они будут базисом своей линейной оболочки. Тогда матрица $B$ билинейной функции $(\cdot, \cdot)\bigr|_{\langle x, y\rangle}$ равна: + \begin{gather*} + B = \begin{pmatrix} + (x,x)& (x,y)\\ + (y,x)& (y,y) + \end{pmatrix} + \end{gather*} + Так как $\det B > 0$, то $(x,x)(y,y) - (x,y)^2 > 0$. Следовательно: + \begin{gather*} + |(x,y)|^2 < |x|^2|y|^2\\ + |(x,y)| < |x||y| + \end{gather*} + \end{enumerate} +\end{proof} + +\begin{Def} + Углом между векторами $x$ и $y$ называют такой $\alpha$, что $ \cos \alpha = \cfrac{(x,y)}{|x||y|}$. +\end{Def} + +\section{Матрица Грама системы векторов евклидова пространства. Свойства определителя матрицы Грама.} + +Рассмотрим систему векторов $(v_1, \ldots, v_k)$, где $v_i \in \E$. +\begin{Def} +Матрица Грама системы $v_1, \ldots, v_k$ это + $$G(v_1,\ldots, v_k) := (g_{ij}),\quad g_{ij} = (v_i,v_j).$$ +\end{Def} + +\begin{Suggestion}\ + \begin{enumerate} + \item $\det G(v_1, \ldots, v_k) \geqslant 0$ + \item $\det G(v_1, \ldots, v_k) = 0$ тогда и только тогда, когда $v_1, \ldots, v_k$ линейно зависимы. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item $v_1, \ldots, v_k$ линейно независимы. Следовательно, матрица $G(v_1, \ldots, v_k)$ является матрицей ограничения $(\cdot, \cdot)$ на $\langle v_1, \ldots, v_k\rangle$, базисом в котором является $(v_1, \ldots, v_k)$. А значит, $\det G(v_1, \ldots, v_k) > 0$. + \item $v_1, \ldots, v_k$ линейно зависимы. Значит, существуют коэффициенты $(\l_1, \ldots, \l_k) \neq (0, \ldots, 0)$ такие, что $\l_1v_1 + \ldots + \l_kv_k = 0$. Если обозначить матрицу Грама $G(v_1, \ldots, v_k)$ за $G$, то тогда + \begin{gather*} + \l_1 G_{(1)} + \ldots + \l_kG_{(k)} = \\ = + (\l_1v_1 + \ldots + \l_kv_k, v_1) + (\l_1v_1 + \ldots + \l_kv_k, v_2) + \ldots + (\l_1v_1 + \ldots + \l_kv_k, v_k) =\\= 0 + 0 + \ldots + 0 + \end{gather*} + То есть строки линейно зависимы и $\det G = 0$. + \end{enumerate} +\end{proof} + +\section{Ортогональное дополнение системы векторов евклидова пространства. Свойства ортогонального дополнения к подпространству. Ортогональная проекция вектора на подпространство и ортогональная составляющая вектора относительно подпространства.} + +Пусть $\mathbb{E}$ --- евклидово пространство, $\dim \E = n$. +\begin{Def} + Векторы $x,y$ называются ортогональными, если $(x,y)=0$. Обозначение: \\$x\perp y$. +\end{Def} + +\begin{Def} + Пусть $S \subseteq \mathbb{E}$ --- произвольное подпространство. Ортогональным дополнением к $S$ называется множество $S^{\perp} = \{x\in \mathbb{E}\; |\; (x,y) = 0\;\forall y \in S\}$. +\end{Def} + +\begin{Comment}\ + \begin{enumerate} + \item $S^\perp$ --- подпространство в $\E$. + \item $S^\perp = \langle S \rangle^\perp$. + \end{enumerate} +\end{Comment} + +\begin{Suggestion} +Пусть $S$ --- подпространство в $\E$. Тогда: + \begin{enumerate} + \item $\dim S^\perp = n - \dim S$; + \item $\mathbb{E} = S \oplus S^\perp$; + \item $(S^\perp)^\perp = S$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item Выделим в $S$ базис $(e_1, \ldots, e_k)$ и дополним его векторами $(e_{k+1}, \ldots, e_n)$ до базиса $\mathbb{E}$. Рассмотрим вектор $x \in \E$ и представим его в виде $x_1e_1 + \ldots + x_ne_n$. Если $x \in S^\perp$, то это то же самое, если $(x, e_i) = 0$ для $i = 1 \ldots k$. Итого: + \begin{gather*} + (x,e_i) = (e_1, e_i)x_1 + (e_2, e_i) x_2 + \ldots, (e_n, e_i) x_n= 0, \quad i = 1 \ldots k + \end{gather*} + Получим однородную СЛУ $G\begin{pmatrix} + x_1\\x_2\\ \vdots\\ x_n + \end{pmatrix} = 0$, где $G \in Mat_{k\times n}(\mathbb{R})$ и $g_{ij} = (e_i, e_j)$. Заметим, что $\rk G = k$, так как это часть матрицы Грама, и ее левый верхний $k\times k$ минор больше нуля. Следовательно, размерность пространства решений $\dim S^\perp = n - \rk G = n - \dim S$. + \item Из предыдущего пункта получаем, что $\dim S + \dim S^\perp = n$. Вместе с тем, поскольку $(x,x) = 0$ тогда и только тогда, когда $x = 0$, то $S \cap S^\perp = \{0\}$. Следовательно, $\mathbb{E} = S \oplus S^\perp$. + \item $S \subset (S^\perp)^\perp$ --- всегда. Вместе с тем, $\dim (S^\perp)^\perp = n - \dim S^\perp = n - (n - k) = k = \dim S$. И так как размерности совпадают, то $S = (S^\perp)^\perp$. +\end{enumerate} +\end{proof} + +$\E = S \oplus S^\perp$. Значит, для $x \in \mathbb{E}$ существует единственное представление его в виде $x = y + z$, где $y \in S,\; z \in S^\perp$. +\begin{Def} + Вектор $y$ называется ортогональной проекцией вектора $x$ на подпространство $S$. Обозначение: $\pr_S x$. \\ Вектор $z$ называется ортогональной составляющей вектора $x$ вдоль подпространства $S$. Обозначение: $\ort_S x$. +\end{Def} + + +\section{Ортогональный и ортонормированный базисы евклидова пространства. Описание всех ортонормированных базисов в термирнах одного и матриц перехода. Ортогональная матрица.} + +\begin{Def} + Базис $(e_1, \ldots, e_n)$ в $\mathbb{E}$ называется ортогональным, если $(e_i, e_j) = 0\; \forall i\neq j$. Это равносильно тому, что $G(e_1, \ldots, e_n)$ диагональна. \\Базис называется ортонормированным, если дополнительно $(e_i, e_i) = 1\; \forall i$. Это равносильно тому, что $G(e_1, \ldots, e_n) = E$. +\end{Def} +\begin{Comment} + Если $(e_1,\ldots, e_n)$ ортогональный базис, то $\left(\cfrac{e_1}{|e_1|}, \ldots, \cfrac{e_n}{|e_n|}\right)$ ортонормированный. +\end{Comment} +\begin{Theorem} + В любом конечномерном евклидовом пространстве существует ортонормированный базис. +\end{Theorem} +\begin{proof} + Следует из того, что всякую положительно определенную квадратичную форму можно привести к нормальному виду. +\end{proof} +Пусть $(e_1, \ldots, e_n)$ --- ортонормированный базис в $\E$. Пусть также есть ещё один базис $(e_1', \ldots, e_n')$, причём $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$. +\begin{Suggestion} + $(e_1', \ldots, e_n')$ --- ортонормированный тогда и только тогда, когда $C^TC = E$ или, что то же самое, $C^{-1} = C^T$. +\end{Suggestion} +\begin{proof} + Условие, что базис $(e_1', \ldots, e_n')$ является ортонормированным, равносильно тому, что $G(e_1', \ldots, e_n') = E$. С другой стороны, $G(e_1', \ldots, e_n') = C^TG(e_1, \ldots, e_n)C$, причем аналогично $G(e_1, \ldots, e_n) = E$. Откуда и следует, что $C^TC = E$. +\end{proof} +\begin{Def} + Матрица $C$ в таком случае называется ортогональной. +\end{Def} + +\begin{Properties}\ +\begin{enumerate} +\item $C^TC = E$, значит, $C^T = C^{-1}$, и тогда $CC^T = E$. Итого, получаем: +$$ +\sum\limits_{k = 1}^{n}c_{ki}c_{kj} = \delta_{ij} = \sum\limits_{k = 1}^{n}c_{ik}c_{jk} +$$ +Напомним, что $\delta_{ij}$ это символ Кронекера. +\item $\det C = \pm 1$. +\end{enumerate} +\end{Properties} + +\begin{Examples} + $C = \begin{pmatrix} + \cos \varphi& -\sin \varphi\\ + \sin \varphi& \cos \varphi + \end{pmatrix}$ --- матрица поворота на угол $\varphi$ в $\mathbb{R}^2$. +\end{Examples} + +\section{Интерпретация процесса ортогонализации в евклидовом пространстве в терминах проекций и ортогональных составляющих. Формула для ортогональной проекции вектора на подпространство в терминах его ортогонального базиса. Теорема Пифагора в Евклидовом пространстве.} + +Пусть $S \subseteq \mathbb{E}$ --- подпространство, $(e_1, \ldots, e_k)$ --- его ортогональный базис, $x \in \mathbb{E}$. + +Пусть есть базис $(e_1, \ldots, e_n)$ в $\mathbb{E}$. Процесс ортогонализации Грама-Шмидта даёт ортогональный базис $(f_1, \ldots, f_n)$, причем: +\begin{align*} + & f_1 = e_1\\ + & f_2 \in e_2 + \langle e_1 \rangle\\ + & \ldots\\ + & f_n \in e_n + \langle e_1, \ldots, e_{n - 1} \rangle +\end{align*} +Точно так же можно заметить, что $\langle f_1, \ldots, f_i \rangle = \langle e_1, \ldots, e_i\rangle$ для всех $i= 1, \ldots, n$. + +\begin{Suggestion} + $\pr_S x = \sum\limits_{i = 1}^{k}\cfrac{(x,e_i)}{(e_i, e_i)}e_i$. В частности, если базис ортонормированный, \\$\pr_S x = \sum\limits_{i = 1}^{k}(x,e_i)e_i$ +\end{Suggestion} +\begin{proof} +Представим вектор $x$ в виде суммы $x = \pr_Sx + \ort_Sx$. Тогда: +$$ +(x, e_i) = (\pr_S x, e_i) + \underbrace{(\ort_S x, e_i)}_{=0} = (\pr_S x, e_i) \quad i = 1, \ldots, k. +$$ +Вместе с тем, $\pr_S x = \sum\limits_{j = 1}^{k}\l_je_j$, следовательно, $(x, e_i) = \sum\limits_{j = 1}^k\l_j(e_j, e_i)$. +Но так как базис ортогональный, все слагаемые, кроме одного, занулятся, и останется только $(x, e_i) = \l_i(e_i, e_i)$. Откуда и следует, что $\l_i = \cfrac{(x, e_i)}{(e_i, e_i)}$. +\end{proof} + +\begin{Suggestion} + $f_i = \ort_{\langle e_1, \ldots, e_{i-1}\rangle} e_i$ для всех $i = 1, \ldots, n$. +\end{Suggestion} +\begin{proof} +Воспользовавшись равенством линейных оболочек, получаем, что \\$e_i \in f_i + \langle f_1, \ldots, f_{i-1}\rangle$. Следовательно, данный базисный вектор можно представить в виде $e_i = f_i + \lambda_1f_1 + \ldots + \lambda_{i -1} f_{i -1}$. И из того, что $f_i \perp \langle e_1, \ldots, e_{i -1} \rangle = \langle f_1, \ldots, f_{i - 1}\rangle$ как раз и получаем, что $f_i = \ort_{\langle e_1, \ldots, e_{i-1}\rangle} e_i$. +\end{proof} + +\begin{Examples} +Данное рассуждение проще понять, если представить себе частный случай для $\E = \R^3$. + +У нас зафиксированы векторы $e_1, e_2, e_3$, и мы их ортогонализируем. Для начала, $f_1 = e_1$. Вектор $f_2$ получается как проекция вектора $e_2$ на прямую, ортогональную $f_1$. А вектор $f_3$~--- как проекция $e_3$ на прямую, ортогональную плоскости, образованной векторами $f_1$ и $f_2$. Аналогично для пространств большей размерности. +\end{Examples} + +\begin{Theorem}[Пифагора] +Если $x, y \in \E$ и $x \perp y$, то $|x+y| = |x|^2 + |y|^2$. +\end{Theorem} + +\begin{proof} + $$|x + y|^2 = (x+y, x+y) = (x, x) + (y, y) + \underbrace{(x, y)}_{=0} + \underbrace{(y, x)}_{=0} = (x, x) + (y, y) = |x|^2 + |y|^2$$ +\end{proof} + +\section{Расстояние между векторами евклидова пространства. Неравенство треугольника. Теоремы о расстоянии от вектора до подпространства.} + +Рассмотрим векторы $x, y \in \E$. +\begin{Def} + Расстоянием между векторами $x$ и $y$ называется число $\rho(x,y) := |x-y|$. +\end{Def} + +\begin{Suggestion}[Неравенство треугольника] + $\rho(a,b) + \rho(b,c) \geqslant \rho(a,c)$ при $a, b, c \in \E$. +\end{Suggestion} + +\begin{proof} + Пусть $x = a-b,\; y = b - c$. Тогда $a-c = x +y$. Теперь достаточно доказать, что $|x| + |y| \geqslant |x + y|$. Для этого рассмотрим $|x + y|^2$. + \begin{gather*} + |x+y|^2 = (x, x) + 2(x, y) + (y, y) = |x|^2 + 2(x, y) + |y|^2 \leqslant |x|^2 + 2|x||y|+ |y|^2 = (|x| + |y|)^2 + \end{gather*} + Сравнивая начало и конец неравенства, получаем, что $|x+y| \leqslant |x| + |y|$. +\end{proof} +Пусть $P$ и $Q$ --- два произвольных подмножества $\mathbb{E}$. +\begin{Def} + Расстоянием между $P$ и $Q$ называют величину + $$ + \rho (P,Q) := \inf \{\rho(x,y) \mid x\in P,\ y\in Q\}. + $$ +\end{Def} +Пусть $x \in \mathbb{E}$ и $U \subseteq \mathbb{E}$ --- подпространство. +\begin{Theorem} + $\rho (x,U) = |\ort_U x|$, причём $\pr_U x$ --- единственный ближайший к $x$ вектор из $U$. +\end{Theorem} +\begin{proof} + Пусть $y = \pr_U x$ и $z = \ort_U x$. Пусть также $y' \in U\backslash \{0\}$, тогда: + \[ + \rho(x, y + y') = |x - y - y'| = |z - y'| = \sqrt{|z|^2 + \underbrace{|y'|^2}_{>0}} > |z| = \rho(x,y). + \] + Из того, что вектор $z$, которым мы огранили снизу, определяется однозначно, и следует, что существует единственный ближайший вектор к $x$ из $U$. +\end{proof} +Пусть $U \subseteq \mathbb{E}$ --- подпространство, $x \in \mathbb{E}$, $(e_1, \ldots, e_k)$ --- базис $U$. +\begin{Theorem} + $(\rho(x,U))^2 = \cfrac{\det G(e_1, \ldots, e_k, x)}{\det G(e_1, \ldots, e_k)}$ +\end{Theorem} +\begin{proof} + Разобьем на два случая: когда $x$ лежит в $U$ и когда не лежит. + \begin{enumerate} + \item $x \in U$. Тогда $\rho (x,U) = 0$. Но с другой стороны, $\det G(e_1, \ldots, e_k, x) = 0$, поскольку эти векторы линейно зависимы, и значит, равенство выполняется. + \item $x \notin U$. Тогда $\rho(x,U) = |\ort_U x| = |z|$. Ортогонализация Грама-Шмидта к $(e_1, \ldots, e_k, x)$ даст нам $(f_1, \ldots, f_k, z)$, причём $|z|^2 = (z,z) = \cfrac{\delta_{k+1}}{\delta_{k}} = \cfrac{\det G(e_1, \ldots, e_k, x)}{\det G(e_1, \ldots, e_k)}$. + \end{enumerate} +\end{proof} + +\section{n-мерный параллелепипед в евклидовом пространстве и его объём. Формулы для объёма n-мерного параллелепипеда.} + +Пусть $\E$ --- евклидово пространство. Вспомним, что такое расстояния в нем. + +Для векторов $x,\ y \in E$ расстояние это $\rho(x, y):= |x - y|$. + +Для подмножеств $P, Q \subseteq \E$ расстояние это $\rho(P, Q) := \inf\limits_{x \in P,\ y \in Q} \rho(x, y)$. + +Для подпространства $U \subseteq \E$ и вектора $x \in \E$ известны следующие вещи: +\begin{enumerate} +\item $\rho(x, U) = |\ort_Ux|$ +\item $\rho(x, U)^2 = \frac{\det G(e_1, \ldots, e_k, x)}{\det G(e_1, \ldots, e_k)}$, где $e_1, \ldots, e_k$ --- базис в $U$. +\end{enumerate} + +Рассмотрим теперь векторы $a_1, \ldots, a_n \in \E$, причем $n$ --- необязательно размерность $\E$. +\begin{Def} +$N$-мерным параллелепипедом, натянутым на векторы $a_1, \ldots, a_n$ называется подмножество +$$ +P(a_1, \ldots, a_n) := \left\{ x = \sum_{i = 1}^n x_ia_i \mid 0 \leqslant x_i \leqslant 1 \right\}. +$$ +\end{Def} + +\begin{Examples}\ +\begin{enumerate} +\item При $n = 2$ это обычный двухмерный параллелограмм. +\item При $n = 3$ это трехмерный параллелепипед. +\end{enumerate} +\end{Examples} + +\begin{Def} +Для параллелепипеда $P(a_1, \ldots, a_{n})$ основание это $P(a_1, \ldots, a_{n-1})$, а высота --- $h = \ort_{\langle a_1, \ldots, a_{n-1}\rangle}a_n$. +\end{Def} + +\begin{Def} +Объем $n$-мерного параллелепипеда $P(a_1, \ldots, a_{n})$ --- это число $\vol P(a_1, \ldots, a_{n})$, определяемое рекурсивно следующим образом: +\begin{align*} +n = 1 \quad& \vol P(a_1) = |a_1| \\ +n > 1 \quad& \vol P(a_1, \ldots, a_n) = \vol P(a_1, \ldots, a_{n-1})\cdot |h| +\end{align*} +\end{Def} + +\begin{Theorem} +$\vol P\vector{a}^2 = \det G\vector{a}$. +\end{Theorem} + +\begin{proof} +Докажем это утверждение по индукции. + +База: при $n = 1$ имеем $\vol P(a_1)^2 = |a_1|^2 = (a_1, a_1) = \det G(a_1)$. + +Теперь пусть утверждение доказано для всех меньших значений. Докажем для $n$. +\begin{gather*} +\vol P\vector{a}^2 = \vol P(a_1, \ldots, a_{n-1})^2 \cdot |h|^2 = +\det G(a_1, \ldots, a_{n-1}) \cdot |\ort_{\langle a_1, \ldots, a_{n-1} \rangle}a_n|^2 = \\ += \begin{cases} + 0 = \det G\vector{a}, & \text{если $a_1, \ldots a_{n-1}$ линейно зависимы} \\ + \det G(a_1, \ldots, a_{n-1})\frac{\det G(a_1, \ldots, a_n)}{\det G(a_1, \ldots, a_{n-1})} = \det G\vector{a}, & \text{если $a_1, \ldots, a_{n-1}$ линейно независимы} + \end{cases} +\end{gather*} +\end{proof} + +\begin{Consequence} +Объем параллелепипеда не зависит от выбора основания. +\end{Consequence} + +\begin{Theorem} +Пусть $\vector{e}$ --- ортогональный базис в $\E$, и $\vector{a} = \vector{e}A$ для некоторой матрицы $A \in M_n(\R)$. Тогда $\vol P\vector{a} = |\det A|$. +\end{Theorem} + +\begin{Comment} +Это --- геометрический смысл определителя! +\end{Comment} + +\begin{proof} +Вспомним, что матрица Грама ортогонального базиса равна единичной матрице: +$$ +G\vector{a} =A^TG\vector{e}A = A^TA. +$$ +Тогда для определителя справедливо следующее: +$$ +\det G\vector{a} = \det(A^TA) = (\det A)^2. +$$ +Осталось воспользоваться предыдущей теоремой: +$$ +\vol P\vector{a} = \sqrt{\det G \vector{a}} = |\det A|. +$$ +\end{proof} + +\section{Изоморфизм евклидовых пространств. Критерий изоморфности двух конечномерных евклидовых пространств.} + +Рассмотрим два евклидовых пространства, $\E$ и $\E'$. +\begin{Def} +Изоморфизм евклидовых пространств $\E$ и $\E'$ --- это биективное отображение $\phi: \E \rightarrow \E'$ такое, что +\begin{enumerate} +\item $\phi$ --- изоморфизм векторных пространств. +\item $(\phi(x), \phi(y))' = (x, y)$ для любых $x, y \in \E$. Здесь через $()'$ обозначается скалярное произведение в $\E'$. +\end{enumerate} +\end{Def} + +\begin{Def} +Евклидовы пространства $\E$ и $\E'$ называются изоморфными, если между ними существует изоморфизм. Обозначение: $\E \simeq \E'$. +\end{Def} + +\begin{Theorem} +Два конечномерных евклидовых пространства $\E$ и $\E'$ изоморфны тогда и только тогда, когда их размерности совпадают. +\end{Theorem} + +\begin{proof}\ \\ +$[\Rightarrow]$ Очевидно из первого пункта определения изоморфизма евклидовых пространств. + +$[\Leftarrow]$ Зафиксируем ортонормированные базисы $\e = \vector{e}$ в $\E$ и $\e' = \vector{e'}$ в $\E'$, где $n = \dim \E = \dim \E'$. Зададим изоморфизм $\phi: \E \rightarrow \E'$ \textit{векторных пространств} по формуле +$$ +\phi(e_i) = e_i'\quad \forall i = 1,\ldots, n. +$$ +Тогда имеем следующее (напомним, что $\delta_{ij}$ это символ Кронекера): +$$ +(\phi(e_i), \phi(e_j))' = (e_i', e_j')' = \delta_{ij} = (e_i, e_j). +$$ +Теперь рассмотрим векторы $x = \sum_{_i = 1}^{n}x_ie_i$ и $y = \sum_{j = 1}^{n}y_je_j$ и проверим второй пункт определения изоморфизма евклидовых пространств. Будем пользоваться билинейностью скалярного произведения. +\begin{gather*} +(\phi(x), \phi(y))' = \left(\phi\left(\sum_{i = 1}^{n}x_ie_i\right), \phi\left(\sum_{j = 1}^{n}y_je_j\right)\right)' = \left(\sum_{i = 1}^{n}x_i\phi(e_i), \sum_{j = 1}^{n}y_j\phi(e_j)\right)' = \\ += \sum_{i = 1}^{n}\sum_{j = 1}^{n}x_iy_j\phi(e_i, e_j)' = \sum_{i = 1}^{n}\sum_{j = 1}^{n}x_iy_j(e_i, e_j) = (x, y) +\end{gather*} +\end{proof} + +\section{Линейный оператор в евклидовом пространстве, сопряжённый к данному: определение, существование и единственность. Матрица сопряжённого оператора в произвольном и ортонормированном базисах.} + +Пусть $\E$ --- евклидово пространство, $\phi$ --- его линейный оператор. Тогда ему можно сопоставить две билинейные функции на $\E$: +\begin{gather*} +\beta_\phi(x, y) = (x, \phi(y)) \\ +\beta^T_\phi(x, y) = (\phi(x), y) +\end{gather*} +Введем базис $\e = \vector{e}$ в $\E$, матрицу Грама $G = G\vector{e}$, матрицу оператора $A_\phi \hm= A(\phi, \e)$, а также два вектора $x = \sum_{i = 1}^{n}x_ie_i$ и $y = \sum_{j = 1}^{n}y_je_j$. Тогда имеем следующее: +\begin{gather*} +\phi(x) = A_\phi\vvector{x} \qquad \phi(y) = A_\phi \vvector{y} \\ +\beta_\phi(x, y) = \vector{x} GA_\phi \vvector{y} \qquad +\beta^T_\phi(x, y) = \vector{x}A_\phi^TG\vvector{y} +\end{gather*} +Отсюда мы можем вывести матрицы данных билинейных форм: +\begin{gather*} +B(\beta_\phi, \e) = GA_\phi \\ +B(\beta^T_\phi, \e) = A^T_\phi G +\end{gather*} + +\begin{Comment} +Отображения $\phi \mapsto \beta_\phi$ и $\phi \mapsto \beta^T_\phi$ являются биекциями между $L(\E)$ и пространством всех билинейных форм на $\E$. +\end{Comment} + +\begin{Def} +Линейный оператор $\psi \in L(\E)$ называется сопряженным к $\phi$, если для всех векторов $x,\ y \in \E$ верно, что $(\psi(x), y)\hm = (x, \phi(y))$. Это также равносильно тому, что $\beta_\psi^T = \beta_\phi$. Обозначение: $\psi = \phi^*$. +\end{Def} + +\begin{Suggestion}\ +\begin{enumerate} +\item $\phi^*$ существует и единственен. +\item $A_{\phi^*} = G^{-1}A_\phi^TG$, где $A_{\phi^*} = A(\phi^*, \e)$, а все остальные обозначения прежние. В частности, если $\e$ --- ортонормированный базис, то $A_{\phi^*} = A_{\phi}^T$. +\end{enumerate} +\end{Suggestion} + +\begin{proof} +Снова обозначим $\phi^*$ как $\psi$. Мы уже знаем, что $B(\beta_\psi^T, \e) = A_\psi^TG$ и $B(\beta_\phi, \e) \hm= GA_\phi$. Мы хотим, чтобы эти две матрицы были равны. Транспонируем их и, воспользовавшись тем, что $G = G^T$, получаем: +$$ +GA_\psi = A_\phi^TG. +$$ +Выразив $A_\psi$, получаем, что такая матрица (и, соответственно, оператор) единственная: +$$A_\psi = G^{-1}A_\phi^TG.$$ +Существование же напрямую следует из того, что линейный оператор с матрицей $G^{-1}A_\phi^TG$ обладает нужными свойствами. +\end{proof} + +\section{Самосопряжённый линейный оператор в евклидовом пространстве: инвариантность ортогонального дополнения к инвариантному подпространству и существование собственного вектора.} + +\begin{Def} +Линейный оператор $\phi$ называется самосопряженным (симметрическим), если $\phi^* = \phi$. Это равносильно тому, что $(\phi(x), y) = (x, \phi(y)))$ для любых векторов $x,\ y \in \E$. +\end{Def} + +\begin{Comment} +В случае, когда $\e$ --- ортонормированный базис в $\E$ и $A_\phi = A(\phi, \e)$, то самосопряженность линейного оператора $\phi$ равносильно тому, что $A_\phi = A_\phi^T$. Отсюда и второе название таких операторов --- симметрические. +\end{Comment} + +Здесь важно, что мы работаем именно над евклидовым пространством, так как мы использовали скалярное произведение для проведения биекции с билинейными формами. + +\begin{Examples} +Пусть $U \subseteq \E$ --- подпространство. Отображение $\phi : x \mapsto \pr_Ux$ является самосопряженным. + +\begin{proof}\ \\ +\textbf{I способ (координатный).} + +Пусть $(e_1, \ldots, e_k)$ --- ортонормированный базис в $U$, а $(e_{k+1}, \ldots, e_n)$ --- ортонормированный базис в $U^T$. Тогда $\e = (e_1, \ldots, e_n)$ --- ортонормированный базис в $\E$. А значит, матрица $\phi$ будет иметь в таком базисе следующий вид: +$$ +A(\phi, \e) = \diag(\underbrace{1, \ldots, 1}_{k},\underbrace{0, \ldots, 0}_{n - k}) +$$ +При транспонировании диагональная матрица не меняется, следовательно, $A(\phi, \e)^T = A(\phi, \e)$. Что и означает, что $\phi = \phi^*$. + +\textbf{II способ (бескоординатный).} + +Проверим условие $(x, \phi(y)) = (\phi(x), y)$: +\begin{align*} +(\phi(x), y) =& (\pr_Ux, \pr_Uy + \ort_Uy) = (\pr_Ux, \pr_Uy) + \underbrace{(\pr_Ux, \ort_Uy)}_{=0} = \\ +=& (\pr_Ux, \pr_Uy) + \underbrace{(\ort_Ux, \pr_Uy)}_{=0} = (\pr_Ux + \ort_Ux, \ort_Uy) = (x, \phi(y)). +\end{align*} +\end{proof} +\end{Examples} + +Пусть $\mathbb{E}$ --- евклидово пространство, $\dim \mathbb{E} = n$, $\varphi \in L(\mathbb{E})$. Вспомним, что по определению сопряжённый линейный оператор $\phi^*$ это такой линейный оператор, для которого выполняется следующее: +$$ +(x,\;\varphi(y)) = (\varphi^*(x),\; y). +$$ + +Вспомним также, что самосопряженным называется такой оператор $\phi$, для которого $\phi^* = \phi$. + +\begin{Suggestion} + Пусть $\varphi$ --- самосопряженный линейный оператор в $\E$. Если $U \subseteq \mathbb{E}$ ---\\ $\phi$-инвариантное подпространство в $\E$, то $U^\perp$ тоже $\varphi$-инвариантно. +\end{Suggestion} + +Поясним, что означает этот факт. + +Пусть $\dim U = m$ и $U = \langle e_1, \ldots, e_m \rangle$. Так как $\E = U \oplus U^\perp$, то $\dim U^\perp = n - m$ и \\$U^\perp = \langle e_{m+1}, \ldots, e_n\rangle$, где $\e = (e_1, \ldots, e_n)$ --- базис $\E$. + +Тогда матрица $\phi$ в базисе $\e$ имеет следующий блочный вид: +$$ +\begin{pmatrix}A & B \\ C & D\end{pmatrix}, \quad A \in M_m,\ D \in M_{n-m}. +$$ +Когда $U$ --- $\phi$-инвариантно, то есть $\phi(U) \subseteq U$, эта матрица принимает вид $\begin{pmatrix}A & B \\ 0 & D\end{pmatrix}$, так как базисные векторы $e_1,\ldots e_m$ переходят в себя, не затрагивая векторы $e_{m+1}, \ldots, e_n$. И мы хотим доказать, что $U^\perp$ тоже является $\phi$-инвариантным подпространством, то есть блок $B$ также равен нулю, то есть матрица $\phi$ в базисе $\e$ имеет вид $\begin{pmatrix}A & 0 \\ 0 & D\end{pmatrix}$. + +\begin{proof} + Известно, что $\phi = \phi^*$ и $\phi(U) \subseteq U$. + Мы хотим, чтобы $\varphi(U^\perp) \subseteq U^\perp$. Для этого нам достаточно показать, что $(x, \phi(y)) = 0$ для любых векторов $x \in U$ и $y \in U^\perp$. + \[ + (x,\varphi(y)) = (\varphi^*(x), y) = (\underbrace{\varphi(x)}_{\in U}, \underbrace{y}_{\in U^\perp}) = 0 + \] +\end{proof} + +\begin{Suggestion} + У самосопряжённого оператора $\varphi$ есть собственный вектор над $\mathbb{R}$. +\end{Suggestion} + +\begin{proof} + Ранее в курсе мы уже доказывали, что у $\phi$ существует одномерное или двумерное $\phi$-инвариантное подпространство. Рассмотрим соответствующие случаи. + +\begin{enumerate} + \item Если существует одномерное $\phi$-инвариантное подпространство, то его порождающий вектор является собственным. + + \item Пусть $U \subseteq \mathbb{E}$ --- двумерное $\phi$-инвариантное подпространство и $\mathbb{e} = (e_1, e_2)$ --- его ортонормированный базис. Пусть $\psi \in L(U)$ --- ограничение $\varphi$ на $U$. В прошлый раз мы уже доказывали, что матрица $\psi$ имеет симметрический вид, то есть $A(\psi, \mathbb{e}) = \begin{pmatrix} + a& b\\ + b& c + \end{pmatrix}$. + Рассмотрим его характеристический многочлен: + \begin{gather*} + \chi_\psi(t) = (-1)^2\begin{vmatrix} + a-t& b\\ + b& c-t + \end{vmatrix} = t^2 - (a + c)t + ac - b^2 = 0;\\ + D = (a - c)^2 + 4b^2 \geqslant 0. + \end{gather*} + Так как дискриминант неотрицательный, то у $\chi_\psi(t)$ есть хотя бы один корень. Следовательно, у $\psi$ есть собственный вектор $v$. Но $\psi$ --- ограничение $\phi$, так что вектор $v$ тоже является для него собственным. +\end{enumerate} + +\end{proof} + +\section{Самосопряжённый линейный оператор в евклидовом пространстве: существование базиса из собственных векторов, ортогональность собственных подпространств, отвечающих различным собственным значениям. Приведение квадратичной формы к главным осям.} + +\begin{Theorem} + У всякого самосопряжённого линейного оператора есть ортонормированный базис из собственных векторов. В частности, $\varphi$ диагонализуем над $\mathbb{R}$ и его характеристический многочлен разлагается в произведение линейных сомножителей. +\end{Theorem} + +\begin{Consequence} + Всякая симметричная матрица над $\mathbb{R}$ подобна диагональной. +\end{Consequence} + +\begin{proof} + Докажем индукцией по $n$. + + Для $n = 1$ всё очевидно. Если $n > 1$, то у $\varphi$ есть собственный вектор $v$. Положим $e_1 = \cfrac{v}{|v|}$ и $U = \langle e_1\rangle^\perp$. Тогда $\dim U = n - 1$, причем $U$ --- $\varphi$-инвариантное подпространство (см. предыдущее предложение). По предположеню индукции в $U$ есть ортонормированный базис из собственных векторов $(e_2,\ldots, e_n)$. Тогда $(e_1,\ldots, e_n)$ --- искомый базис. +\end{proof} + +\begin{Consequence} + Пусть $\varphi$ --- самосопряженный линейный оператор, и $\lambda, \mu$ --- его собственные значения. Тогда $V_\lambda(\varphi)\perp V_\mu(\varphi)$ при $\lambda \neq \mu$. +\end{Consequence} + +\begin{proof}\ + \begin{enumerate} + \item \underline{Координатный способ.} Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- ортонормированный базис из собственных векторов, где $\varphi(e_i) = \lambda_ie_i$. Тогда для произвольного вектора $x = x_1e_1 + \ldots + x_ne_n$ из $V$ верно, что $\varphi(x) = x_1\lambda_1 e_1 + \ldots + x_n \lambda_n e_n$. + + Несложно понять, что если $x \in V_\l(\phi)$, то есть $\phi(x) = \l x$, то тогда $x$ принадлежит линейной оболочке тех базисных векторов, чье собственное значение равно $\l$: $x \in \langle e_i \mid \l_i = \l \rangle$. А так как базисные векторы попарно ортогональны в силу свойств выбранного базиса, то как раз получаем, что $V_\l(\phi) \perp V_\mu(\phi)$, если $\l \neq \mu$. + \item \underline{Бескоординатный способ.} Возьмем произвольные векторы $x \in V_\l(\phi)$ и $y \in V_\mu(\phi)$. Тогда: + $$ + \lambda(x,y) = (\lambda x, y) = (\varphi(x), y) = (x, \varphi(y)) = (x, \mu y) = \mu (x, y). + $$ + А поскольку $\lambda \neq \mu$, то $(x,y) = 0$. + \end{enumerate} +\end{proof} + +\begin{Consequence}[Приведение квадратичной формы к главным осям] + Для любой квадратичной формы $Q$ над $\mathbb{E}$ существует ортонормированный базис, в котором $Q$ имеет канонический вид. + $$ + Q(x_1, \ldots, x_n) = \lambda_1 x_1^2 + \ldots + \lambda_n x_n^2. + $$ + Причем числа $\lambda_1, \ldots, \lambda_n$ определены однозначно с точностью до перестановки. +\end{Consequence} + +\begin{proof} + Существует единственный самосопряжённый линейный оператор $\phi$ в $\mathbb{E}$ такой, что $Q(v) = (v, \varphi(v))$. Если $\mathbb{e}$ --- ортонормированный базис, то матрица $Q$ в базисе $\mathbb{e}$ будет равна матрице $\varphi$ в базисе $\mathbb{e}$. Числа $\lambda_1, \ldots, \lambda_n$ являются собственными значениями $\varphi$. +\end{proof} + +\begin{Consequence} + Пусть $A\in M_n(\mathbb{R}), A = A^T$. Тогда существует ортогональная матрица $C$ такая, что + $$ + C^TAC = C^{-1} AC = D = \mathrm{diag}(\lambda_1, \ldots, \lambda_n). + $$ +\end{Consequence} + +\section{Ортогональный линейный оператор в евклидовом пространстве: определение, пять эквивалентных условий.} + +\begin{Def} + Линейный оператор $\varphi \in L(\mathbb{E})$ называется ортогональным, если + $$ + (\varphi(x), \varphi(y)) = (x,y), \quad \forall x, y \in \E. + $$ + Другими словами, $\varphi$ сохраняет скалярное произведение, осуществляет изоморфизм $\E$ на себя. +\end{Def} + +\begin{Suggestion} +Пусть $\phi$ --- линейный оператор в $\E$. Тогда следующие условия эквивалентны: +\begin{enumerate} +\item $\phi$ --- ортогональный линейный оператор; +\item $|\phi(x)| = |x|$ для всех $x \in \E$, то есть $\phi$ сохраняет длины; +\item существует $\phi^{-1}$, причем $\phi^{-1} = \phi^*$, то есть $\phi \cdot \phi^* = \phi^*\cdot \phi = \id$; +\item если $\e$ --- ортонормированный базис, то $A(\phi, \e)$ --- ортогональная матрица; +\item если $(e_1, \ldots, e_n)$ --- ортонормированный базис, то $(\phi(e_1), \ldots, \phi(e_n))$ --- тоже ортонормированный базис. +\end{enumerate} +\end{Suggestion} + +\begin{proof} +Везде здесь $x, y \in \E$. +\begin{itemize}[align=left] +\item[$(1) \Rightarrow (2)$] +$$ +|\phi(x)| = \sqrt{(\phi(x), \phi(x))} = \sqrt{(x, x)} = |x| +$$ +\item[$(2) \Rightarrow (1)$] Используем поляризацию (см. лекция 26). +$$ +(\phi(x), \phi(y) = \frac{1}{2}(|\phi(x + y)|^2 - |\phi(x)|^2 - |\phi(y)|^2) = \frac{1}{2}(|x + y|^2 - |x|^2 - |y|^2) = (x, y) +$$ +\item[$(1)\&(2) \Rightarrow (3)$] Найдем ядро $\phi$: +\begin{gather*} +\phi(x) = 0 \quad \Rightarrow \quad |\phi(x)| = 0 \quad \Rightarrow \quad |x| = 0 \quad \Rightarrow \quad x = 0 +\end{gather*} +Итого, $\Ker \phi = \{0\}$. Значит, существует $\phi^{-1}$. Теперь докажем, что $\phi^{-1} = \phi^*$: +\begin{gather*} +(\phi^{-1}(x), y) = (\phi(\phi^{-1}(x)), \phi(y)) = (x, \phi(y)) +\end{gather*} +Получили, что $\phi^{-1}$ является сопряженным к $\phi$ по определению. +\item[$(3) \Rightarrow (1)$] +$$ +(\phi(x), \phi(y)) = (\phi^*(\phi(x)), y) = (x, y) +$$ +\item[$(4) \Leftrightarrow (5)$] Пусть $\e = (e_1, \ldots, e_n)$ --- ортонормированный базис. Тогда верно, что +$$ +(\phi(e_1), \ldots, \phi(e_n)) = (e_1, \ldots, e_n) \cdot C, \quad C = A(\phi, \e) +$$ +Матрица $C$ является ортогональной тогда и только тогда, когда $(\phi(e_1), \ldots, \phi(e_n))$ --- ортонормированный базис. +\item[$(3) \Leftrightarrow (4)$] Пусть $\e$ --- ортонормированный базис, $C = A(\phi, \e)$. Тогда $A(\phi^*, \e) = C^T$ и условие, что $\phi\cdot\phi^* = id$ равносильно тому, что $C\cdot C^T = E$, то есть $C$ --- ортогональная матрица. +\end{itemize} +\end{proof} + + +\section{Классификация ортогональных линейных операторов в одномерном и двумерном евклидовых пространствах.} + +Пусть $\E$ --- евклидово пространство, $\e$ --- его базис, $\phi$ --- его ортогональный линейный оператор, $A$ --- матрица $\phi$ в базисе $\e$. + +Если $\dim \E = 1$, то $\phi = \pm \id$. + +Если $\dim \E = 2$, то возможны два случая: +\begin{enumerate} +\item $\phi$ это поворот пространства на угол $\alpha$, $A = \begin{pmatrix} +\cos\alpha & -\sin\alpha \\ +\sin\alpha & \cos\alpha +\end{pmatrix}$; +\item $\phi$ это отражение относительно некоторой прямой, $A = \begin{pmatrix} +1 & 0 \\ +0 & -1 +\end{pmatrix}$. +\end{enumerate} + +\section{Ортогональный линейный оператор в евклидовом пространстве: инвариантность относительно ортогонального дополнения к инвариантному подпространству, теорема о каноническом виде. Классификация ортогональных линейных операторов в трёхмерном евклидовом пространстве.} + +\begin{Suggestion} + Пусть $\varphi$ --- ортогональный линейный оператор в $\E$. Если $U \subseteq \mathbb{E}$ ---\\ $\phi$-инвариантное подпространство в $\E$, то $U^\perp$ тоже $\varphi$-инвариантно. +\end{Suggestion} + +\begin{proof} +Рассмотрим $\psi$ --- ограничение $\phi$ на $U$. Оно, очевидно, тоже сохраняет длины, то есть также является ортогональным оператором. Следовательно, существует $\psi^{-1}$. + +Достаточно показать, что $(x, \phi(y)) = 0$ для любых векторов $x \in U$ и $y \in U^\perp$. +\begin{gather*} +(x, \phi(y)) = (\psi(\psi^{-1}(x)), \phi(y)) = (\phi(\psi^{-1}(x)), \phi(y)) = (\underbrace{\psi^{-1}(x)}_{\in U}, \underbrace{y}_{\in U^\perp}) = 0 +\end{gather*} +\end{proof} + +Пусть $\Pi(\alpha) = \begin{pmatrix} +\cos\alpha & -\sin\alpha \\ +\sin\alpha & \cos\alpha +\end{pmatrix}$. + +\begin{Theorem} +Пусть $\phi$ --- ортогональный линейный оператор в $\E$. Тогда существует ортонормированный базис $\e$ такой, что матрица $A(\phi, \e)$ имеет следующий блочно-диагональный вид: +$$ +\begin{pmatrix} +\Pi(\alpha_1)\\ +&\ddots \\ +&&\Pi(\alpha_k)\\ +&&&-1\\ +&&&&\ddots\\ +&&&&&-1\\ +&&&&&& 1\\ +&&&&&&& \ddots \\ +&&&&&&&& 1 +\end{pmatrix}, +$$ +где $\Pi(\alpha_i) = \begin{pmatrix} +\cos\alpha_i & -\sin\alpha_i \\ +\sin\alpha_i & \cos\alpha_i +\end{pmatrix}$ --- матрица поворота на угол $\alpha_i$. Этот вид называется каноническим. +\end{Theorem} + +\begin{proof} + +Докажем индукцией по $n$ -- размерность матрицы. + +\begin{itemize} + \item $n = 1$ и $n = 2$ -- рассмотрены в предыдущем билете. + + \item $n > 2$. Тогда, как было доказано ранее, существует одномерное или двумерное $\phi$-инвариантное подпространство $U \subseteq E$. Разберём оба случая: + \begin{enumerate} + \item $\dim{U} = 1$.\\ $\exists\ e_1 \in U,\ |e_1| = 1$. Так как подпространство $\phi$-инвариантно, то $\phi(e_1) = \begin{cases}e_1 \\ -e_1 \end{cases}$. + \item $\dim{U} = 2$.\\ Тогда существует ортонормированный базис $\e = \langle e_1,\ e_2 \rangle$, такой, что $A(\phi_U,\ \e) = \Pi(\alpha)$, либо $A(\phi_U,\ \e) = \begin{pmatrix} 1 & 0 \\ 0 & -1\end{pmatrix}$, где $\phi_U$ -- ограничение оператора $\phi$ на подпространство $U$. + \end{enumerate} + + Как было доказано ранее, $U^\perp$ тоже $\varphi$-инвариантно. Но тогда, по предположению индукции, в $U^\perp$ существует ортонормированный базис $\mathbb{f}$ такой, что $A(\phi_{U^\perp},\ \mathbb{f})$ имеет канонический вид. + + Но тогда $A(\phi,\ \e \cup \mathbb{f})$ имеет требуемый вид с точностью до перестановки блоков. +\end{itemize} +\end{proof} + + +\textbf{Классификация ортогональных линейных операторов в трехмерного евклидовом пространстве.} + +Пусть $\E$ --- евклидово пространство, $\dim \E = 3$, $\phi$ --- его ортогональный линейный оператор, $A(\phi, \e)$ --- матрица $\phi$ в некотором базисе $\e$. + +\begin{Suggestion} + Возможны два случая: + + \begin{enumerate} + \item $\phi$ это поворот на угол $\alpha$ вокруг оси $\langle e_3 \rangle$, где $\e = (e_1, e_2, e_3)$ --- некоторый ортонормированный базис, $A(\phi, \e) = \begin{pmatrix} + \Pi(\alpha) & 0 \\ + 0 & 1 + \end{pmatrix}$; + \item $\phi$ это <<зеркальный поворот>>, то есть поворот на угол $\alpha$ вокруг прямой $e_3$ и зеркальное отражение относительно $\langle e_1, e_2\rangle = \langle e_3\rangle^\perp$, где $\e = (e_1, e_2, e_3)$ --- некоторый ортонормированный базис, $A(\phi, \e) = \begin{pmatrix} + \Pi(\alpha) & 0 \\ + 0 & -1 + \end{pmatrix}$. +\end{enumerate} +\end{Suggestion} + +\begin{proof} + По \textit{Теореме о каноническом виде ортогонального оператора} сразу же получаем либо первый, либо второй вид. +\end{proof} + +\end{document} diff --git a/linear-algebra/linear-algebra_15_[11.01.2016].pdf b/linear-algebra/linear-algebra_15_[11.01.2016].pdf new file mode 100644 index 0000000..c048070 Binary files /dev/null and b/linear-algebra/linear-algebra_15_[11.01.2016].pdf differ diff --git a/linear-algebra/linear-algebra_16_[18.01.2016].pdf b/linear-algebra/linear-algebra_16_[18.01.2016].pdf new file mode 100644 index 0000000..088af2d Binary files /dev/null and b/linear-algebra/linear-algebra_16_[18.01.2016].pdf differ diff --git a/linear-algebra/linear-algebra_17_[25.01.2016].pdf b/linear-algebra/linear-algebra_17_[25.01.2016].pdf new file mode 100644 index 0000000..6554ff5 Binary files /dev/null and b/linear-algebra/linear-algebra_17_[25.01.2016].pdf differ diff --git a/linear-algebra/linear-algebra_18_[29.01.2016].pdf b/linear-algebra/linear-algebra_18_[29.01.2016].pdf new file mode 100644 index 0000000..3c5259e Binary files /dev/null and b/linear-algebra/linear-algebra_18_[29.01.2016].pdf differ diff --git a/linear-algebra/linear-algebra_19_[01.02.2016].pdf b/linear-algebra/linear-algebra_19_[01.02.2016].pdf new file mode 100644 index 0000000..8b627dc Binary files /dev/null and b/linear-algebra/linear-algebra_19_[01.02.2016].pdf differ diff --git a/linear-algebra/linear-algebra_20_[08.02.2016].pdf b/linear-algebra/linear-algebra_20_[08.02.2016].pdf new file mode 100644 index 0000000..298facd Binary files /dev/null and b/linear-algebra/linear-algebra_20_[08.02.2016].pdf differ diff --git a/linear-algebra/linear-algebra_21_[15.02.2016].pdf b/linear-algebra/linear-algebra_21_[15.02.2016].pdf new file mode 100644 index 0000000..55c532f Binary files /dev/null and b/linear-algebra/linear-algebra_21_[15.02.2016].pdf differ diff --git a/linear-algebra/linear-algebra_22_[22.02.2016].pdf b/linear-algebra/linear-algebra_22_[22.02.2016].pdf new file mode 100644 index 0000000..4a80b02 Binary files /dev/null and b/linear-algebra/linear-algebra_22_[22.02.2016].pdf differ diff --git a/linear-algebra/linear-algebra_23_[29.02.2016].pdf b/linear-algebra/linear-algebra_23_[29.02.2016].pdf new file mode 100644 index 0000000..7375062 Binary files /dev/null and b/linear-algebra/linear-algebra_23_[29.02.2016].pdf differ diff --git a/linear-algebra/linear-algebra_24_[14.03.2016].pdf b/linear-algebra/linear-algebra_24_[14.03.2016].pdf new file mode 100644 index 0000000..1d57c07 Binary files /dev/null and b/linear-algebra/linear-algebra_24_[14.03.2016].pdf differ diff --git a/linear-algebra/linear-algebra_25_[21.03.2016].pdf b/linear-algebra/linear-algebra_25_[21.03.2016].pdf new file mode 100644 index 0000000..0c15c56 Binary files /dev/null and b/linear-algebra/linear-algebra_25_[21.03.2016].pdf differ diff --git a/linear-algebra/linear-algebra_26_[06.04.2016].pdf b/linear-algebra/linear-algebra_26_[06.04.2016].pdf new file mode 100644 index 0000000..751c8ed Binary files /dev/null and b/linear-algebra/linear-algebra_26_[06.04.2016].pdf differ diff --git a/linear-algebra/linear-algebra_27_[13.04.2016].pdf b/linear-algebra/linear-algebra_27_[13.04.2016].pdf new file mode 100644 index 0000000..32b1c77 Binary files /dev/null and b/linear-algebra/linear-algebra_27_[13.04.2016].pdf differ diff --git a/linear-algebra/linear-algebra_28_[20.04.2016].pdf b/linear-algebra/linear-algebra_28_[20.04.2016].pdf new file mode 100644 index 0000000..72071df Binary files /dev/null and b/linear-algebra/linear-algebra_28_[20.04.2016].pdf differ diff --git a/linear-algebra/linear-algebra_29_[27.04.2016].pdf b/linear-algebra/linear-algebra_29_[27.04.2016].pdf new file mode 100644 index 0000000..b12ee77 Binary files /dev/null and b/linear-algebra/linear-algebra_29_[27.04.2016].pdf differ diff --git a/linear-algebra/linear-algebra_30_[11.05.2016].pdf b/linear-algebra/linear-algebra_30_[11.05.2016].pdf new file mode 100644 index 0000000..4b7a409 Binary files /dev/null and b/linear-algebra/linear-algebra_30_[11.05.2016].pdf differ diff --git a/linear-algebra/linear-algebra_31_[17.05.2016].pdf b/linear-algebra/linear-algebra_31_[17.05.2016].pdf new file mode 100644 index 0000000..1c8f91c Binary files /dev/null and b/linear-algebra/linear-algebra_31_[17.05.2016].pdf differ diff --git a/linear-algebra/linear-algebra_all_lectures.pdf b/linear-algebra/linear-algebra_all_lectures.pdf new file mode 100644 index 0000000..bbdacb9 Binary files /dev/null and b/linear-algebra/linear-algebra_all_lectures.pdf differ diff --git a/linear-algebra/tex/compile.py b/linear-algebra/tex/compile.py new file mode 100644 index 0000000..a4770b5 --- /dev/null +++ b/linear-algebra/tex/compile.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# Change coding to UTF-8 + +# Import section +import os +import subprocess +import re + +# Creating temp file with all lectures +with open('temp.tex', 'w', encoding="utf8") as temp: + # Adding header + with open('header.tex', 'r', encoding="utf8") as header: + temp.write(header.read()) + + # Adding necessary lines (beginning of document, title and table of contents) + temp.write('\n\\begin{document}\n\n') + temp.write('\\maketitle\n\n') + temp.write('\\tableofcontents\n\n') + + # Collecting text from separate lecture files + lectures = [] + + for elem in os.listdir('./'): + if elem.startswith('linear-algebra') and elem.endswith('.tex'): + lectures.append(elem) + lectures.sort() + + # Adding it to the temp file + for lecture_name in lectures: + with open(lecture_name, 'r', encoding='utf8') as lecture: + temp.write(r'\newpage') + temp_lines = lecture.readlines() + for line in temp_lines[3:-1]: + temp_line = line.replace('section*', 'section') + temp.write(temp_line) + # Adding the final line + temp.write(r'\end{document}') + +# In order to create table of contents, I have to compile it twice. +for _ in range(2): + proc = subprocess.Popen(['pdflatex', 'temp.tex']) + proc.communicate() + +# Saving the file +os.chdir('..') +for file in os.listdir('./'): + if file == 'linear-algebra_all_lectures.pdf': + os.remove(os.path.join('./', file)) +os.rename('./tex/temp.pdf', 'linear-algebra_all_lectures.pdf') + +for elem in os.listdir('./tex/'): + if elem.startswith('linear-algebra') and elem.endswith('.pdf'): + if elem in os.listdir('./'): + os.remove(os.path.join('./', elem)) + os.rename('./tex/'+elem, elem) +os.chdir('tex') + +# Removing the litter +for file in os.listdir('./'): + if not (file.endswith('.tex') or file.endswith('.py')): + os.remove(os.path.join('./', file)) +os.remove('./temp.tex') diff --git a/linear-algebra/tex/header.tex b/linear-algebra/tex/header.tex new file mode 100644 index 0000000..c3a2203 --- /dev/null +++ b/linear-algebra/tex/header.tex @@ -0,0 +1,119 @@ +\documentclass[a4paper,12pt]{article} + +%% Работа с русским языком +\usepackage{cmap} % поиск в PDF +\usepackage{mathtext} % русские буквы в формулах +\usepackage[T2A]{fontenc} % кодировка +\usepackage[utf8]{inputenc} % кодировка исходного текста +\usepackage[english,russian]{babel} % локализация и переносы + +%% Отступы между абзацами и в начале абзаца +\setlength{\parindent}{0pt} +\setlength{\parskip}{\medskipamount} + +%% Изменяем размер полей +\usepackage[top=0.5in, bottom=0.75in, left=0.625in, right=0.625in]{geometry} + +%% Графика +\usepackage[pdftex]{graphicx} +\graphicspath{{images/}} + +%% Различные пакеты для работы с математикой +\usepackage{mathtools} % Тот же amsmath, только с некоторыми поправками + +\usepackage{amssymb} % Математические символы +\usepackage{amsthm} % Пакет для написания теорем +\usepackage{amstext} +\usepackage{array} +\usepackage{amsfonts} +\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление +\usepackage{bbm} % Для красивого (!) \mathbb с буквами и цифрами +\usepackage{enumitem} % Для выравнивания itemise (\begin{itemize}[align=left]) + +% Номера формул +\mathtoolsset{showonlyrefs=true} % Показывать номера только у тех формул, на которые есть \eqref{} в тексте. + +% Ссылки +\usepackage[colorlinks=true, urlcolor=blue]{hyperref} + +% Шрифты +\usepackage{euscript} % Шрифт Евклид +\usepackage{mathrsfs} % Красивый матшрифт + +% Свои команды\textbf{} +\DeclareMathOperator{\sgn}{\mathop{sgn}} + +% Перенос знаков в формулах (по Львовскому) +\newcommand*{\hm}[1]{#1\nobreak\discretionary{} +{\hbox{$\mathsurround=0pt #1$}}{}} + +% Графики +\usepackage{tikz} +\usepackage{pgfplots} +%\pgfplotsset{compat=1.12} + +% Изменим формат \section и \subsection: +\usepackage{titlesec} +\titleformat{\section} +{\vspace{1cm}\centering\LARGE\bfseries} % Стиль заголовка +{} % префикс +{0pt} % Расстояние между префиксом и заголовком +{} % Как отображается префикс +\titleformat{\subsection} % Аналогично для \subsection +{\Large\bfseries} +{} +{0pt} +{} + +% Информация об авторах +\author{Группа лектория ФКН ПМИ 2015-2016 \\ + Анастасия Иовлева \\ + Ксюша Закирова \\ + Руслан Хайдуров} +\title{Лекции по предмету \\ + \textbf{Линейная алгебра и геометрия}} +\date{2016 год} + +\newtheorem*{Def}{Определение} +\newtheorem*{Lemma}{Лемма} +\newtheorem*{Suggestion}{Предложение} +\newtheorem*{Examples}{Пример} +\newtheorem*{Comment}{Замечание} +\newtheorem*{Consequence}{Следствие} +\newtheorem*{Theorem}{Теорема} +\newtheorem*{Statement}{Утверждение} +\newtheorem*{Task}{Упражнение} +\newtheorem*{Designation}{Обозначение} +\newtheorem*{Generalization}{Обобщение} +\newtheorem*{Thedream}{Предел мечтаний} +\newtheorem*{Properties}{Свойства} + +\renewcommand{\mathbb}{\mathbbm} +\renewcommand{\Re}{\mathrm{Re\:}} +\renewcommand{\Im}{\mathrm{Im\:}} +\newcommand{\Arg}{\mathrm{Arg\:}} +\renewcommand{\arg}{\mathrm{arg\:}} +\newcommand{\Mat}{\mathrm{Mat}} +\newcommand{\id}{\mathrm{id}} +\newcommand{\isom}{\xrightarrow{\sim}} +\newcommand{\leftisom}{\xleftarrow{\sim}} +\newcommand{\Hom}{\mathrm{Hom}} +\newcommand{\Ker}{\mathrm{Ker}\:} +\newcommand{\rk}{\mathrm{rk}\:} +\newcommand{\diag}{\mathrm{diag}} +\newcommand{\ort}{\mathrm{ort}} +\newcommand{\pr}{\mathrm{pr}} +\newcommand{\vol}{\mathrm{vol\:}} +\def\limref#1#2{{#1}\negmedspace\mid_{#2}} +\newcommand{\eps}{\varepsilon} + +\renewcommand{\epsilon}{\varepsilon} +\renewcommand{\phi}{\varphi} +\newcommand{\e}{\mathbb{e}} +\renewcommand{\l}{\lambda} +\renewcommand{\C}{\mathbb{C}} +\newcommand{\R}{\mathbb{R}} +\newcommand{\E}{\mathbb{E}} + +\newcommand{\vvector}[1]{\begin{pmatrix}{#1}_1 \\\vdots\\{#1}_n\end{pmatrix}} +\renewcommand{\vector}[1]{({#1}_1, \ldots, {#1}_n)} \ No newline at end of file diff --git a/linear-algebra/tex/linear-algebra_15_[11.01.2016].tex b/linear-algebra/tex/linear-algebra_15_[11.01.2016].tex new file mode 100644 index 0000000..600c9c5 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_15_[11.01.2016].tex @@ -0,0 +1,238 @@ +\input{header.tex} + +\begin{document} +\section{Лекция 15 от 11.01.2016} +\subsection{Скаляры. Поля} +Для начала вспомним, что такое \textit{векторное пространство} — это множество, на котором введены операции сложения, умножения на скаляр и в котором будут выполнятся восемь аксиом (см. 1 семестр). Но что такое скаляр? + +\begin{Def} +Скаляры — это элементы некоторого фиксированного поля. +\end{Def} + +\begin{Def} +Полем называется множество $F$, на котором заданы две операции — «сложение» $(+)$ и «умножение» $(\cdot)$, +\[ +F \times F \rightarrow F \Rightarrow +\begin{aligned} ++\!:\:& (a, b) \mapsto a + b \\ +\cdot:\:& (a, b) \mapsto a \cdot b +\end{aligned} +\] +удовлетворяющие следующим свойствам («аксиомам поля»): $\forall a, b, c \in F$ +\begin{enumerate} +\item $a + b = b + a$ (коммутативность по сложению); +\item $(a + b) + c = a + (b + c)$ (ассоциативность по сложению); +\item $\exists\: 0 \in F \colon 0 + a = a + 0 = a$ (существование нулевого элемента); +\item $\exists\: {-a} \in F\colon a + (-a) = (-a) + a = 0$ (существование противоположного элемента); +\item $a(b + c) = ab + ac$ (дистрибутивность; связь между сложением и умножением); +\item $ab = ba$ (коммутативность по умножению); +\item $(ab)c = a(bc)$ (ассоциативность по умножению); +\item $\exists\: 1 \in F\setminus\{0\} : 1 \cdot a = a \cdot 1 = a$ (существование единицы); +\item $a \neq 0 \Rightarrow \exists a^{-1} \in F : a \cdot a^{-1} = a ^{-1} \cdot a = 1$ (существование обратного элемента). +\end{enumerate} +\end{Def} + +\begin{Examples} \ +\begin{itemize} +\item $\mathbb{Q}$ — рациональные числа; +\item $\mathbb{R}$ — вещественные числа; +\item $\mathbb{C}$ — комплексные числа; +\item $F_2 = \{0, 1\}$, при сложении и умножении по модулю 2. +\end{itemize} +\end{Examples} + +\subsection{Поле комплексных чисел} +Поле действительных чисел $\mathbb{R}$ плохо тем, что в нем уравнение $x^2 + 1 = 0$ не имеет решения. Отсюда возникает идея определить поле, удовлетворяющее следующим требованиям: +\begin{itemize} +\item[(T1)] новое поле содержит $\mathbb{R}$; +\item[(Т2)] уравнение $x^2 +1 = 0$ имеет решение. +\end{itemize} +Давайте формально построим такое поле. + +\begin{Def} +Полем $\mathbb{C}$ комплексных чисел называется множество $\{(a, b) \mid a, b \in \mathbb{R}\}$, на котором заданы операции сложения: $(a_1, b_1) + (a_2, b_2) = (a_1 + a_2, b_1 + b_2)$ и умножения: $(a_1, b_1) \cdot (a_2, b_2) = (a_1a_2 - b_1b_2, a_1b_2 + b_1a_2)$. +\end{Def} + +\begin{Suggestion} +$\mathbb{C}$ и впрямь является полем. +\end{Suggestion} + +\begin{proof} +Операции сложения и умножения введены, осталось только проверить выполнение всех аксиом. +\begin{enumerate} +\item очевидно, так как сложение идет поэлементно; +\item также очевидно; +\item $0 = (0, 0)$; +\item $-(a, b) = (-a, -b)$; +\item почти очевидно (т.е. прямая проверка); +\item ясно (тоже прямая проверка); +\item проверим: +\begin{gather*} +((a_1, b_1) (a_2, b_2)) (a_3, b_3) = (a_1a_2 - b_1b_2, a_1b_2 + b_1a_2) (a_3, b_3) = \\ += (a_1a_2a_3 - b_1b_2b_3 - a_1b_2b_3 - b_1a_2b_3, a_1a_2b_3 - b_1b_2b_3 + a_1b_2a_3 + b_1a_2a_3) = \\ += (a_1, b_1) (a_2a_3 - b_2b_3, a_2b_3 + b_2a_3) = (a_1, b_1)((a_2, b_2) (a_3, b_3)); +\end{gather*} +\item $1 = (1, 0)$; +\item $(a, b) \neq 0 \Leftrightarrow a^2 + b^2 \neq 0 \rightarrow (a, b)^{-1} = \left(\frac{a}{a^2 + b^2}, \frac{-b}{a^2 + b^2}\right)$. +\end{enumerate} +\end{proof} + +Осталось только проверить, правда ли введенное поле $\mathbb{C}$ удовлетворяет нашим требованиям: +\begin{itemize} +\item[(Т1)] Заметим, что в подмножестве $\mathbb{C}$, состоящим из элементов вида $(a, 0)$ операции сложения и умножения будут работать как в поле вещественных чисел. +\begin{gather*} +(a, 0) + (b, 0) = (a + b, 0) \\ +(a, 0) \cdot (b, 0) = (ab, 0) +\end{gather*} +Следовательно, отображение $a \mapsto (a, 0)$ отождествляет $\mathbb{R}$ с этим подмножеством, то есть $\mathbb{R} \rightarrow \mathbb{C}$. Что нам и требуется. +\item[(Т2)] Примем $i = (0, 1)$. Тогда $i^2 = (0, 1) \cdot (0, 1) = (-1, 0) = -1$. Итого, требование выполнено. +\end{itemize} + +Однако запись комплексных чисел в виде упорядоченной пары $(a, b)$ не очень удобна и громоздка. Поэтому преобразуем запись следующим образом: +\[ +(a, b) = (a, 0) + (0, b) = (a, 0) + (b, 0) \cdot (0, 1) = a + bi. +\] + +Тем самым мы получили реализацию поля $\mathbb{C}$ комплексных чисел как множества \\ $\{a + bi \mid a, b \in \mathbb{R},\ i^2 = -1\}$, с обычным сложением и умножением. + +\begin{Def} +Запись $z = a + bi$ называется алгебраической формой комплексного числа $z \in \mathbb{C}$. + + +$a = \Re z$ — действительная часть числа $z$. + + +$b = \Im z$ — мнимая часть числа $z$. +\end{Def} + +\begin{Def} +Числа вида $z = bi$ (т.е. $\Re z = 0$) называются чисто мнимыми. +\end{Def} + +\begin{Def} +Отображение $\mathbb{C} \rightarrow \mathbb{C} : a + bi \mapsto a - bi$ называется (комплексным) сопряжением. Само число $\overline{z} = a - bi$ называется (комплексно) сопряженным к числу $z = a + bi$. +\end{Def} + +\begin{Lemma} +Для любых двух комплексных числе $z, w \in \mathbb{C}$ выполняется, что +\begin{enumerate} +\item $\overline{z + w} = \overline{z} + \overline{w}$; +\item $\overline{zw} = \overline{z} \cdot \overline{w}$. +\end{enumerate} +\end{Lemma} + +\begin{proof} +Пусть $z = a + bi$, а $w = c + di$. +\begin{enumerate} +\item $\overline{z} + \overline{w} = a - bi + c - di = (a + c) - (b + d)i = \overline{z+ w}$ +\item $\overline{z} \cdot \overline{w} = (a - bi)(c - di) = ac - adi - bci + bdi^2 = (ac - bd) - (ad + bc)i = \overline{zw}$ +\end{enumerate} +\end{proof} + +\begin{Comment} +Равенство $z = \overline{z}$ равносильно равенству $\Im z = 0$, то есть $z \in \mathbb{R}$. +\end{Comment} + +\subsection{Геометрическая модель поля $\mathbb{C}$} + +Заметим, что поле комплексных числе $\mathbb{C} = \{(a, b) \mid a, b \in \mathbb{R}\}$ равно $\mathbb{R}^2$. Следовательно, комплексные числа можно представить как точки на действительной плоскости $\mathbb{R}^2$, или сопоставить их векторам. + +\begin{center} +%{\includegraphics{z-as-vector}} +\begin{tikzpicture} +\begin{axis} + [ + axis lines = center, + xtick={0, 3}, + xticklabels = {$0$, $a$}, + ytick = {2}, + yticklabels = {$b$}, + xlabel=$\mathrm{Re}\,z$, + ylabel=$\mathrm{Im}\,z$, + ymin=-1, + ymax=+3, + xmin=-1, + xmax=+4 + ] + \node [right, red] at (axis cs: 3, 2) {$a+bi$}; + \addplot[->] coordinates { (0,0) (3,2) }; + \addplot [dashed, black] coordinates { (3, 0) (3,2) }; + \addplot [dashed, black] coordinates { (0,2) (3,2) }; +\end{axis} +\end{tikzpicture} +\end{center} + +В таком представлении сложение комплексных чисел сопоставляется со сложением векторов, а сопряжение — с отражением относительно оси $Ox (\Re z)$. + +\begin{Def} +Модулем комплексного числа $z = a + bi$ называется длина соответствующего вектора. Обозначение: $|z|; |a+bi| = \sqrt{a^2 + b^2}$. +\end{Def} + +Свойства модуля: +\begin{enumerate} +\item $|z| \geqslant 0$, причем $|z| = 0$ тогда и только тогда, когда $z = 0$; +\item $|z + w| \leqslant |z| + |w|$ — неравенство треугольника; +\item $z\cdot\overline{z} = |z|^2$; +\begin{proof} +$(a + bi)(a - bi) = a^2 - (bi)^2 = a^2 + b^2 = |z|^2$. +\end{proof} +\item $|zw| = |z| \cdot |w|$; +\begin{proof} +Возведем в квадрат. +\begin{gather*} +|z|^2 \cdot |w|^2 = z \overline{z} w \overline{w} = (zw)\overline{z}\overline{w} = zw\overline{zw} = |zw|^2 +\end{gather*} +\end{proof} +\end{enumerate} + +\begin{Comment} +Из свойства 3 следует, что при $z \neq 0$ выполняется: +\begin{gather*} +z^{-1} = \frac{\overline{z}}{|z|^2}\\ +(a + bi)^{-1} = \frac{1}{a + bi} = \frac{a - bi}{a^2 + b^2}. +\end{gather*} +\end{Comment} + +\begin{Def} +Аргументом комплексного числа $z \neq 0$ называется всякий угол $\varphi$ такой что +\[ +\cos \varphi = \frac{a}{|z|} = \frac{a}{\sqrt{a^2 + b^2}}; \quad \sin \varphi = \frac{b}{|z|} = \frac{b}{\sqrt{a^2 + b^2}}. +\] +\end{Def} +Неформально говоря, аргумент $z$ — это угол между осью $Ox$ и соответствующим вектором. + +\begin{Comment} \ +\begin{enumerate} +\item Аргумент определен с точностью до $2\pi$. +\item Аргумент $z = 0$ не определен. +\end{enumerate} +\end{Comment} +Для $z \neq 0$ введем множество $\Arg z = \{\text{множество всех аргументов $z$}\}$ — \textit{большой аргумент}. Также введем \textit{малый аргумент} $\arg z$ — это такой $\varphi \in \Arg z$, который удовлетворяет условию $0 \leqslant \varphi < 2\pi$ и, следовательно, определен однозначно. + +Используя аргумент, можно представить комплексное число следующим образом: +\[ +\left. +\begin{aligned} +&a = |z|\cos \varphi \\ +&b = |z|\sin \varphi +\end{aligned} +\right| \Rightarrow z = a + bi = |z| \cos \varphi + i |z| \sin \varphi = |z|(\cos\varphi + i\sin\varphi) +\] + +\begin{Def} +Запись $z = |z|(\cos\varphi + i\sin\varphi)$ называется тригонометрической формой комплексного числа $z$. +\end{Def} + +\begin{Comment} +\[ +r_1(\cos\varphi_1 + i\sin\varphi_1) = r_2(\cos\varphi_2 + i\sin\varphi_2) \Leftrightarrow +\left\{ +\begin{aligned} +&r_1 = r_2 \\ +&\varphi_1 = \varphi_2 + 2\pi n, \quad n \in \mathbb{Z} +\end{aligned} +\right. +\] +\end{Comment} + +\end{document} diff --git a/linear-algebra/tex/linear-algebra_16_[18.01.2016].tex b/linear-algebra/tex/linear-algebra_16_[18.01.2016].tex new file mode 100644 index 0000000..c637fe2 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_16_[18.01.2016].tex @@ -0,0 +1,170 @@ +\input{header.tex} + +\begin{document} +\section{Лекция 16 от 18.01.2016} +Вспомним предыдущую лекцию и кое-что дополним +\begin{Comment} +\ +\begin{enumerate} + \item Элемент $0$ --- единственный. + \item И элемент $-a$ единственный. + \item Даже элемент $1$ единственный. + \item Как это ни удивительно, но $a^{-1}$ тоже единственный. +\end{enumerate} +\end{Comment} +Легко увидеть, что пункты 2 и 4 доказываются одинаково с точностью до замены операции, как и пункты 1 и 3. + +\begin{proof} +Докажем пункт 3. Если существует $1'$ --- еще одна единица, тогда по аксиомам $1'=1'\cdot1=1$. + +Докажем теперь пункт 4. Пусть $b$ и $c$ таковы, что $b \neq c$ и $ba = ab = ac = ca = 1$. Тогда +\[ +bac = \left(ba\right)c = b\left(ac\right) = 1\cdot c = c = 1 \cdot b = b +\] + +То есть $b = c$. +\end{proof} + +\subsection{Комплексные числа (продолжение)} + +\begin{Suggestion} +Пусть $z_1 = |z_1|\left(\cos{\varphi_1}+i\sin{\varphi_1}\right)$, $z_2 = |z_2|\left(\cos{\varphi_2} + i\sin{\varphi_2}\right)$. Тогда +\[ +z_1z_2 = |z_1||z_2|\left(\cos\left(\varphi_1 + \varphi_2\right) + i\sin\left(\varphi_1 + \varphi_2\right)\right) +\] +Иными словами, при умножении комплексных чисел их модули перемножаются, а аргументы складываются. +\end{Suggestion} + +\begin{proof} +Просто раскроем скобки и приведём подобные. +\begin{gather*} +z_1z_2 = |z_1||z_2|\left(\cos\varphi_1\cos\varphi_2-\sin\varphi_1\sin\varphi_2 + i\left(\cos\varphi_1\sin\varphi_2+\cos\varphi_2\sin\varphi_1\right)\right) = \\ =|z_1||z_2|\left(\cos\left(\varphi_1 + \varphi_2\right) + i\sin\left(\varphi_1 + \varphi_2\right)\right) +\end{gather*} +\end{proof} + +\begin{Consequence} +$\cfrac{z_1}{z_2} = \cfrac{|z_1|}{|z_2|}\left(\cos\left(\varphi_1-\varphi_2\right) + i\sin\left(\varphi_1 - \varphi_2\right)\right)$ +\end{Consequence} + +\begin{Consequence}[Формула Муавра] +Пусть $z = |z|\left(\cos\varphi + i \sin \varphi\right)$. Тогда: +\[z^n = |z|^n\left(\cos\left(n\varphi\right)+i\sin\left(n\varphi\right)\right) \quad \forall n \in \mathbb{Z}. +\] +\end{Consequence} + +\begin{Comment} +В комплексном анализе функция $\exp x\colon\ \mathbb{R} \rightarrow \mathbb{R}$ доопределяется до $\exp z\colon \ \mathbb{C}~\rightarrow~\mathbb{C}$ следующим образом: +\[ +\exp z =\sum\limits_{n=0}^{\infty}\cfrac{z^n}{n!}\ . +\] +И тогда оказывается, что $\exp z$ обладает теми же свойствами, кроме того: +\[ +e^{i\varphi} = \cos\varphi + i\sin\varphi \quad \forall \varphi \in \mathbb{C}. +\] +\end{Comment} + +Всякое $z \in \mathbb{C}$ можно представить в виде $z = |z|e^{i\varphi}$, где $\varphi \in \Arg\left(z\right)$. Тогда формула Муавра приобретает совсем очевидный вид: +\[ +|z_1|e^{i\varphi_2}\cdot|z_2|e^{i\varphi_2} = |z_1||z_2|e^{i\left(\varphi_1+\varphi_2\right)}. +\] + +\begin{Comment} +Отображение $R_\varphi \colon \mathbb{C}\rightarrow\mathbb{C}$, $z\rightarrow ze^{i\varphi}$, $\varphi \in \mathbb{R}$ определяет поворот на угол $\varphi$ вокруг $0$. +\end{Comment} + +\subsection{Корни из комплексного числа} + +Пусть $n\in\mathbb N$ и $n\geqslant2$. + +\begin{Def} +Корнем $n$-й степени из числа $z$ называется всякое $w\in\mathbb C$: $w^n=z$. То есть +\[ +\sqrt[n]{z} = \{w\in\mathbb C\ |\ w^n = z\}. +\] +\end{Def} + +Если $z=0$, то $|z| = 0$, а значит $|w| = 0$, $w=0$. Получается, 0 --- единственное комплексное число, у которого корень определён однозначно. + +Далее рассмотрим случай $z \neq 0$. +\begin{gather*} +z = |z|\left(\cos\varphi+i\sin\varphi\right)\\ +w = |w|\left(\cos\psi+i\sin\psi\right) +\end{gather*} +\[ +z = w^n \Leftrightarrow +\begin{cases} +|z| = |w|^n \\ +n\psi\in\Arg\left(z\right) +\end{cases} +\Leftrightarrow +\begin{cases} +|w|= \sqrt[n]{|z|}\\ +n\psi= \varphi+2\pi k,\quad k\in \mathbb Z +\end{cases}\\ +\Leftrightarrow +\begin{cases} +|w|=\sqrt[n]{|z|}\\ +\psi = \cfrac{\varphi+2\pi k}{n},\quad k \in \mathbb{Z} +\end{cases} +\] + +С точностью до кратного $2\pi$ различные значения в формуле $\psi = \cfrac{\varphi+2\pi k }{n}$ получаются при $k = 0,\ 1,\ldots,n-1$. Значит $z$ имеет ровно $n$ корней $n$-й степени. + +\[ \sqrt[n]{z} = \Biggl\{\sqrt[n]{|z|}\left(\cos\cfrac{\varphi+2\pi k}{n}+i\sin\cfrac{\varphi+2\pi k }{n}\right)\ \biggl|\ k=0,\ldots,n-1\Biggr\} +\] + +\begin{Comment} +Точки из множества $\sqrt[n]{z}$ при $z\neq 0$ лежат в вершинах правильного $n$-угольника, вписанного в окружность радиуса $\sqrt[n]{|z|}$. +\end{Comment} + +\begin{Examples} $z=-1=\cos\pi+i\sin\pi $ +$$\sqrt[3]{z} = \biggl\{ \cos\cfrac\pi3+i\sin\cfrac\pi3;\ \cos\pi+i\sin\pi;\ \cos\cfrac{5\pi}{3}+i\sin\cfrac{5\pi}{3} \biggl\} +$$ +\begin{center} +\begin{tikzpicture}[scale=0.5] +\begin{scope}[thick,font=\scriptsize] +\draw [->] (-5,0) -- (5,0) node [above left] {$\Re z$}; +\draw [->] (0,-5) -- (0,5) node [below right] {$\Im z$}; +\draw (-3,-3pt) -- (-3,3pt) node [above left] {$-1$} node [below left] {$w_1$}; +\draw (0,0) -- (1.5, 2.6) node [right] {$w_0$}; +\draw (0,0) -- (1.5, -2.6) node [below right] {$w_2$}; +\end{scope} +\path [draw=black,fill=none] (0,0) circle (3); +\end{tikzpicture} +\end{center} + +\end{Examples} + +\subsection{Решение квадратных уравнений с комплексными коэффициентами} + +Пусть дано квадратное уравнение $az^2+bz+c=0$, где $a,\ b,\ c\in\mathbb{C}$ и $ a \neq 0$. Тогда имеем: +\begin{gather*} + z^2+\frac{b}{a}z+\frac{c}{a} = 0\\ + z^2+2\frac{b}{2a}z+\frac{b^2}{4a^2}+\frac{c}{a}-\frac{b^2}{4a^2} = 0\\ + \left(z+\frac{b}{2a}\right)^2=\frac{b^2-4ac}{4a^2}\\ + z+\frac{b}{2a} \in \sqrt{\frac{b^2-4ac}{4a^2}}=\frac{\sqrt{b^2-4ac}}{2a} +\end{gather*} + +То есть все решения --- это $z_1 = \cfrac{-b+d_1}{2a},\ z_2 = \cfrac{-b+d_2}{2a}$, где $\{d_1,d_2\} = \sqrt[2]{b^2-4ac}$. В частности, квадратное уравнение всегда имеет комплексный корень, а при $b^2-4ac\neq0$ два корня. + +\begin{Theorem}[Основная теорема алгебры] +Всякий многочлен $P\left(z\right) = a_nz^n + a_{n-1}z^{n-1} + \ldots \hm{+} a_1z + a_0$ степени $n$, где $n \geqslant 1$, $a_n \neq 0$, и $a_0,\ldots,a_n \in \mathbb{C}$ имеет корень. +\end{Theorem} + +\subsection{Векторные пространства над произвольным полем} + +И снова вспомним, что такое векторное пространство: + +\begin{itemize} + \item некоторое множество $V$; + \item есть операция сложения $V\times V\rightarrow V$; + \item есть операция умножения на скаляр $F\times V\rightarrow V$; + \item выполняются 8 аксиом. +\end{itemize} + +Все основные понятия и результаты теории векторных пространств из прошлого полугодия можно перенести на случай пространства над произвольным полем $F$ без изменений. + +\begin{Examples} +Пусть $V$ --- векторное пространство над полем из двух элементов, $\dim V = n$. Тогда $|V| = 2^n$. Действительно, каждое конечномерное пространство обладает базисом (в данном случае $e_1,\ldots,e_n$). Тогда $V = \{k_1e_1+k_2e_2+\ldots+k_ne_n\ |\ k_i\in F\}$. Но очень легко заметить, что всего таких линейных комбинаций $2^n$ +\end{Examples} +\end{document} diff --git a/linear-algebra/tex/linear-algebra_17_[25.01.2016].tex b/linear-algebra/tex/linear-algebra_17_[25.01.2016].tex new file mode 100644 index 0000000..74509bb --- /dev/null +++ b/linear-algebra/tex/linear-algebra_17_[25.01.2016].tex @@ -0,0 +1,179 @@ +\input{header.tex} + +\begin{document} +\section{Лекция 17 от 25.01.2016} +\subsection{Овеществление и комплексификация} +Пусть $V$ --- векторное пространство над $\mathbb{C}$. +\begin{Def} +Овеществление пространства $V$ --- это то же пространство $V$, рассматриваемое как пространство над $\mathbb{R}$. Обозначение: $V_\mathbb{R}$. +\end{Def} +Операция умножения на элементы $\mathbb{R}$ в $V$ уже есть, так как $\mathbb{R}$ --- подполе в $\mathbb{C}$. + +\begin{Examples} +$\mathbb{C}_\mathbb{R} = \mathbb{R}^2$. +\end{Examples} +\begin{Suggestion} +$V$ --- векторное пространство над $\mathbb{C}$, $\dim V < \infty$. Тогда $\dim V_\mathbb{R} = 2\dim V$. +\end{Suggestion} +\begin{proof} +Пусть $e_1, \ldots, e_n$ --- базис в $V$. Тогда $V = \{z_1e_1 + \ldots + z_ne_n\ |\ z_k \in \mathbb{C}\}$, причём такая запись единственная в силу определения базиса. Пусть $z_k = a_k+ib_k$, причём такая запись тоже единственная. Тогда будем иметь +\begin{gather*} +V = \{ \left(a_1+ib_1\right)e_1 + \ldots + \left(a_n+ib_n\right)e_n\ |\ a_k, b_k \in \mathbb{R}\} =\\ += \{a_1e_1 + \ldots + a_ne_n + b_1ie_1 + \ldots + b_nie_n\ |\ a_k, b_k \in \mathbb{R}\} +\end{gather*} +И причём такая запись тоже единственная. Выходит, что $e_1, e_2, \ldots, e_n, ie_1, ie_2, \ldots, ie_n$ --- базис в $V_\mathbb{R}$, в котором $2n = 2\dim V$ элементов. +\end{proof} +\begin{Def} +Комплексификация пространства $W$ --- это множество $W\times W = W^\mathbb{C} \hm{=} \{\left( u, v\right)\ |\ u,v \in W\}$ с операциями $\left(u_1, v_1\right) + \left(u_2, v_2\right) = \left(u_1+u_2, v_1+v_2\right)$, $\left(a, b\right)\left(u, v\right) \hm{=} \left(au-bv, av+bu\right)$. +\end{Def} +\begin{Examples} +$\mathbb{R}^\mathbb{C} = \mathbb{R}$. +\end{Examples} + +\begin{Statement} +В нём выполняются все 8 аксиом векторного пространства над $\mathbb{C}$. +\end{Statement} +$W$ отождествляется подмножеством $\{\left(u, 0\right)\ |\ u\in W\}$. Действительно +\[ +w\in W\Leftrightarrow \left(w,0\right) \in W^\mathbb{C};\ i\left(w,0\right) = \left(0, w\right) \in W^\mathbb{C} +\] +В итоге $\forall \left(u, v\right) \in W^\mathbb{C}$ представим в виде +\[ +\left(u,v\right) = \left(u,0\right) + \left(0,v\right) = \left(u,0\right) + i\left(v,0\right) = u+iv +\] +То есть $W^\mathbb{C} = \{u+iv\ |\ u,v\in W\}$. +\begin{Suggestion} +$\dim W^\mathbb{C} = \dim W$ +\end{Suggestion} +\begin{Comment} +Здесь $W^\mathbb{C}$ --- пространство над $\mathbb{C}$, а $W$ --- над $\mathbb{R}$. +\end{Comment} +\begin{proof} +Пусть $e_1, \ldots, e_n$ --- базис в $W$. Тогда +\begin{gather*} +W^\mathbb{C} = \{\left(u,v\right)\ |\ u,v \in W\} = \{\left(a_1e_1 + a_2e_2 + \ldots + a_ne_n, b_1e_1 + b_2e_2 + \ldots + b_ne_n\right)\ |\ a_k,b_k \in \mathbb{R}\} = \\ += \{\left(a_1e_1,b_1e_1\right) + \ldots + \left(a_ne_n, b_ne_n\right)\} = \{\left(a_1+ib_1\right)e_1 + \ldots +\left(a_n + ib_n)e_n\right)\} = \\ += \{z_1e_1 + \ldots + z_ne_n\ |\ z_k \in \mathbb{C} \} +\end{gather*} +То есть выходит, что $e_1, \ldots, e_n$ --- базис в $W^\mathbb{C}$. +\end{proof} + +\subsection{Сумма подпространств} +Пусть $V$ --- конечномерное векторное пространство, а $U$ и $W$ --- подпространства (в качестве упражнения лектор предлагает доказать, что их пересечение --- тоже подпространство). + +\begin{Def} +Сумма подпространств $U$ и $W$ --- это множество. +\[ +U+W = \{u + w\ |\ u \in U, w \in W\} +\] +\end{Def} + +\begin{Comment} +$\dim \left( U \cap W \right) \leqslant \dim U \leqslant \dim \left(U + W\right)$ +\end{Comment} + +\begin{Examples} +Двумерные плоскости в пространстве $\mathbb{R}^3$ содержат общую прямую. +\end{Examples} + +\begin{Theorem} +$\dim \left(U \cap W\right) = \dim U + \dim W - \dim \left(U+W\right)$ +\end{Theorem} + +\begin{proof} +Положим $p = \dim \left(U \cap W\right)$, $k = \dim U$, $m = \dim W$. Выберем базис $a \hm{=} \{ a_1, \ldots, a_p\}$ в пересечении. Его можно дополнить до базиса $W$ и до базиса $U$. Значит $\exists b = \{ b_1, \ldots, b_{k-p}\}$ такой, что $a\cup b$ --- базис в $U$ и $\exists c = \{ c_1, \ldots, c_{m-p}\}$ такой, что $a \cup c$ --- базис в $W$. + +Докажем, что $a \cup b \cup c$ --- базис в $U+W$. + +Во-первых, докажем, что $U+W$ порождается множеством $a \cup b \cup c$. +\begin{gather*} +\left. +\begin{aligned} + &v \in U+W \Rightarrow \exists u \in U, w \in W\colon \ v = u+w\\ + &u \in U=\langle a \cup b\rangle \subset \langle a \cup b \cup c\rangle\\ + &w \in W=\langle a \cup c\rangle \subset \langle a \cup b \cup c\rangle\\ +\end{aligned} +\right| + \Rightarrow v = u + w \in \langle a \cup b \cup c\rangle + \Rightarrow U + W = \langle a \cup b \cup c\rangle +\end{gather*} + +Во-вторых, докажем линейную независимость векторов из $a \cup b \cup c$. + +Пусть скаляры $\alpha_1, \ldots, \alpha_p$, $\beta_1, \ldots, \beta_{k-p}$, $\gamma_1, \ldots, \gamma_{m-p}$ таковы, что: +\begin{gather*} +\underbrace{\alpha_1a_1+ \ldots +\alpha_pa_p}_x + \underbrace{\beta_1b_1+ \ldots +\beta_{k-p}b_{k-p}}_y + \underbrace{\gamma_1c_1 + \ldots + \gamma_{m-p}c_{m-p}}_z=0\\ +x+y+z = 0\\ +z = -x -y\\ +z \in W\\ +-x-y \in U\cap W\\ +\Rightarrow \exists \lambda_1,\ldots, \lambda_p \in F \colon z = \lambda_1a_1+\ldots+\lambda_pa_p +\end{gather*} +Тогда $\lambda_1a_1 + \ldots + \lambda_pa_p - \gamma_1c_1 - \ldots - \gamma_{m-p}c_{m-p} = 0$. Но $a \cup c$ --- базис $W$. Следовательно, $\lambda_1 \hm{=} \ldots = \lambda_p = \gamma_1 = \ldots = \gamma_{m-p} = 0$. Но тогда $0 = x+y = \alpha_1a_1 + \ldots + \alpha_pa_p + \beta_1b_1 + \ldots + \beta_{k-p}b_{k-p}$. Но $a\cup b$ --- базис $U+W \Rightarrow \alpha_1 = \ldots = \alpha_p = \beta_1 = \ldots = \beta_{k-p} = 0$. Итого, все коэффициенты равны нулю и линейная независимость тем самым доказана. То есть $a \cup b \cup c$ --- базис $U+W$. +\begin{gather*} + \dim \left(U+W\right) = |a\cup b \cup c| = |a| + |b| + |c| = p + k-p + m-p = k + m -p =\\ + =\dim U + \dim W - \dim\left(U\cap W\right) +\end{gather*} +\end{proof} + +\begin{Def} +Если $U \cap W = \{0\}$, то $U + W$ называется прямой суммой. +\end{Def} +\begin{Consequence} +В таком случае $\dim\left(U+W\right) = \dim U + \dim W$. +\end{Consequence} +\begin{Examples} + $U$ --- плоскость, $W$ --- прямая в $\mathbb{R}^3$. +\end{Examples} + +\subsection{Переход к новому базису} +Пусть $V$ --- векторное пространство, $\dim V = n$, $e_1, \ldots, e_n$ --- базис. То есть +\[ +\forall v \in V \quad \exists!\: v = x_1e_1 + \ldots + x_ne_n, +\] +где $x_1, \ldots, x_n \in F$ --- координаты вектора $v$ в базисе $\left(e_1, \ldots, e_n\right)$. +Пусть также есть базис $e_1', \ldots, e_n'$: +\begin{align*} + e_1' &= c_{11}e_1 + c_{21}e_2 + \ldots + c_{n1}e_n\\ + e_2' &= c_{12}e_1 + c_{22}e_2 + \ldots + c_{n2}e_n\\ + \vdots\\ + e_n' &= c_{1n}e_1 + c_{2n}e_2 + \ldots + c_{nn}e_n +\end{align*} +Обозначим матрицу $C = \left(c_{ij}\right)$. Тогда можно переписать $\left(e_1', \ldots, e_n'\right)$ как $\left(e_1, \ldots, e_n\right)\cdot C$. +\begin{Suggestion} +$e_1', \ldots, e_n'$ образуют базис тогда и только тогда, когда $\det C \neq 0$. +\end{Suggestion} + +\begin{proof} \ +\begin{itemize} +\item[{$[\Rightarrow]$}] $e_1', \ldots, e_n'$ --- базис, а значит $\exists C' \in M_n \colon$ +\begin{gather*} +\left(e_1, \ldots, e_n\right) = \left(e_1', \ldots, e_n'\right)C' = \left(e_1, \ldots, e_n\right)CC'\\ +E = CC'\\ +C' = C^{-1} \Leftrightarrow \exists C^{-1} \Leftrightarrow \det{C} \neq 0 +\end{gather*} +\item[{$[\Leftarrow]$}] $\det C \neq 0 \Rightarrow \exists C^{-1}$. Покажем, что $e_1', \ldots, e_n'$ в таком случае линейно независимы. Пусть $x_1e_1' + x_2e_2' + \ldots + x_ne_n' = 0$. Тогда можно записать +\begin{gather*} +\left(e_1', e_2', \ldots, e_n'\right) +\begin{pmatrix} + x_1\\ + x_2\\ + \vdots\\ + x_n +\end{pmatrix} = 0\\ +\left(e_1, \ldots, e_n\right)C\begin{pmatrix} + x_1\\ + x_2\\ + \vdots\\ + x_n +\end{pmatrix} = 0 +\end{gather*} +Поскольку $\left(e_1, \ldots, e_n\right)$ --- базис, то $C \begin{pmatrix} + x_1\\ + x_2\\ + \vdots\\ + x_n +\end{pmatrix} = 0$. Умножая слева на обратную матрицу, получаем, что $x_1 = x_2 = \ldots = x_n = 0$ +\end{itemize} +\end{proof} +\end{document} diff --git a/linear-algebra/tex/linear-algebra_18_[29.01.2016].tex b/linear-algebra/tex/linear-algebra_18_[29.01.2016].tex new file mode 100644 index 0000000..d90a31d --- /dev/null +++ b/linear-algebra/tex/linear-algebra_18_[29.01.2016].tex @@ -0,0 +1,292 @@ +\input{header.tex} + +\begin{document} +\renewcommand{\phi}{\varphi} +\section{Лекция 18 от 29.01.2016} + +\subsection{Матрица перехода и переход к новому базису} +Пусть $V$ --- векторное пространство, $\dim V = n$, вектора $e_1, \ldots, e_n$ --- базис, а $e'_1, \ldots, e'_n$ --- некий набор из $n$ векторов. Тогда каждый вектор из этого набора линейно выражается через базис. +\begin{gather*} +e'_j = \sum_{i = 1}^{n} c_{ij}e_i, \quad c_{ij} \in F \\ +(e'_1, \ldots, e'_n) = (e_1, \ldots, e_n) \cdot C, \quad C = (c_{ij}) +\end{gather*} +То есть мы получили матрицу, где в $j$-ом столбце стоят коэффициенты линейного разложения вектора $e'_j$ в базисе $(e_1, \ldots, e_n)$. + +Теперь пусть $e'_1, \ldots, e'_n$ --- тоже базис в $V$. Вспомним, что на прошлой лекции уже было сказано, что в этом случае $\det C \neq 0$. + +\begin{Def} +Матрица $C$ называется матрицей перехода от базиса $(e_1, \ldots, e_n)$ к базису $(e'_1, \ldots, e'_n)$. +\end{Def} + +\begin{Comment} +Матрица перехода от $(e'_1, \ldots, e'_n)$ к $(e_1, \ldots, e_n)$ есть $C^{-1}$. +\end{Comment} + +И небольшое замечание касательно записи: когда базис записан в скобках, то есть $(e_1, \ldots, e_n)$, то нам важен порядок векторов в нем, в противном случае, при записи $e_1, \ldots, e_n$, порядок не важен. + +Итого, имеем два базиса пространства $V$, $(e_1, \ldots, e_n)$ и $(e'_1, \ldots, e'_n)$, и матрицу перехода $C$ такую, что $(e'_1, \ldots, e'_n) = (e_1, \ldots, e_n) \cdot C$. Возьмем некий вектор $v$ и разложим его по обоим базисам. +\begin{gather*} +v \in V \Rightarrow +\begin{aligned} +& v = x_1e_1 + \ldots + x_ne_n, \quad & x_i \in F \\ +& v = x'_1e'_1 + \ldots + x'_ne'_n, \quad & x'_i \in F +\end{aligned} +\end{gather*} + +\begin{Suggestion} +Формула преобразования координат при переходе к другому базису: +\begin{gather*} +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} += C +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*} +\qquad \text{или} \qquad +x_i = \sum_{j = 1}^{n}c_{ij}x'_j +\end{gather*} +\end{Suggestion} + +\begin{proof} +С одной стороны: +\begin{gather*} +v = x'_1 e'_1 + \ldots + x'_ne'_n = +\begin{pmatrix*} +e'_1 & \ldots & e'_n +\end{pmatrix*} +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*} = +\begin{pmatrix*} +e_1 & \ldots & e_n +\end{pmatrix*} C +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*}. +\end{gather*} + +Однако с другой стороны: +\begin{gather*} +v = x_1e_1 + \ldots + x_ne_n = +\begin{pmatrix*} +e_1 & \ldots & e_n +\end{pmatrix*} +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*}. +\end{gather*} + +Сравнивая одно с другим, получаем, что: +\[ +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} = C +\begin{pmatrix*} +x'_1 \\ +\vdots \\ +x'_n +\end{pmatrix*}. +\] +\end{proof} + +\subsection{Линейные отображения} + +Пусть $V$ и $W$ --- два векторных пространства над полем $F$. + +\begin{Def} +Отображение $f : V \rightarrow W$ называется линейным, если: +\begin{enumerate} +\item $f(u_1 + u_2) = f(u_1) + f(u_2), \quad \forall u_1, u_2 \in V$; +\item $f(\alpha u) = \alpha f(u), \quad \forall u \in V,\ \forall \alpha \in F$. +\end{enumerate} +\end{Def} + +\begin{Comment} +Свойства 1--2 эквивалентны тому, что +\[ +f(\alpha_1 u_1 + \alpha_2 u_2) = \alpha_1f(u_1) + \alpha_2f(u_2), \quad \forall u_1, u_2 \in V,\ \forall \alpha_1, \alpha_2 \in F. +\] +\end{Comment} +Здесь важно понимать, что сначала сложение векторов и умножение на скаляр происходит в пространстве $V$, а потом в пространстве $W$. + +\vspace{0.3cm} +\textbf{Простейшие свойства.} +\begin{enumerate} +\item $f(\vec{0}_V) = \vec{0}_W$ +\begin{proof} +$f(\vec{0}_V) = f(0 \cdot \vec{0}_V) = 0f(\vec{0}_V) = \vec{0}_W$ +\end{proof} +\item $\phi(-u) = -\phi(u)$, где $(-u)$ --- обратный элемент к $u$. +\begin{proof} +$\phi(-u) + \phi(u) = \phi(-u+u) = \phi(\vec{0}_V) = \vec{0}_W \Rightarrow \phi(-u) = -\phi(u)$ +\end{proof} +\end{enumerate} + +\vspace{0.3cm} +\textbf{Примеры} +\begin{itemize} +\item[\textbf{(0)}] $V \rightarrow V: v \mapsto v$ --- тождественное отображение. +\item[\textbf{(1)}] $f: \mathbb{R} \rightarrow \mathbb{R}$ линейно $\Leftrightarrow \exists k \in \mathbb{R}: f(x) = kx, \quad \forall x \in \mathbb{R}$ +\begin{proof} \ +\begin{description} +\item[$\Rightarrow$] $f(x) = f(x \cdot 1) = xf(1) = kx$, где $k = f(1)$ +\item[$\Leftarrow$] Проверим необходимые условия линейности. +\begin{enumerate} +\item $f(x) = kx \Rightarrow f(x_1 + x_2) = k(x_1 + x_2) = kx_1 + kx_2 = f(x_1) + f(x_2)$ +\item $f(\alpha x) = k\alpha x = \alpha k x = \alpha f(x)$ +\end{enumerate} +\end{description} +\end{proof} +\item[\textbf{(2)}] $f: \mathbb{R}^2 \rightarrow \mathbb{R}^2$ --- декартова система координат. +\begin{itemize} +\item[2.1] Поворот вокруг 0 на угол $\alpha$ линеен. +\item[2.2] Проекция на прямую, проходящую через 0, линейна. +\end{itemize} +\item[\textbf{(3)}] $P_n = R[x]_{\leqslant n}$ --- пространство всех многочленов от $x$ степени не больше $n$. +\begin{gather*} +\Delta : f \mapsto f' \text{ (производная)} \\ +\left. +\begin{aligned} +(f+g)' &= f' + g' \\ +(\alpha f)' &= \alpha f' +\end{aligned} +\right| \Rightarrow \Delta \text{ --- линейное отображение из $P_n$ в $P_{n-1}$} +\end{gather*} +\item[\textbf{(4)}] Векторное пространство $V$, $\dim V = n$, $e_1, \ldots, e_n$ --- базис. +\begin{gather*} +V \mapsto \mathbb{R}^n \\ +x_1e_1 + \ldots + x_ne_n \mapsto +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} \text{ --- тоже линейное отображение.} +\end{gather*} +\item[\textbf{(5)}] $A \in \Mat_{m\times n}$, $k \geqslant 1$ --- любое, $\phi: \Mat_{n\times k} \rightarrow \Mat_{m\times k}$. +\begin{gather*} +\phi(X) = A \cdot X \\ +A(X_1 + X_2) = AX_1 + AX_2 \\ +A(\alpha X) = \alpha(AX) +\end{gather*} +Частный случай, при $k = 1$ --- $\phi: F^n \rightarrow F^m$. +\end{itemize} + +\subsection{Изоморфизм} +\begin{Def} +Отображение $\phi: V \rightarrow W$ называется изоморфизмом, если $\phi$ линейно и биективно. Обозначение: $\phi : V \isom W$. +\end{Def} +\vspace{0.3cm} +Рассмотрим те же примеры: +\begin{itemize} +\item[\textbf{(0)}] Изоморфизм. +\item[\textbf{(1)}] Изоморфизм, при $k \neq 0$. +\item[\textbf{(2)}] +\begin{itemize} +\item[2.1] Изоморфизм. +\item[2.2] Не изоморфизм. +\end{itemize} +\item[\textbf{(3)}] Не изоморфизм. +\item[\textbf{(4)}] Изоморфизм. +\item[\textbf{(5)}] \underline{Задача:} доказать, что $\phi$ --- изоморфизм тогда и только тогда, когда $n = m$ и $\det A \neq 0$. +\end{itemize} + +\begin{Suggestion} +Пусть $\phi: V \rightarrow W$ --- изоморфизм. Тогда $\phi^{-1}: W \rightarrow V$ --- тоже изоморфизм. +\end{Suggestion} +\begin{proof} +Так как $\phi$ --- биекция, то $\phi^{-1}$ --- тоже биекция. +\begin{gather*} +w_1, w_2 \in W \Rightarrow \exists v_1, v_2 \in V: +\begin{aligned} +&\phi(v_1) = w_1 & v_1 = \phi^{-1}(w_1)\\ +&\phi(v_2) = w_2 & v_2 = \phi^{-1}(w_2) +\end{aligned} +\end{gather*} +Тогда осталось только доказать линейность обратного отображения. Для этого проверим выполнение необходимых условий линейности. +\begin{enumerate} +\item $ \phi^{-1}(w_1 + w_2) = \phi^{-1}\left(\phi(v_1) + \phi(v_2)\right) = \phi^{-1}\left(\phi(v_1 + v_2)\right) = \id (v_1 + v_2) = v_1 + v_2$ +\item $\alpha \in F, \quad \phi^{-1}(\alpha w_1) = \phi^{-1}(\alpha\phi(v_1)) = \phi^{-1}(\phi(\alpha v_1)) = \id (\alpha v_1) = \alpha v_1$. +\end{enumerate} +\end{proof} + +\begin{Def} +Два векторных пространства $V$ и $W$ называются изоморфными, если существует изоморфизм $\phi: V \isom W$ (и тогда существует изоморфизм $V \leftisom W$ по предположению). Обозначение: $V \simeq W$ или $V \cong W$. +\end{Def} + +Отображения можно соединять в композиции: +\begin{gather*} +\left. +\begin{aligned} +\phi&: U \rightarrow V \\ +\psi&: V \rightarrow W +\end{aligned} +\right|\Rightarrow \psi \circ \phi : U \rightarrow W \quad \psi \circ \phi(u) = \psi(\phi(u)) +\end{gather*} + +\begin{Suggestion}\ +\begin{enumerate} +\item Если $\phi$ и $\psi$ линейны, то $\psi \circ \phi$ тоже линейно. +\item Если $\phi$ и $\psi$ изоморфизмы, то $\psi \circ \phi$ тоже изоморфизм. +\end{enumerate} +\end{Suggestion} + +\begin{proof} \ +\begin{enumerate} +\item Опять-таки, просто проверим необходимые условия линейности. +\begin{enumerate} +\item $(\psi \circ \phi)(u_1 + u_2) = \psi(\phi(u_1 + u_2)) = \psi(\phi(u_1) + \phi(u_2)) = \psi(\phi(u_1)) + \psi(\phi(u_2)) = \\ = (\psi \circ\phi)(u_1) + (\psi \circ \phi)(u_2)$ +\item $(\psi \circ \phi)(\alpha u) = \psi(\phi(\alpha u)) = \psi(\alpha\phi(u)) = \alpha \psi(\phi(u)) = \alpha (\psi \circ \phi) (u)$ +\end{enumerate} +\item Следует из сохранения линейности и того, что композиция биекций тоже биекция. +\end{enumerate} +\end{proof} + +\begin{Consequence} +Изоморфизм это отношение эквивалентности на множестве всех векторных пространств над фиксированным полем $F$. +\end{Consequence} +\begin{proof} \ +\begin{description} +\item[Рефлексивность] $V \simeq V$. +\item[Симметричность] $V \simeq W \Rightarrow W \simeq V$. +\item[Транзитивность] $(V \simeq U)\ \land\ (U \simeq W) \Rightarrow V \simeq W$. +\end{description} +\end{proof} + +То есть множество всех векторных пространств над фиксированным полем $F$ разбивается на попарно непересекающиеся классы, причем внутри одного класса любые два пространства изоморфны. Такие классы называются \textit{классами эквивалентности}. + +\begin{Theorem} +Два конечномерных векторных пространства $V$ и $W$ над полем $F$ изоморфны тогда и только тогда, когда $\dim V = \dim W$. +\end{Theorem} + +Но для начала докажем следующую лемму. + +\begin{Lemma}[1] +Для векторного пространства $V$ над полем $F$ размерности $n$ верно, что $V \simeq F^n$. +\end{Lemma} +\begin{proof} +Рассмотрим отображение $\phi: V \rightarrow F^n$ из примера 4. Пусть $(e_1, \ldots, e_n)$ --- базис пространства $V$. Тогда: +\[ +x_1e_1 + \ldots + x_ne_n \mapsto +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*}, \quad x_i \in F. +\] +Отображение $\phi$ линейно и биективно, следовательно $\phi$ --- изоморфизм. А раз существует изоморфное отображение между пространствами $V$ и $F^n$, то они изоморфны. +\end{proof} + +\end{document} diff --git a/linear-algebra/tex/linear-algebra_19_[01.02.2016].tex b/linear-algebra/tex/linear-algebra_19_[01.02.2016].tex new file mode 100644 index 0000000..cfca4c8 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_19_[01.02.2016].tex @@ -0,0 +1,206 @@ +\input{header.tex} + +\begin{document} +\renewcommand{\phi}{\varphi} + +\section{Лекция 19 от 01.02.2016} + +\subsection{Изоморфизм (продолжение)} +На прошлой лекции мы ввели теорему и доказали одну лемму. Напомним их. + +\begin{Theorem} +Два конечномерных векторных пространства $V$ и $W$ изоморфны тогда и только тогда, когда $\dim V \hm= \dim W$. +\end{Theorem} + +\begin{Lemma}[1] +Если $\dim V = n$, то $V \simeq F^n$. +\end{Lemma} + +\begin{Comment} +Говорят, что функция $\phi$ \textit{отождествляет} пространство $V$ с пространством $F^n$, если $\phi: V \isom F^n$. +\end{Comment} + +Но перед тем, как доказывать эту теорему, докажем лучше еще одну лемму. +\begin{Lemma}[2] +Пусть $\phi: V \isom W$ --- изоморфизм векторных пространств, а $e_1, \ldots, e_n$--- базис $V$. Тогда $\phi(e_1), \ldots, \phi(e_n)$ --- базис $W$. +\end{Lemma} + +\begin{proof} +Пусть $w \in W$ --- произвольный вектор. Положим $v \in V$ таковым, что $v \hm= \phi^{-1}(w)$. +\begin{gather*} +\begin{aligned} +v &= x_1e_1 + \ldots + x_ne_n, \quad x_i \in F \\ +w &= \phi(v) = \phi(x_1e_1 + \ldots + x_ne_n) = x_1\phi(e_1) + \ldots + x_n\phi(e_n) +\end{aligned} \Rightarrow W = \langle \phi(e_1), \ldots, \phi(e_n)\rangle +\end{gather*} + +Покажем, что $\phi(e_1), \ldots, \phi(e_n)$ --- линейно независимые вектора. + +Пусть $\alpha_1, \ldots, \alpha_n \in F$ таковы, что $\alpha_1\phi(e_1) + \ldots + \alpha_n\phi(e_n) = 0$. Это то же самое, что $\phi(\alpha_1 e_1 \hm+ \ldots + \alpha_n e_n) = 0$. Применяя $\phi^{-1}$, получаем $\alpha_1 e_1 + \ldots \alpha_n e_n = \phi^{-1}(0) = 0$. Но так как $e_1, \ldots, e_n$~--- базис в $V$, то $\alpha_1 = \ldots= \alpha_n = 0$, и потому вектора $\phi(e_1), \ldots, \phi(e_n)$ линейно независимы. Следовательно, этот набор векторов --- базис в $W$. +\end{proof} + +Теперь приступим наконец к доказательству теоремы. +\begin{proof} \ +\begin{description} +\item[$\Rightarrow$] $V \simeq W \Rightarrow \exists \phi: V \isom W$. Тогда по лемме 2, если $e_1, \ldots, e_n$ --- базис $V$, то $\phi(e_1), \ldots, \phi(e_n)$ --- базис $W$, и тогда $\dim V = \dim W$. +\item[$\Leftarrow$] Пусть $\dim V = \dim W = n$. Тогда по лемме 1 существуют изоморфизмы $\phi: V \isom F^n$ и $\psi : W \isom F^n$. Следовательно, $\psi^{-1}\circ\phi: V \rightarrow W$ --- изоморфизм. +\end{description} +\end{proof} + +То есть получается, что с точностью до изоморфизма существует только одно векторное пространство размерности $n$. Однако не стоит заканчивать на этом курс линейной алгебры. Теперь главная наша проблема --- это как из бесконечного множества базисов в каждом векторном пространстве выбрать тот, который будет наиболее простым и удобным для каждой конкретной задачи. + +Например, рассмотрим вектор $v \in F^n$ с координатами $v = \begin{pmatrix*}x_1 \\ \vdots \\ x_n\end{pmatrix*}$. Пусть $v \neq 0$. Тогда существует такой базис $e_1, \ldots, e_n$, что $v = e_1$, то есть в этом базисе вектор имеет координаты $v = \begin{pmatrix*}1 \\ 0\\ \vdots\\0\end{pmatrix*}$. + +Пусть $V$, $W$ --- векторные пространства над $F$, и $e_1, \ldots, e_n$ --- базис $V$. +\begin{Suggestion} \ +\begin{enumerate} +\item Всякое линейное отображение $\phi : V \rightarrow W$ однозначно определяется векторами $\phi(e_1), \ldots, \phi(e_n)$. +\item Для всякого набора векторов $f_1, \ldots, f_n \in W$ существует единственное линейное отображение $\phi: V \rightarrow W$ такое, что $\phi(e_1) = f_1, \phi(e_2) = f_2, \ldots, \phi(e_n) = f_n$. +\end{enumerate} +\end{Suggestion} +\begin{proof} \ +\begin{enumerate} +\item Пусть $v \in V$, $v = x_1 e_1 + \ldots + x_ne_n$, где $x_i \in F$. Тогда $\phi(v) = x_1\phi(e_1) + \ldots + x_n \phi(e_n)$, то есть если мы знаем вектора $\phi(e_i)$, то сможем задать $\phi(v)$ для любого $v \in V$. +\item Определим отображение $\phi: V \rightarrow W$ по формуле $\phi(x_1 e_1 + \ldots + x_n e_n) = x_1f_1 + \ldots + x_nf_n$. Прямая проверка показывает, что $\phi$ линейна, а единственность следует из пункта 1. +\end{enumerate} +\end{proof} + +\begin{Consequence} +Если $\dim V = \dim W = n$, то для всякого базиса $e_1, \ldots, e_n$ пространства $V$ и всякого базиса $f_1, \ldots , f_n$ пространства $W$ существует единственный изоморфизм $\phi: V \isom W$ такой, что $\phi(e_1) = f_1, \ldots, \phi(e_n) = f_n$. +\end{Consequence} +\begin{proof} +Из пункта 2. предложения следует, что существует единственное линейное отображение $\phi: V \rightarrow W$ такое, что $\phi(e_1) = f_1, \ldots, \phi(e_n) = f_n$. Но тогда $\phi(x_1e_1 + \ldots + x_ne_n) \hm= x_1\phi(e_1) + \ldots + x_n\phi(e_n) = x_1f_1 + \ldots + x_nf_n$ для любых $x_i \in F$. Отсюда следует, что $\phi$ --- биекция. +\end{proof} + +\subsection{Матрицы линейных отображений} + +Пусть $V$ и $W$ --- векторные пространства, $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $\phi: V \rightarrow W$ --- линейное отображение. Тогда: +\[ +\phi(e_j) = a_{1j}f_1 + \ldots + a_{mj}f_m = \sum_{i = 1}^{m}a_{ij}f_i. +\] + +\begin{Def} +Матрица $A = (a_{ij}) \in Mat_{m \times n}(F)$ называется \textit{матрицей линейного отображения $\phi$} в базисах $\mathbb{e}$ и $\mathbb{f}$ (или по отношению к базисам $\mathbb{e}$ и $\mathbb{f}$). +\end{Def} + +\begin{Comment} +Существует биекция $\{\text{линейные отображения } V \rightarrow W \} \rightleftarrows Mat_{m\times n}$. +\end{Comment} + +\begin{Comment} +В $A^{(j)}$ стоят координаты $\phi(e_j)$ в базисе $\mathbb{f}$. +\[ +(\phi(e_1), \ldots, \phi(e_n)) = (f_1, \ldots, f_m)\cdot A +\] +\end{Comment} + +Рассмотрим пример. + +Пусть $P_n = F[x]_{\leqslant n}$ --- множество многочленов над полем $F$ степени не выше $n$. Возьмем дифференцирование $\Delta: P_n \rightarrow P_{n-1}$. + +Базис $P_n$ --- $1, x, x^2, \ldots, x^n$. Базис $P_{n-1}$ --- $1, x, \ldots, x^{n-1}$. Тогда матрица линейного отображения будет размерности $n \times (n+1)$ и иметь следующий вид. +\[ +\begin{pmatrix*} +0 & 1 & 0 & 0 & \dots & 0 \\ +0 & 0 & 2 & 0 & \dots & 0 \\ +0 & 0 & 0 & 3 & \dots & 0 \\ +\hdotsfor{6} \\ +0 & 0 & 0 & 0 & \dots & n +\end{pmatrix*} +\] + +\begin{Suggestion} +Если $v = x_1 e_1 + \ldots + x_ne_n$ и $\phi(v) = y_1f_1 + \ldots + y_mf_m$, то +\[ +\begin{pmatrix*} +y_1 \\ +\vdots \\ +y_m +\end{pmatrix*} += A \cdot +\begin{pmatrix*} +x_1 \\ +\vdots \\ +x_n +\end{pmatrix*} +\] +\end{Suggestion} + +\begin{proof} +С одной стороны: +\[ +\phi(v) = x_1 \phi(e_1) + \ldots + x_n\phi(e_n) = (\phi(e_1), \ldots, \phi(e_n))\begin{pmatrix*}x_1 \\ \vdots \\ x_n\end{pmatrix*} = (f_1, \ldots, f_m)A\begin{pmatrix*}x_1 \\ \vdots \\ x_n\end{pmatrix*}. +\] +Однако с другой стороны: +\[ +\phi(v) = (f_1, \ldots, f_m)\begin{pmatrix*}y_1 \\ \vdots \\ y_m\end{pmatrix*}. +\] +Сравнивая обе части, получаем требуемое. +\end{proof} + +А теперь проанализируем операции над матрицами линейных отображений. + +$V$ и $W$ --- векторные пространства. \textbf{Обозначение:} $\Hom(V, W):=$ множество всех линейных отображений $V \rightarrow W$. + +Пусть $\phi, \psi \in \Hom(V, W)$. + +\begin{Def}\ +\begin{enumerate} +\item $\phi + \psi \in \Hom(V, W)$ --- это $(\phi + \psi)(v):= \phi(v) + \psi(v)$. +\item $\alpha \in F, \alpha\phi \in \Hom(V, W)$ --- это $(\alpha\phi)(v) := \alpha(\phi(v))$. +\end{enumerate} +\end{Def} + +\begin{Task}\ +\begin{enumerate} +\item Проверить, что $\phi + \psi$ и $\alpha\phi$ действительно принадлежат $\Hom(V, W)$. +\item Проверить, что $\Hom(V, W)$ является векторным пространством. +\end{enumerate} +\end{Task} + +\begin{Suggestion} +Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $\phi, \psi \in \Hom(V, W)$. При этом $A_{\phi}$ --- матрица линейного отображения $\phi$, $A_{\psi}$ --- матрица для $\psi$, $A_{\phi+\psi}$ --- для $\phi + \psi$, а $A_{\alpha\phi}$ --- для $\alpha\phi$. + +Тогда $A_{\phi+\psi} = A_{\phi} + A_{\psi}$ и $A_{\alpha\phi} = \alpha A_{\phi}$. +\end{Suggestion} +\begin{proof} +Упражнение. +\end{proof} + +Теперь возьмем три векторных пространства --- $U, V$ и $W$ размерности $n, m$ и $k$ соответственно, и их базисы $\mathbb{e}, \mathbb{f}$ и $\mathbb{g}$. Также рассмотрим цепочку линейных отображений $U \xrightarrow{\psi} V \xrightarrow{\phi} W$. Пусть $A$ --- матрица $\phi$ в базисах $\mathbb{f}$ и $\mathbb{g}$, $B$ --- матрица $\psi$ в базисах $\mathbb{e}$ и $\mathbb{f}$, $C$ --- матрица $\phi\circ\psi$ в базисах $\mathbb{e}$ и $\mathbb{g}$. + +\begin{Suggestion} +$C = AB$. +\end{Suggestion} +\begin{Comment} +Собственно говоря, отсюда и взялось впервые определение умножения матриц. +\end{Comment} +\begin{proof} Запишем по определению: +\begin{align*} +(\phi \circ \psi)(e_r) &= \sum_{p = 1}^{k}c_{pr}g_p, \quad r = 1, \ldots, n \\ +\psi(e_r) &= \sum_{q = 1}^{m}b_{qr}f_q, \quad r = 1, \ldots, n \\ +\phi(f_q) &= \sum_{p = 1}^{k}a_{pq}g_p, \quad q = 1, \ldots, m +\end{align*} +Тогда: +\begin{gather*} +(\psi\circ\psi)(e_r) = \phi(\psi(e_r)) = \phi\left(\sum_{q = 1}^{m}b_{qr}f_g \right) = \sum_{q = 1}^{m}b_{qr}\phi(f_g) = \sum_{q = 1}^{m}b_{qr}\left(\sum_{p = 1}^{k}a_{pq}g_p \right) = \sum_{p = 1}^{k}\left(\sum_{q = 1}^{m}a_{pq}b_{qr} \right)g_p \\ +\Downarrow \\ +c_{pr} = \sum_{q = 1}^{m}a_{pq}b_{qr} \\ +\Downarrow\\ + C = AB +\end{gather*} +\end{proof} + +И снова, пусть $V$ и $W$ --- векторные пространства с линейным отображением $\phi: V \rightarrow W$. + +\begin{Def} +\textit{Ядро $\phi$} --- это множество $\Ker\phi := \{v \in V \mid \phi(v) = 0 \}$. +\end{Def} +\begin{Def} +\textit{Образ $\phi$} --- это множество $\Im \phi := \{w \in W \mid \exists v \in V : \phi(v) = w \}$. +\end{Def} + +\begin{Examples} +Все то же $\Delta: P_n \rightarrow P_{n-1}$. Для него $\Ker \Delta = \{f \mid f = const\},\ \Im \Delta = P_{n-1}$. +\end{Examples} +\end{document} diff --git a/linear-algebra/tex/linear-algebra_20_[08.02.2016].tex b/linear-algebra/tex/linear-algebra_20_[08.02.2016].tex new file mode 100644 index 0000000..a3ed7d6 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_20_[08.02.2016].tex @@ -0,0 +1,259 @@ +\input{header.tex} + +\begin{document} +\renewcommand{\phi}{\varphi} + +\section{Лекция 20 от 08.02.2016} + +\subsection{Линейные отображения (продолжение)} +Пусть $\phi\colon V \rightarrow W$ --- линейное отображение. + +\begin{Suggestion}\ + \begin{enumerate} + \item $\Ker \phi$ --- подпространство в $V$. + \item $\Im \phi$ --- подпространство в $W$. + + \end{enumerate} +\end{Suggestion} + +\begin{proof} + Проверим по определению. + \begin{enumerate} + \item \begin{itemize} + \item $\phi(0_v) = 0_w$ --- этот факт мы уже доказали. + \item $v_1, v_2 \in \Ker \phi \Rightarrow \phi(v_1+v_2) = \phi(v_1) + \phi(v_2) = 0_w + 0_w = 0_w \Rightarrow v_1+v_2 \in \Ker \phi$. + \item $v \in \Ker \phi, \alpha \in F \Rightarrow \phi(\alpha v) = \alpha \phi(v) = \alpha 0 = 0$, то есть $\alpha v$ тоже лежит в ядре. + \end{itemize} + \item \begin{itemize} + \item $0_w = \phi(0_v) \Rightarrow 0_w \in \Im(\phi)$. + \item $w_1, w_2 \in \Im \phi \Rightarrow \exists v_1, v_2 \in V\colon w_1 = \phi(v_1), w_2 = \phi(v_2) \Rightarrow w_1 + w_2 = \phi(v_1) + \phi(v_2) = \phi(v_1 + v_2) \Rightarrow w_1 + w_2 \in \Im \phi$. + \item $w \in \Im \phi, \alpha \in F \Rightarrow \exists v \in V \colon \phi(v) = w \Rightarrow \alpha w = \alpha \phi(v) = \phi(\alpha v) \Rightarrow \alpha w \in \Im \phi$. + + \end{itemize} + \end{enumerate} + То есть все условия подпространства по определению выполнены и предложение доказано. +\end{proof} + +\begin{Suggestion}\ + \begin{enumerate} + \item Отображение $\phi$ инъективно тогда и только тогда, когда $\Ker \phi = \{0\}$. + \item Отображение $\phi$ сюръективно тогда и только тогда, когда $\Im \phi = W$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item \begin{itemize} + \item $[\Rightarrow]$ Очевидно. + \item $[\Leftarrow]$ $v_1, v_2 \in V :\ \phi(v_1)=\phi(v_2) \Rightarrow \phi (v_1 - v_2) = 0 \Rightarrow v_1 - v_2 = 0 \Rightarrow v_1 = v_2 $. + \end{itemize} + \item Очевидно из определения образа. + \end{enumerate} +\end{proof} + +\begin{Consequence} + Отображение $\phi$ является изоморфизмом тогда и только тогда, когда $\Ker \phi~=~\{0\}$ и $\Im \phi = W$. +\end{Consequence} + +\begin{Suggestion} + Пусть $U \subset V$ --- подпространство и $e_1, \ldots, e_k$ --- его базис. Тогда: + \begin{enumerate} + \item $\phi(U)$ --- подпространство, $\phi(U) = \langle \phi(e_1), \ldots, \phi(e_k)\rangle$; + \item $\dim \phi(U) \leqslant \dim U$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item $\phi(x_1e_1 + x_2e_2 + \ldots + x_ke_k) = x_1\phi(e_1) + \ldots + x_k\phi(e_k) \in \langle \phi(e_1), \ldots, \phi(e_k)\rangle$. + \item $\phi(U) = \langle\phi(e_1), \ldots, \phi(e_k)\rangle \Rightarrow \dim \phi(U) \leqslant \dim U$ по основной лемме о линейной зависимости. + \end{enumerate} +\end{proof} + +Пусть $V, W$ --- векторные пространства, $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис $V$, $\mathbb{f} = (f_1, \ldots, f_m)$ --- базис $W$, $A$ --- матрица $\phi$ по отношению к $\mathbb{e},\ \mathbb{f}$. + +\begin{Suggestion} + $\dim \Im \phi = \rk A$. +\end{Suggestion} + +\begin{proof} + \begin{gather*} + v \in V,\ v = x_1e_1 + \ldots x_ne_n\\ + \phi(v) = y_1f_1 + \ldots y_mf_m + \end{gather*} + Тогда: + $$ + \begin{pmatrix} + y_1\\ + \vdots\\ + y_m + \end{pmatrix} + = A \begin{pmatrix} + x_1\\ + \vdots\\ + x_n + \end{pmatrix}. + $$ + \par $A^{\left(j\right)}$ --- столбец координат в базисе $\mathbb{f}$, $\alpha_1, \ldots, \alpha_n \in F$. + \[ + \alpha_1 \phi(e_1) + \ldots + \alpha_n \phi(e_n) = 0 \Leftrightarrow \alpha_1 A^{\left(1\right)} + \ldots + \alpha_n A^{\left(n\right)} = 0 + \] + Отсюда следует, что: + \[ + \rk A = \rk\{\phi(e_1), \ldots, \phi(e_n)\} = \dim \underbrace{\langle\phi(e_1), \ldots, \phi(e_n)\rangle}_{\Im\phi} = \dim \Im \phi. + \] +\end{proof} + +\begin{Consequence} + Величина $\rk A$ не зависит от выбора базисов $\mathbb{e}$ и $\mathbb{f}$. +\end{Consequence} + +\begin{Def} + Величина $\rk A$ называется рангом линейного отображения $\phi$. Обозначение:~$\rk \phi$. +\end{Def} + +\begin{Consequence} + Если $\dim V = \dim W = n$, то $\phi$--- изоморфизм тогда и только тогда, когда $\det A \neq 0$. Тогда $A$ --- квадратная. +\end{Consequence} + +\begin{proof} +\ +\par $[\Rightarrow]$ $\phi$ --- изоморфизм, следовательно: + \[ + \Im \phi = W \Rightarrow \dim \Im \phi = n \Rightarrow \rk A = n + \Rightarrow \det A \neq 0. + \] +\par $[\Leftarrow]$ $\det A \neq 0 \Rightarrow \exists A^{-1}$. +\[ \begin{pmatrix} + y_1\\ + \vdots\\ + y_m +\end{pmatrix} = A +\begin{pmatrix} +x_1\\ +\vdots\\ +x_n +\end{pmatrix} +\Rightarrow +\begin{pmatrix} +x_1\\ +\vdots\\ +x_n +\end{pmatrix} = A^{-1} \begin{pmatrix} + y_1\\ + \vdots\\ + y_m +\end{pmatrix} +\] +Таким образом, линейное отображение $\phi$ является биекцией, а значит, и изоморфизмом. +\end{proof} + +\begin{Consequence} + Пусть $A \in \Mat_{k\times m},\ B\in \Mat_{m\times n}$. Тогда $\rk AB \leqslant \min\{\rk A, \rk B\}$. +\end{Consequence} + +\begin{proof} + Реализуем $A$ и $B$ как матрицы линейных отображений, то есть $\phi_A\colon F^m \rightarrow~F^k,\\ \phi_B\colon F^n \rightarrow F^m$. Тогда $AB$ будет матрицей отображения $\phi_A \circ \phi_B$. + \[ + \rk(AB) = \rk (\phi_A\circ\phi_B) + \begin{cases} + \leqslant \dim \Im \phi_A = \rk A \\ + \leqslant \dim \Im \phi_B = \rk B + + \end{cases} + \] +Первое неравенство следует из того, что $\Im(\phi_A\circ \phi_B) \subset \Im \phi_A$, откуда в свою очередь следует, что $\dim \Im (\phi_A\circ \phi_B) \leqslant \dim \Im \phi_A$. Рассматривая второе неравенство, получаем: + \[ + \Im (\phi_A\circ \phi_B) = \phi_A(\Im \phi_B) \Rightarrow \dim \Im (\phi_A\circ \phi_B)= \dim(\phi_A(\Im\phi_B)) \leqslant \dim\Im \phi_B. + \] +\end{proof} + +\begin{Task}\ + \begin{itemize} + \item Если $A$ квадратна и $\det A \neq 0$, то $\rk AB = \rk B$. + \item Если $B \in M_n$ и $\det B \neq 0$, то $\rk AB = \rk A$. + \end{itemize} +\end{Task} + +\begin{Theorem} + $\dim \Im V = \dim \phi - \dim \Ker \phi$. +\end{Theorem} + +Существует 2 способа доказательства. Рассмотрим оба. + +\begin{proof}[Бескоординатный способ] + Пусть $\dim \Ker \phi = k$ и $e_1, \ldots, e_k$ --- базис в $\Ker \phi$. Дополним его до базиса $V$ векторами $e_k, \ldots, e_n$. Тогда: + \[ + \Im \phi = \langle\phi(e_1), \ldots, \phi(e_k), \ldots, \phi(e_n)\rangle = \langle0, 0, \ldots, 0, \phi(e_{k+1}), \ldots, \phi(e_n)\rangle = \langle\phi(e_{k+1}), \ldots, \phi(e_{n})\rangle + \] + +Пусть $\alpha_{k+1}\phi(e_{k+1}) + \ldots + \alpha_n\phi(e_n) = 0$ для некоторых $\alpha_1, \ldots, \alpha_n \in F$. Тогда: +\begin{gather*} + \phi(\alpha_{k+1}e_{k+1} + \ldots + \alpha_ne_n) = 0 \\ + \alpha_{k+1}e_{k+1} + \ldots + \alpha_ne_n \in \Ker \phi \\ + \alpha_{k+1}e_{k+1} + \ldots + \alpha_ne_n = \beta_1e_1 + \ldots \beta_ke_k, +\end{gather*} +для некоторых $\beta_1, \ldots, \beta_k \in F$. + +Но так как $e_1, \ldots, e_n$ --- базис в $V$, то $\alpha_{k+1} = \ldots = \alpha_n = \beta_1 = \ldots = \beta_k = 0$. То есть векторы $\phi(e_1), \ldots, \phi(e_n)$ линейно независимы, а значит, образуют базис $\Im \phi$. Что и означает, что $\dim\Im\phi = n - k = \dim V - \dim\Ker\phi$. +\end{proof} + +\begin{proof}[Координатный способ] + Зафиксируем базис $\mathbb{e} = (e_1, \ldots, e_n)$ в $V$ и базис $\mathbb{f} = (f_1, \ldots, f_m)$ в $W$. Пусть $A$ --- матрица $\phi$ в базисе $\mathbb{f}$. Тогда $v = x_1e_1 + \ldots + x_ne_n$, $\phi(v) = y_1f_1 + \ldots + y_mf_m$. Получим, что $\begin{pmatrix} y_1\\ \vdots \\ y_m \end{pmatrix} = A \begin{pmatrix} x_1\\ \vdots \\ x_n\end{pmatrix}$. + + $\Ker \phi$ состоит из векторов, координаты которых удовлетворяют СЛУ $ A \begin{pmatrix} x_1\\ \vdots \\ x_n\end{pmatrix} = 0$. Ранее в курсе мы уже доказали, что размерность пространства решений равна $n - \rk A$, то есть $\dim \Im \phi = n - \rk A = \dim V - \dim \Ker \phi$. +\end{proof} + +\subsection{Линейные операторы} + +Пусть $V$ --- конечномерное векторное пространство. + +\begin{Def} + Линейным оператором (или линейным преобразованием) называется всякое линейное отображение $\phi \colon V \rightarrow V$, то есть из $V$ в себя. Обозначение: $L(V) = \Hom(V, V)$. +\end{Def} + +\par Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- базис в $V$ и $\phi \in L(V)$. Тогда: +$$ +\left(\phi(e_1), \ldots, \phi(e_n)\right) = \left(e_1, \ldots, e_n\right)A, +$$ +где $A$ --- матрица линейного оператора в базисе $\mathbb{e}$. В столбце $A^{\left( j\right)}$ стоят координаты $\phi(e_j)$ в базисе $\mathbb{e}$. Матрица $A$ --- квадратная. +\begin{Examples}\ + \begin{enumerate} + \item $\forall v \in V : \phi(v) = 0$ --- нулевая матрица. + \item Тождественный оператор: $\forall v \in V : \id(v) = v$ --- единичная матрица. + \item Скалярный оператор $\lambda \id(v) = \lambda V$ --- матрица $\lambda E$ в любом базисе. + \end{enumerate} +\end{Examples} + +\begin{Consequence}[Следствия из общих фактов о линейных отображениях]\ + \begin{enumerate} + \item Всякий линейный оператор однозначно определяется своей матрицей в любом фиксированном базисе. + \item Для всякой квадратной матрицы существует, причем единственный, линейный оператор $\phi$ такой, что матрица $\phi$ есть $A$. + \item Пусть $\phi \in L(V)$, $A$ --- матрица $\phi$ в базисе $\mathbb{e}$. Тогда: + \begin{gather*} + v = x_1e_1 + \ldots + x_ne_n\\ \phi(v) = y_1e_1 + \ldots + y_n e_n \\ + \begin{pmatrix} + y_1\\ + \vdots \\ + y_n + \end{pmatrix} = A \begin{pmatrix} + x_1\\ + \vdots \\ + x_n + \end{pmatrix} + \end{gather*} + \end{enumerate} +\end{Consequence} +Пусть $\phi \in L(V)$, $A$ --- матрица $\phi$ в базисе $\mathbb{e} = (e_1, \ldots, e_n)$. Пусть $\mathbb{e}' = (e_1', \ldots, e_n')$ --- другой базис, причём $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$, где $C$ --- матрица перехода, и $A'$ --- матрица $\phi$ в базисе $\mathbb{e}'$. +\begin{Suggestion} + $A' = C^{-1}AC$. +\end{Suggestion} +\begin{proof} + \begin{gather} + (e_1', \ldots, e_n') = (e_1, \ldots, e_n)C \\ + e_j' = \sum\limits_{i=1}^{n} c_{ij}e_j \\ + \phi(e_j') = \phi\left(\sum\limits_{i=1}^{n} c_{ij}e_j\right) = \sum\limits_{i=1}^nc_{ij}\phi(e_j)\\ + (\phi(e_1'), \ldots, \phi(e_n')) = (\phi(e_1),\ldots,\phi(e_n))C = (e_1, \ldots, e_n)AC= (e_1', \ldots, e_n')\underbrace{C^{-1}AC}_{A'} + \end{gather} +\end{proof} +\end{document} diff --git a/linear-algebra/tex/linear-algebra_21_[15.02.2016].tex b/linear-algebra/tex/linear-algebra_21_[15.02.2016].tex new file mode 100644 index 0000000..2e5a140 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_21_[15.02.2016].tex @@ -0,0 +1,230 @@ +\input{header.tex} + +\begin{document} + +\section{Лекция 21 от 15.02.2016} + +\subsection*{Инвариантность и обратимость} +Пусть $\phi\colon V \rightarrow V$ --- линейный оператор, и $\mathbb{e}$ --- базис в $V$. + +\begin{Designation} + $A(\phi,\;\mathbb{e})$ --- матрица линейного оператора $\phi$ в базисе $\mathbb{e}$. +\end{Designation} + +Если $\mathbb{e}' = (e_1', \ldots, e_n')$ --- ещё один базис, причём $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$, где $C$ --- матрица перехода, $A = A(\phi,\; \mathbb{e})$ и $A' = A(\phi,\; \mathbb{e}')$. +В прошлый раз мы доказали, что $A' = C^{-1}AC$. + +\begin{Consequence} + Величина $\det A$ не зависит от выбора базиса. Обозначение: $\det\phi$. +\end{Consequence} + +\begin{proof} + Пусть $A'$ --- матрица $\phi$ в другом базисе. Тогда получается, что: + \begin{gather*} + \det A' = \det \left(C^{-1}AC\right) = \det C^{-1} \det A \det C = \det A \det C \cfrac{1}{\det C} = \det A. + \end{gather*} +\end{proof} + +Заметим, что $\det A$ --- инвариант самого $\phi$. + +\begin{Def} + Две матрицы $A', A \in M_n(F)$ называются подобными, если существует такая матрица $C \in M_n(F), \det C \neq 0$, что $A' = C^{-1}AC$. +\end{Def} + +\begin{Comment} + Отношение подобия на $M_n$ является отношением эквивалентности. +\end{Comment} + +\begin{Suggestion} + Пусть $\phi \in L(V)$. Тогда эти условия эквивалентны: + \begin{enumerate} + \item $\Ker\phi = \{0\}$; + \item $\Im \phi = V$; + \item $\phi$ обратим (то есть это биекция, изоморфизм); + \item $\det \phi \neq 0$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item $\Leftrightarrow$ 2 --- следует из формулы $\dim V = \dim \Ker \phi + \dim \Im \phi$. + \item $\Leftrightarrow$ 3 --- уже было. + \item $\Leftrightarrow$ 4 --- уже было. + \end{enumerate} +\end{proof} + +\begin{Def} + Линейный оператор $\phi$ называется вырожденным, если $\det \phi = 0$, и невырожденным, если $\det \phi \neq 0$. +\end{Def} + +\begin{Def} + Подпространство $U \subseteq V$ называется инвариантным относительно $\phi$ (или $\phi$-инвариантным), если $\phi(U)\subseteq U$. То есть $\forall u\in U \colon \phi(u)\in U$. +\end{Def} + +\begin{Examples}\ + \begin{enumerate} + \item $\{0\}, V$ --- они инвариантны для любого $\phi$. + \item $\Ker\phi$ $\phi$-инвариантно, $\phi(\Ker\phi) = \{0\} \subset \Ker\phi$ + \item $\Im\phi$ тоже $\phi$-инвариантно, $\phi(\Im\phi)\subset \phi(V) = \Im \phi$. + \end{enumerate} +\end{Examples} + +Пусть $U\subset V$ --- $\phi$-инвариантное подпространство. Также пусть $(e_1, \ldots, e_k)$ --- базис в $U$. Дополним его до базиса $V\colon$ $\mathbb{e} = (e_1, \ldots, e_n)$. +\begin{gather} + \underbrace{A(\phi,\;\mathbb{e})}_{\text{Матрица с углом нулей}} = \begin{pmatrix} + B& C \\ + 0& D + \end{pmatrix}, \quad\text{где $B\in M_k$} +\end{gather} +Это нетрудно понять, если учесть, что $\phi(e_i)\in \langle e_1, \ldots, e_k\rangle,\ i=1,\dots, k$. +Если $U = \Ker \phi$, то $B = 0$. Если $U = \Im \phi$, то $D = 0$. + +Обратно, если матрица $A$ имеет в базисе $\mathbb{e}$ такой вид, то $U = \langle e_1, \ldots e_k\rangle$ --- инвариантное подпространство. + +\begin{Generalization} + Пусть $V = U \oplus W$, где $U,\ W$ --- инвариантные подпространства, и $(e_1, \ldots, e_k)$ --- базис $W$. Тогда $\mathbb{e} = (e_1, \dots, e_n)$ --- базис $V$. + \[ + A(\phi,\; \mathbb{e}) = \begin{pmatrix} + *& 0 \\ + 0& * + \end{pmatrix} + \] +\end{Generalization} + +\begin{Generalization} + \[ + A(\phi, \mathbb{e}) = + \begin{array}{cc} + \arraycolsep=1.4pt + \begin{pmatrix} + * &0 &0 &\ldots &0\\ + 0 &* &0 &\ldots &0 \\ + 0 &0 &* &\ldots &0 \\ + \vdots &\vdots &\vdots &\ddots &\vdots\\ + 0 &0 &0 &\ldots &* + \end{pmatrix} + \begin{matrix} + k_1 \\ k_2 \\ k_3 \\ \vdots \\ k_s + \end{matrix} + \end{array}\] + Здесь $k_1, \ldots, k_s$ --- размеры квадратных блоков блочно-диагональной матрицы. Матрица $A(\phi,\; \mathbb{e})$ имеет такой вид тогда и только тогда, когда: + \begin{gather*} + U_1 = \langle e_1, \ldots, e_{k_1}\rangle \\ + U_2 = \langle e_{k_1+1}, \ldots, e_{k_2} \rangle \\ + \vdots\\ + U_{k_s} = \langle e_{n-k_s+1}, \ldots, e_n \rangle + \end{gather*} +\end{Generalization} + +\begin{Thedream} + Найти такой базис, в котором матрица линейного оператора была бы диагональной. Но такое возможно не всегда. +\end{Thedream} + +\subsection*{Собственные векторы и собственные значения} + +Пусть $\phi\in L(V)$. + +\begin{Def} + Ненулевой вектор $v\in V$ называется \textit{собственным} для $V$, если $\phi(v) = \lambda v$ для некоторго $\lambda \in F$. При этом число $\lambda$ называется собственным значением линейного оператора $\phi$, отвечающим собственному вектору $v$. +\end{Def} + +\begin{Suggestion} + Вектор $v \in V,\ v \neq 0$ --- собственный вектор в $V$ тогда и только тогда, когда линейная оболочка $\langle v \rangle$ является $\phi$-инвариантным подпространством +\end{Suggestion} + +\begin{proof}\ +\begin{itemize} +\item $[\Rightarrow]$ $\phi(v) = \lambda v \Rightarrow \langle v \rangle = \{kv\ |\ k\in F\}$. Тогда $\phi(kv) = \lambda k v \in \langle v \rangle.$ + +\item $[\Leftarrow]$ $\phi(V) \in \langle v \rangle \Rightarrow \exists \lambda \in F\colon \phi(v) = \lambda v$. +\end{itemize} +\end{proof} + +\begin{Examples} + \begin{enumerate} + \item $V = \mathbb{R}^2$, $\phi$ --- ортогональная проекция на прямуую $l$. \\ + \definecolor{uuuuuu}{rgb}{0.26666666666666666,0.26666666666666666,0.26666666666666666} +\definecolor{ffqqqq}{rgb}{1.,0.,0.} +\definecolor{qqqqff}{rgb}{0.,0.,1.} +\definecolor{xdxdff}{rgb}{0.49019607843137253,0.49019607843137253,1.} +\begin{tikzpicture} +[line cap=round,line join=round,x=1.0cm,y=1.0cm] +\draw[->,color=black] (-6.325793656583929,0.) -- (8.562522298306716,0.); +\foreach \x in {-6.,-5.,-4.,-3.,-2.,-1.,1.,2.,3.,4.,5.,6.,7.,8.} +\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$}; +\draw[->,color=black] (0.,-4.268699038293166) -- (0.,4.869752361413149); +\foreach \y in {-4.,-3.,-2.,-1.,1.,2.,3.,4.} +\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$}; +\draw[color=black] (0pt,-10pt) node[right] {\footnotesize $0$}; +\clip(-6.325793656583929,-4.268699038293166) rectangle (8.562522298306716,4.869752361413149); +\draw [domain=-6.325793656583929:8.562522298306716] plot(\x,{(-0.--2.3*\x)/2.22}); +\draw [domain=-6.325793656583929:8.562522298306716] plot(\x,{(-0.--2.22*\x)/-2.3}); +\draw [->,color=ffqqqq] (0.,0.) -- (1.62,3.18); +\draw (1.62,3.18)-- (2.3703405621232294,2.4557582400375795); +\draw [->,color=ffqqqq] (0.,0.) -- (2.3703405621232294,2.4557582400375795); +\begin{scriptsize} +\draw [fill=xdxdff] (0.,0.) circle (2.5pt); +\draw[color=black] (4.330621985691042,4.747088584235883) node {$l$}; +\draw [fill=qqqqff] (1.62,3.18) circle (2.5pt); +\draw [fill=uuuuuu] (2.3703405621232294,2.4557582400375795) circle (1.5pt); +\end{scriptsize} +\end{tikzpicture}\\ + $0\neq v \in l \Rightarrow \phi(v) = 1\cdot v,\ \lambda =1$ \\ + $0 \neq v \perp l \Rightarrow \phi(v) = 0 = 0 \cdot v,\ \lambda = 1$ + \item Поворот на угол $\phi$ вокруг нуля на угол $\alpha$. + \begin{itemize} + \item $\alpha = 0 + 2\pi k$. Любой ненулевой вектор собственный. $\lambda = 1$. + \item $\alpha = \pi + 2\pi k$. Любой ненулевой вектор собственный. $\lambda = -1$. + \item $\alpha \neq \pi k$. Собственных векторов нет. + \end{itemize} + \item $V = P_n(F)$ --- многочлены степени $n$, $\phi = \Delta\colon f \rightarrow f'$. Тогда $0 \neq f$ --- собственный вектор тогда, и только тогда, когда $f = const$. + \end{enumerate} +\end{Examples} + +\subsection*{Диагонализуемость} +\begin{Def} + Линейный оператор $\phi$ называется диагонализуемым, если существует базис $\mathbb{e}$ в $V$ такой, что $A(\phi, \mathbb{e})$ диагональна. +\end{Def} +\begin{Suggestion}[Критерий диагонализуемости] + Отображение $\phi$ диагонализуемо тогда и только тогда, когда в $V$ существует базис из собственных векторов. +\end{Suggestion} + +\begin{proof} + Пусть $\mathbb{e}$ --- базис $V$. Тогда $A = \diag(\lambda_1, \ldots, \lambda_n)$, что равносильно $\phi(e_i) = \lambda_i e_i$. Это и означает, что все векторы собственные. +\end{proof} +В примерах выше: +\begin{enumerate} + \item $\phi$ диагонализуем. $e_1 \in l,\ e_2 \perp l$. Тогда матрица примет вид $A = \begin{pmatrix} + 1 &0 \\ + 0 &0 + \end{pmatrix}$. + \item Если $\alpha = \pi k$, то $\phi$ диагонализуем ($\phi = \id$ или $\phi = - \id$). Не диагонализуем в других случаях. + \item $\phi$ диагонализуем тогда и только тогда, когда $n = 0$. При $n > 0$ собственных векторов \textbf{МАЛО}. +\end{enumerate} + +\subsection*{Собственное подпространство} +Пусть $\phi\in L(V)$, $\lambda\in F$. + +\begin{Def} + Множество $V_{\lambda}(\phi) = \{v\in V\ |\ \phi(v) = \lambda v\}$ называется собственным подпространством линейного оператора, отвечающим собственному значению $\lambda$. +\end{Def} + +\begin{Task} +Доказать, что $V_\lambda(\phi)$ --- действительно подпространство. +\end{Task} + +\begin{Suggestion} +$V_\lambda(\phi) = \Ker(\phi - \lambda\id)$. +\end{Suggestion} +\begin{proof} + $$ + v \in V_{\lambda}(\phi) \Leftrightarrow \phi(v) = \lambda v \Leftrightarrow \phi(v) - \lambda v = 0 \Leftrightarrow (\phi - \lambda \id)(v) = 0 \Leftrightarrow v \in \Ker(\phi - \lambda \id) + $$ +\end{proof} +\begin{Consequence} + Собственное подпространство $V_{\lambda}(\phi) \neq \{0\}$ тогда и только тогда, когда \\$\det(\phi - \lambda \id) = 0$. +\end{Consequence} +\begin{Def} + Многочлен $\chi_{\phi}(t) = (-1)^n\det(\phi - t \id)$ называется характеристическим. +\end{Def} +\end{document} diff --git a/linear-algebra/tex/linear-algebra_22_[22.02.2016].tex b/linear-algebra/tex/linear-algebra_22_[22.02.2016].tex new file mode 100644 index 0000000..9b0d0b5 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_22_[22.02.2016].tex @@ -0,0 +1,236 @@ +\input{header.tex} + +\begin{document} + +\section{Лекция 22 от 22.02.2016} + +\subsection*{Деление многочленов с остатком} + +Пусть $F$ --- поле, $F[x]$ --- множество всех многочленов от переменной $x$ с коэффициентами из $F$. +\begin{Theorem} + Пусть $G(x),\ H(x) \in F[x]$ --- ненулевые многочлены, тогда существует единственная пара $Q(x),\ R(x) \in F(x)$ такая, что: + \begin{enumerate} + \item $G(x) = Q(x)\cdot H(x) + R(x)$; + \item $\deg R(x) < \deg H(x)$ или $R(x) = 0$. + \end{enumerate} +\end{Theorem} + +\begin{proof} +Аналогично делению целых чисел с остатком. +\end{proof} + +Рассмотрим важный частный случай: $H(x) = x - a$. + +\begin{Theorem}[Безу] + Если $G(x),\ Q(x) \in F[x]$ --- ненулевые многочлены, $a \in F$, то $R = G(a)$ и $G(x) = Q(x)(x - a) + R$. +\end{Theorem} + +\begin{proof} +\begin{gather*} + G(x) = Q(x)\cdot H(x) + R(x) \\ + H(x) = (x - a) \Rightarrow \deg R < \deg (x - a) \Rightarrow \deg R = 0 +\end{gather*} + Подставим $x = a$: + $$G(a) = Q(a)(a-a) + R = 0 + R = R \Rightarrow G(a) = R.$$ +\end{proof} + +\begin{Theorem} + Многочлен степени $n$ в поле комплексных чисел имеет $n$ комплексных корней (с учетом кратности). +\end{Theorem} + +\begin{proof} + По основной теореме алгебры каждый многочлен $G(x) \in \mathbb{C}[x]$ степени больше 1 имеет корень. Тогда $G(x) = (x - a_1)G_1(x),$ где $a_1$ --- корень многочлена $G(x)$. В свою очередь, многочлен $G_1(x)$ также имеет корень, и тогда $G(x) = (x - a_1)G_1(x) = (x - a_1)(x - a_2)G_2(x)$. Продолжая по индукции, получаем, что $G(x) = (x - a_1)(x - a_2)\ldots(x - a_n)b_n$, где $b_n$ --- коэффициент при старшем члене. +\end{proof} + +Также мы получаем следующее представление: +$$ +b_nx^n + b_{n-1}x^{n-1} + \ldots + b_0 = b_n(x - a_1)^{k_1}\ldots(x - a_s)^{k_s} +$$ + +\begin{Def} + Кратностью корня $a_i$ называется число $k_i$ такое, что в многочлене \\$b_n(x - a_1)^{k_1}\ldots(x - a_s)^{k_s}$ множитель $(x - a_i)$ имеет степень $k_i$. +\end{Def} + +\subsection*{Собственные значения и характеристический многочлен} + +\begin{Def} + Пусть $V$ --- конечномерное векторное пространство над полем $F$. Рассмотрим линейный оператор $\phi: V \to V$. Тогда характеристический многочлен $\phi$ имеет вид: + \begin{gather*} + \chi_{\phi}(t) = (-1)^n\det(\phi - tE) = (-1)^n + \begin{vmatrix} + a_{11} - t & a_{12} &\ldots &a_{1n}\\ + a_{21} & a_{22} - t &\ldots &a_{2n} \\ + \vdots &\vdots &\ddots &\vdots\\ + a_{n1} &a_{n2} &\ldots & a_{nn} - t + \end{vmatrix} + = \\ + = (-1)^n(t^n(-1)^n + \ldots) = t^n + c_{n-1}t^{n-1} + \ldots + c_0 + \end{gather*} +\end{Def} + +\begin{Task} +Доказать, что: + \[c_{n-1} = -tr\phi;\] + \[c_0 = (-1)^n \det\phi.\] +\end{Task} + +\begin{Suggestion} + $\lambda$ --- собственное значение линейного оператора $\phi$ тогда и только тогда, когда $\chi_\phi(\lambda) = 0$. +\end{Suggestion} + +\begin{proof} + $\lambda$ --- собственное значение $\Leftrightarrow \exists v \neq 0 : \phi(v) = \lambda {v} \Leftrightarrow (\phi - \lambda {E})v = 0 \Leftrightarrow \Ker(\phi - \lambda {E}) \neq \{0\} + \Leftrightarrow \det(\phi - \lambda {E}) = 0 \Leftrightarrow \chi_\phi(\lambda) = 0.$ +\end{proof} + +\begin{Suggestion} + Если $F = \mathbb{C}$ и $\dim V > 0$, то любой линейный оператор имеет собственный вектор. +\end{Suggestion} + +\begin{proof} + Пусть $\phi: V \to V$ --- линейный оператор и $\chi_\phi(t)$ --- его характеристический многочлен. У него есть корень $\lambda$ --- собственное значение $\phi$, следовательно существует и собственный вектор $v$ с собственным значением $\lambda$. +\end{proof} + +\begin{Examples} + Для линейного оператора $\phi = \begin{pmatrix} + 0& -1 \\ + 1& 0 + \end{pmatrix}$ + (поворот на $90^\circ$ градусов против часовой стрелки относительно начала координат) характеристический многочлен имеет вид $\chi_\phi(x) = t^2+1$. + \\ При $F = \mathbb{R} \Rightarrow$ собственных значений нет. + \\ При $F = \mathbb{C} \Rightarrow$ собственные значения $\pm i$. +\end{Examples} + +\subsection*{Геометрическая и алгебраическая кратности} + +\begin{Def} + Пусть $\lambda$ --- собственное значение $\phi$, тогда $V_\lambda(\phi) = \{v \in V \; | \; \phi(v) = \lambda v\}$ --- собственное подпространство, то есть пространство, состоящее из собственных векторов с собственным значением $\lambda$ и нуля. +\end{Def} + +\begin{Def} + $\dim V_\lambda$ --- геометрическая кратность собственного значения $\lambda$. +\end{Def} + +\begin{Def} + Если $k$ --- кратность корня характеристического многочлена, то $k$ --- алгебраическая кратность собственного значения. +\end{Def} + +\begin{Suggestion} + Геометрическая кратность не больше алгебраической кратности. +\end{Suggestion} + +\begin{proof} + Зафиксируем базис $u_1, \ldots, u_p$ в пространстве $V_\lambda$, где $p = \dim{V_\lambda}$. Дополним базис $u_1, \ldots, u_p$ до базиса $u_1, \ldots, u_p, u_{p+1}, \ldots, u_n$ пространства $V$. Тогда матрица линейного оператора $\phi$ в + том базисе будет выглядеть следующим образом: + \begin{gather*} + A_\phi = + \begin{pmatrix*} + \begin{array}{c|c} + \l E & A \\ \hline + 0 & B + \end{array} + \end{pmatrix*}, \quad \lambda E \in M_p,\ A \in M_{n-p} + \end{gather*} + Тогда характеристический многочлен будет следующим: + \begin{gather*} + \chi_\phi(t) = (-1)^n \det (A_\phi - tE) = + \begin{vmatrix} + \begin{array}{c|c} + \begin{matrix} + \lambda - t & & 0 \\ + & \ddots & \\ + 0 & & \lambda - t + \end{matrix} + & A \\ \hline + 0 & B - tE + \end{array} + \end{vmatrix} + = (-1)^n(\lambda - t)^p\det(B - tE) + \end{gather*} + + Как видим, $\chi_\phi(t)$ имеет корень кратности хотя бы $p$, следовательно, геометрическая кратность, которая равна $p$ по условию, точно не превосходит алгебраическую. +\end{proof} + +\begin{Examples} Рассмотрим линейный оператор $\phi = \begin{pmatrix} + 2& 1 \\ + 0& 2 + \end{pmatrix}$. + + $V_2 = \langle e_1\rangle \Rightarrow$ геометрическая кратность равна 1. + + $\chi_\phi(t) = (t-2)^2 \Rightarrow$ алгебраическая кратность равна 2. +\end{Examples} + +\subsection*{Сумма и прямая сумма нескольких подпространств} + +\begin{Def} + Пусть $U_1, \ldots, U_k$ --- подпространства векторного пространства $V$. Суммой нескольких пространств называется + $$ + U_1 + \ldots + U_k = \{u_1 + \ldots + u_k \; | \; u_i \in U_i \}. \qquad (*) + $$ +\end{Def} + +\begin{Task} + $U_1+\ldots + U_k$ --- подпространство в $V$. +\end{Task} + +\begin{Def} + Сумма $(*)$ называется прямой, если из условия $\:u_1 + \ldots + u_k = 0$ следует, что $u_1 = \ldots = u_k = 0$. Обозначение: $U_1 \oplus \ldots \oplus U_k$. +\end{Def} + +\begin{Task} + Если $v \in U_1 \oplus \ldots \oplus U_k$, то существует единственный такой набор \\$u_1 \in U_1, \ldots, u_k \in U_k$, что $v = u_1 + \ldots + u_k$. +\end{Task} + +\begin{Theorem} + Следующие условия эквивалентны: + \begin{enumerate} + \item Сумма $U_1 + \ldots + U_k$ --- прямая; + \item Если $\mathbb{e}_i$ --- базис $U_i$, то $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 + \ldots + U_k;$ + \item $\dim(U_1 + \ldots + U_k) = \dim{U_1} + \ldots + \dim{U_k}.$ + \end{enumerate} +\end{Theorem} + +\begin{proof}\ +\begin{itemize} + \item[$(1) \Rightarrow (2)$] Пусть мы имеем прямую сумму $U_1 \oplus \ldots \oplus U_k$. Покажем, что $\mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 \oplus \ldots \oplus U_k$. + + Возьмем вектор $v \in U_1 \oplus \ldots \oplus U_k$ и представим его в виде суммы $v = u_1 + \ldots + u_k$, где $u_i \in U_i$. Такое разложение единственное, так как сумма прямая. Теперь представим каждый вектор этой суммы в виде линейной комбинации базиса соответствующего пространства: + $$ + v = (c^1_1e^1_1 + \ldots + c^1_{s_1}e^1_{s_1}) + \ldots + (c^k_1e^k_1 + \ldots + c^k_{s_k}e^k_{s_k}) + $$ + Здесь $e_j^i$ это $j$-ый базисный вектор в $\mathbb{e}_i$, базисе $U_i$. Соответственно, $c_j^i$ это коэффициент перед данным вектором. + + Если $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ не является базисом, то существует какая-то еще линейная комбинация вектора $v$ через эти же векторы: + $$ + v = (d^1_1e^1_1 + \ldots + d^1_{s_1}e^1_{s_1}) + \ldots + (d^k_1e^k_1 + \ldots + d^k_{s_k}e^k_{s_k}) + $$ + Вычтем одно из другого: + $$ + 0 = v - v = ((d^1_1 - c^1_1)e^1_1 + \ldots + (d^1_{s_1} - c^1_{s_1})e^1_{s_1}) + \ldots + ((d^k_1 - c^k_1) e^k_1 + \ldots + (d^k_{s_k} - c^k_{s_k})e^k_{s_k}) + $$ + + Но по определению прямой суммы, ноль представим только как сумма нулей, то есть $d^i_j$ должно равняться $c^i_j$. А это значит, что не существует никакой другой линейной комбинации вектора $v$. Что нам и требовалось. + + \item[$(2) \Rightarrow (1)$] Пусть $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 + \ldots + U_k$. Тогда представим 0 в виде суммы векторов из данных пространств: $0 = u_1 + \ldots + u_k$, где $u_i \in U_i$. Аналогично прошлому пункту, разложим векторы по базисам: + $$ + 0 = (c^1_1e^1_1 + \ldots + c^1_{s_1}e^1_{s_1}) + \ldots + (c^k_1e^k_1 + \ldots c^k_{sk}e^k_{sk}) + $$ + Но только тривиальная комбинация базисных векторов дает ноль. Следовательно, $u_1 \hm= \ldots = u_k = 0$, и наша сумма по определению прямая. + + \item[$(2) \Rightarrow (3)$] Пусть $\mathbb{e} = \mathbb{e}_1 \cup \ldots \cup \mathbb{e}_k$ --- базис $U_1 + \ldots + U_k$. Тогда: + $$ + \dim(U_1 + \ldots + U_k) = |\mathbb{e}| = |\mathbb{e_1}|+ \ldots + |\mathbb{e_k}| = \dim(U_1) + \ldots + \dim(U_k). + $$ + + \item[$(3) \Rightarrow (2)$] Пусть $\dim(U_1 + \ldots + U_k) = \dim{U_1} + \ldots + \dim{U_k}.$ + + Векторы $\mathbb{e}$ порождают сумму, следовательно, из $\mathbb{e}$ можно выделить базис суммы: + $$ + \dim(U_1 + \ldots + U_k) \leqslant |\mathbb{e}| \leqslant |\mathbb{e_1}|+ \ldots + |\mathbb{e_k}| = \dim{U_1} + \ldots + \dim{U_k}. + $$ + Но по условию $\dim(U_1 + \ldots + U_k) = \dim{U_1} + \ldots + \dim{U_k}$. Тогда $\dim(U_1 + \ldots + U_k) = |\mathbb{e}|$, и $\mathbb{e}$ это базис $U_1 + \ldots + U_k$. + \end{itemize} + \end{proof} + +\end{document} diff --git a/linear-algebra/tex/linear-algebra_23_[29.02.2016].tex b/linear-algebra/tex/linear-algebra_23_[29.02.2016].tex new file mode 100644 index 0000000..7defa93 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_23_[29.02.2016].tex @@ -0,0 +1,192 @@ +\input{header.tex} + +\begin{document} + +\section{Лекция 23 от 29.02.2016} + +\subsection*{Сумма собственных подпространств} + +Вспомним, чем закончилась прошлая лекция. + +Пусть $V$ --- векторное пространство, $U_1, \dots, U_k \subseteq V$ --- векторные подпространства. + +Сумма $U = U_1 + \ldots + U_k$ является прямой, если из условия $u_1 + \ldots + u_k = 0$ следует, что $u_1 = \ldots = u_k = 0$, где $u_i \in U_i$. Обозначение: $U = U_1 \oplus \ldots \oplus U_k$. + +\vspace{0.2cm} +Эквивалентные условия: +\begin{enumerate} +\item $U = U_1 \oplus \ldots \oplus U_k$. +\item Если $\e_i$ --- базис $U_i$, то $\e = \e_1 \cup \ldots \cup \e_k$ --- базис $U$. +\item $\dim U = \dim U_1 + \ldots + \dim U_k$. +\end{enumerate} + +Пусть $V$ --- векторное пространство над полем $F$, $\phi \in L(V)$, $\lambda_1, \ldots, \lambda_k$ --- набор собственных значений $\phi$, где $\lambda_i \neq \lambda_j$ при $i \neq j$, и $V_{\lambda_i}(\phi) \subseteq V$ --- соответствующее собственное подпространство. + +\begin{Suggestion} +Сумма $V_{\lambda_1}(\phi) + \ldots + V_{\lambda_k}(\phi)$ является прямой. +\end{Suggestion} + +\begin{proof} +Докажем индукцией по $k$. + +База: $k = 1$. Тут все ясно. + +Теперь пусть утверждение доказано для всех значений, меньших $k$. Докажем для $k$. + +Пусть $v_i \in V_{\lambda_i}(\phi)$ и пусть $v_1 + \ldots + v_k = 0$. Тогда: +\begin{gather*} +\phi(v_1 + \ldots + v_k) = \phi(0) = 0 \\ +\phi(v_1) + \ldots + \phi(v_k) = 0 \\ +\lambda_1v_1 + \ldots + \lambda_kv_k = 0 +\end{gather*} +Теперь вычтем из нижней строчки $v_1 + \ldots + v_k = 0$, домноженное на $\lambda_k$. Получим: +\begin{gather*} +(\lambda_1 - \lambda_k)v_1 + \ldots + (\lambda_k -\lambda_k)v_k = 0 \\ +(\lambda_1 - \lambda_k)v_1 + \ldots + (\lambda_{k-1} -\lambda_k)v_{k-1} + 0v_k= 0 +\end{gather*} +Но из предположения индукции, а также потому что $\lambda_i \neq \lambda_j$ при $i \neq j$, следует, что $v_1 = \ldots \hm= v_{k-1} = 0$. Но тогда и $v_k = 0$. + +Следовательно, сумма прямая, что нам и требовалось. +\end{proof} + +\subsection*{Диагонализуемость} + +\begin{Consequence} +Если характеристический многочлен имеет ровно $n$ попарно различных корней, где $n = \dim V$, то $\phi$ диагонализируем. +\end{Consequence} + +\begin{proof} +Пусть $\l_1, \ldots, \l_n$ --- корни $\chi_\phi(t)$, $\l_i \neq \l_j$. Тогда для всех $i$ выполняется, что $V_{\l_i}(\phi) \neq \{0\}$ и, следовательно, $\dim V_{\l_i}(\phi) = 1$. Но так как сумма $V_{\l_1}(\phi) + \ldots + V_{\l_k}(\phi)$ --- прямая, то $\dim (V_{\l_1}(\phi) + \ldots + V_{\l_k}(\phi)) = \dim V_{\l_1}(\phi) + \ldots + \dim V_{\l_k}(\phi) = n$. Иными словами, $V = V_{\l_1}(\phi) \oplus \ldots \oplus V_{\l_k}(\phi)$. + +Выберем произвольные $v_i \in V_{\l_i}\setminus\{0\}$. Тогда $(v_1, \ldots, v_n)$ будет базисом в $V$. И так как все $v_i$~--- собственные значения для $\phi$, то $\phi$ диагонализируем. +\end{proof} + +\begin{Theorem}[Критерий диагонализируемости - 2] +Линейный оператор $\phi$ диагонализируем тогда и только тогда, когда +\begin{enumerate} +\item $\chi_\phi(t)$ разлагается на линейные множители; +\item Если $\chi_\phi(t) = (t - \l_1)^{k_1}\dots(t - \l_s)^{k_s}$, где $\l_i \neq \l_j$ при $i \neq j$, то $\dim V_{\l_i}(\phi) = k_i \ \forall i$ (то есть для любого собственного значения $V$ равны геометрическая и алгебраическая кратности). +\end{enumerate} +\end{Theorem} + +\begin{proof}\ +\begin{itemize} +\item[$\Rightarrow$] Так как $\phi$ --- диагонализируем, то существует базис $\e = (e_1, \ldots, e_n)$ такой, что: +\begin{gather*} +A(\phi, \e) = +\begin{pmatrix*} +\mu_1 & & 0 \\ +& \ddots & \\ +0 & & \mu_n +\end{pmatrix*} = \diag(\mu_1, \ldots, \mu_n). +\end{gather*} +Тогда: +$$ +\chi_\phi(t) = (-1)^n +\begin{vmatrix} +\mu_1-t & & 0 \\ +& \ddots & \\ +0 & & \mu_n-t +\end{vmatrix} = (-1)^n(\mu_1 - t)\ldots(\mu_n - t) = (t - \mu_1)\ldots(t-\mu_n). +$$ +Итого, первое условие выполняется. + +Теперь перепишем характеристический многочлен в виде $\chi_\phi(t) = (t - \l_1)^{k_1}\dots(t - \l_s)^{k_s}$, где $\l_i \neq \l_j$ при $i \neq j$ и $\{ \l_1, \ldots, \l_s \} = \{\mu_1, \ldots, \mu_n \}$. Тогда $V_{\l_i} \supseteq \langle e_j \mid \mu_j = \l_i \rangle$, следовательно, $\dim V_{\l_i}(\phi) \geqslant k_i$. Но мы знаем, что $\dim V_{\l_i} \leqslant k_i$! Значит, $\dim V_{\l_i}(\phi) = k_i$. + +\item[$\Leftarrow$] Так как $V_{\l_1}(\phi) + \ldots + V_{\l_s}(\phi)$ --- прямая, то $\dim (V_{\l_1}(\phi) + \ldots + V_{\l_s}(\phi)) = k_1 + \ldots + k_s = n$. + +Пусть $\e_i$ --- базис в $V_{\l_i}$. Тогда $\e_1 \cup \ldots \cup \e_s$ --- базис в $V$. То есть мы нашли базис из собственных векторов, следовательно, $\phi$ диагонализируем. +\end{itemize} +\end{proof} + +\subsection*{Инвариантные подпространства в $\R^n$} + +Пусть $V$ --- векторное пространство над полем $\C$, $\phi \in L(V)$. Тогда в $V$ есть собственный вектор (или одномерное $\phi$--инвариантное пространство). + +\vspace{0.2cm} +Теперь пусть $V$ --- векторное пространство над полем $\R$, $\phi \in L(V)$. + +\begin{Theorem} +Существует одномерное или двумерное $\phi$--инвариантное подпространство в $V$. +\end{Theorem} + +\begin{proof} +Пусть $\e = (e_1, \ldots, e_n)$ --- базис в $V$. Комплексифицируем $V$. +\begin{gather*} +V^{\C} = \{ u + iv \mid u, v \in V \} \\ +V^{\C} \supset V = \{u + i\cdot0 \mid u \in V \} +\end{gather*} +Рассмотрим линейный оператор $\phi_\C \in L(V^\C)$, заданный как $\phi_\C(e_i) = \phi(e_i),\ \forall i$. Значит, $e_1, \ldots, e_n$~--- базис в $V^\C$. Следовательно, $\chi_{\phi_\C}(t) = \chi_\phi(t)$, так как $A(\phi_\C, \e) = A(\phi, \e)$. + +\underline{Случай 1}: $\chi_\phi(t)$ имеет хотя бы один действительный корень. Отсюда следует, что в $V$ есть собственный вектор, что равносильно существованию одномерного $\phi$--инвариантного подпространства (тогда $V^\C$ нам не нужно). + +\underline{Случай 2}: $\chi_\phi$ не имеет действительных корней. Пусть $\l + i\mu$ --- некоторый корень $\chi_\phi(t) $, который, напомним, равен $\chi_{\phi_\C}(t)$. Тогда у $\phi_\C$ существует собственный вектор $u+iv \in V^\C$ с собственным значением $\l + i\mu$ такой, что: +\begin{gather*} +\phi_\C(u+iv) = (\l + i\mu)(u+iv)\\ +\phi_\C(u + iv) = \phi_\C(u) + i\phi_\C(v) = \phi(u) + i\phi(v) \\ +(\l + i\mu)(u + iv) = \l \mu - \mu v + i(\mu u + \l v) +\end{gather*} +Сравнивая два последних равенства, получаем: +\begin{gather*} +\phi(u) = \l u - \mu v \\ +\phi(v) = \mu u + \l v +\end{gather*} +Следовательно, $\langle u, v \rangle$ --- $\phi$--инвариантное подпространство в $V$, двумерное если $u$ и $v$ линейно независимы и одномерное в противном случае. +\end{proof} + +\begin{Task} +Когда нет действительных корней (второй случай), $\phi$-инвариантное подпространство в $V$ всегда двумерно. +\end{Task} + +\begin{Examples} +Поворот на $\alpha$ в $\R^2$: $ +\begin{pmatrix} +\cos \alpha & -\sin \alpha \\ +\sin \alpha & \cos \alpha +\end{pmatrix} +$. Тогда $u = e_1$, $v = e_2$, $\l + i\mu = \cos \alpha + i\sin \alpha$. +\end{Examples} + +Пусть $V$ --- векторное пространство над $F$, $\dim V = n$. + +\vspace{0.2cm} +\underline{Операции над $L(V)$}: +\begin{enumerate} +\item Сложение: $(\phi + \psi)(v) = \phi(v) + \psi(v)$. +\item Умножение на скаляр: $(\alpha\phi)(v) = \alpha\phi(v)$. +\item Умножение: $(\phi\psi)(v) = \phi(\psi(v))$. +\end{enumerate} +В частности, для любого $P(x) \in F[x]$, $P(x) = a_nx^n + \ldots + a_1x + a_0$ и для любого $\phi \in L(V)$ определен линейный оператор $P(\phi)\in L(V)$: $P(\phi) = a_n \phi^n + \ldots + a_1\phi + a_0\id$. + +\subsection*{Корневые векторы и корневые подпространства} + +\begin{Def} +Вектор $v \in V$ называется корневым вектором линейного оператора $\phi$, отвечающим значению $\l \in F$, если существует $m \geqslant 0$ такое, что $(\phi - \l\id)^m(v) = 0$. + +Наименьшее такое $m$ называют высотой корневого вектора $v$. +\end{Def} +\ \\ +\begin{Comment}\ +\begin{enumerate} +\item Вектор $v = 0$ для любого $\phi$ имеет высоту 0. +\item Корневые векторы высоты 1 --- это в точности собственные векторы. +\end{enumerate} +\end{Comment} + +\begin{Examples} +$V = F[x]_{\leqslant n}$, $\Delta: f \rightarrow f'$. Здесь $\l = 0$ --- единственное собственное значение. Все векторы --- корневые, отвечающие $\l = 0$. +\end{Examples} + +\begin{Def} +Множество $V^\l(\phi) = \{ v \in V \mid \exists m \geqslant 0 : (\phi - \l\id)^m(v) = 0 \}$ называется корневым пространством для $\l \in F$. +\end{Def} + +\begin{Task} +$V^\l(\phi)$ --- подпространство в $V$. +\end{Task} + +\begin{Comment} +$V_\l(\phi) \subseteq V^\l(\phi) \ \forall \l \in F$. +\end{Comment} + +\end{document} diff --git a/linear-algebra/tex/linear-algebra_24_[14.03.2016].tex b/linear-algebra/tex/linear-algebra_24_[14.03.2016].tex new file mode 100644 index 0000000..df9bc63 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_24_[14.03.2016].tex @@ -0,0 +1,211 @@ +\input{header.tex} + +\begin{document} +\section{Лекция 24 от 14.03.2016} + +\subsection*{Корневые подпространства} + +Вспомним конец прошлой лекции. + +Пусть $V$ --- векторное пространство над полем $F$, $\phi \in L(V)$ --- линейный оператор. + +Вектор $v \in V$ --- корневой для $\phi$, отвечающий собственному значению $\lambda \in F$ тогда и только тогда, когда существует $m \geqslant 0 $ такое, что $(\phi - \lambda \id)^{m}(v) = 0.$ Высотой корневого вектора называется наименьшее такое $m$. + +Корневым подпространством называется пространство из корневых векторов, соответствующих одному значению $\lambda$. Другими словами, $V^{\lambda}(\phi) = \{v \in V \; \vline \; \exists m \geqslant 0 : (\phi - \lambda \id)^{m}(v) = 0\}$. Поскольку собственный вектор является корневым вектором высоты 1, то собственное подпространство включено в корневое подпространство с тем же значением: $V_{\lambda}(\phi) \subseteq V^{\lambda}(\phi).$ + +\begin{Suggestion} + Корневое подпространство нетривиально тогда и только тогда, когда $\lambda$ является собственным значением. Другими словами, $V^{\lambda}(\phi) \neq \{0\} + \Leftrightarrow \chi_{\phi}(\lambda) = 0.$ +\end{Suggestion} +\begin{proof}\ + \begin{itemize} + \item[$\Leftarrow$] + $\chi_{\phi}(\lambda) = 0 \Rightarrow V_{\lambda}(\phi) \neq \{0\} \Rightarrow V^{\lambda}(\phi) \neq \{0\}$, так как $V^{\lambda}(\phi) \supset V_{\lambda}(\phi)$. + \item[$\Rightarrow$] + Пусть $V^{\lambda}(\phi) \neq \{0\} \Rightarrow \exists v \neq 0 \in V^{\lambda}(\phi) \Rightarrow \exists m \geqslant 1: (\phi - \lambda \id)^{m}(v) = 0$. \\ + Рассмотрим $u = (\phi - \lambda \id)^{m - 1}(v) \neq 0,$ тогда: + \begin{gather*} + (\phi - \lambda \id)(u) = (\phi - \lambda \id)(\phi - \lambda \id)^{m - 1}(v) = (\phi - \lambda \id)^{m}(v) = 0. + \end{gather*} + То есть вектор $u$ --- это вектор, для которого $(\phi - \lambda \id)(u) = 0$, то есть собственный вектор. Следовательно $\lambda$ --- собственное значение. + \end{itemize} +\end{proof} +\begin{Suggestion} + Для любого собственного значения $\lambda \in F$ подпространство $V^{\lambda}(\phi)$ инвариантно относительно $\phi$. +\end{Suggestion} +\begin{proof} + Пусть $v$ --- корневой вектор высоты $m$. Докажем, что $\phi(v)$ --- также корневой вектор. + + Заметим, что если $u = (\phi - \lambda \id)(v),$ то $u$ --- корневой вектор высоты $m - 1$, и, соответственно, лежит в корневом подпространстве: + $$ + u = (\phi - \lambda \id)(v) = \phi(v) - \lambda{v} \in V^{\lambda}(\phi). + $$ + Мы получили, что + $\phi(v) \in \lambda{v} + V^{\lambda}(\phi).$ + Но $\lambda{v} \in V^{\lambda}(\phi)$, то есть $\lambda{v} + V^{\lambda}(\phi) = V^{\lambda}(\phi)$ и $\phi(v) \in V^{\lambda}(\phi)$. Что и означает, что пространство инвариантно относительно оператора $\phi$. +\end{proof} +Положим для краткости, что $\phi - \lambda \id = \phi_{\lambda}$. + +\vspace{0.2cm} +Заметим, что ядра степеней линейного оператора <<вкладываются>> друг в друга --- те векторы, которые стали нулевыми при применении линейного оператора $\phi^k_\lambda$, при применении линейного оператора $\phi_\lambda$ ещё раз так и остаются нулевыми, а также <<добиваются>> (переводятся в нулевые) некоторые ранее ненулевые векторы. Итого, получаем следующее: +\[ +V_\lambda(\phi) = \ker\phi_\lambda \subset \ker\phi^2_\lambda \subset \ldots \subset \ker\phi^m_\lambda +\subset \ldots +\] +Причём существует такое $m$, что $\ker\phi^m_\lambda = \ker\phi^{m + 1}_\lambda$, так как $V$ --- конечномерно и размерность его не может увеличиваться бесконечно. Выберем наименьшее такое $m$. +\begin{Task} + Доказать, что для любого $s \geqslant 0$ выполняется равенство $\ker\phi^m_\lambda = \ker\phi^{m + s}_\lambda.$ +\end{Task} +Заметим также, что $V^{\lambda}(\phi) = \ker\phi^m_\lambda.$ Пусть $k_i = \dim\ker\phi^i_\lambda$. +Тогда: + $$ \dim{V_{\lambda}(\phi)} = k_1 < k_2 < \ldots < k_m = \dim{V^{\lambda}(\phi)}. + $$ + + Будем обозначать как $\limref{\phi}{V}$ ограничение линейного оператора на пространство $V$. + +\begin{Suggestion}\ + \begin{enumerate} + \item Характеристический многочлен линейного отображения $\phi \; \vline_{V^{\lambda}(\phi)}$ равен $(t - \lambda)^{k_m}$. + \item Если $\mu \neq \lambda$, то линейный оператор $\phi - \mu \id$ невырожден на $V^{\lambda}(\phi)$. + \end{enumerate} +\end{Suggestion} + +\begin{proof} + Напомним, что $k_i = \dim \ker \phi^i_\l$, для $i = 1, \ldots, m$. Пусть также $k_0 = 0$. + + Выберем базис $\mathbb{e} = (e_1, \ldots, e_{k_m})$ в $V^{\lambda}(\phi)$ так, чтобы + $(e_1, \ldots, e_{k_i})$ также был базисом в $\ker\phi^{i}_\lambda$. Тогда матрица ограничения $\phi_\l$ на $V^{\l}(\phi)$ в этом базисе имеет блочный вид: + \begin{gather*} + A(\limref{\phi_\l}{V^\l(\phi)}, \e) = + \begin{pmatrix} + 0 & * & * & \ldots & * & * \\ + 0 & 0 & * & \ldots & * & * \\ + 0 & 0 & 0 & \ldots & * & * \\ + \vdots &\vdots &\vdots & \ddots & \vdots & \vdots\\ + 0 & 0 & 0 & \ldots & 0 & * \\ + 0 & 0 & 0 &\ldots & 0 & 0 + \end{pmatrix}, + \end{gather*} + где $(i, j)$-ый блок --- это матрица $\Mat_{(k_i - k_{i - 1}) \times (k_j - k_{j - 1})}$. + + Но тогда: + \begin{gather*} + A(\limref{\phi}{V^\l(\phi)}, \e) = A(\limref{\phi_\l}{V^\l(\phi)}, \e) + \l E = + \begin{pmatrix} + A_1 & * & * & \ldots & * & * \\ + 0 & A_2 & * & \ldots & * & * \\ + 0 & 0 & A_3 & \ldots & * & * \\ + \vdots &\vdots &\vdots & \ddots & \vdots & \vdots\\ + 0 & 0 & 0 & \ldots & A_{m-1} & * \\ + 0 & 0 & 0 & \ldots & 0 & A_m + \end{pmatrix}, \quad \text{где } A_i = \lambda E_{k_i - k_{i - 1}} \quad (*) + \end{gather*} + А значит, характеристический многочлен линейного отображения $\limref{\phi}{V^\l(\phi)}$ равен $(t - \lambda)^{k_m}$. + + Теперь докажем невырожденность линейного оператора $(\phi - \mu\id)$ при $\mu \neq \l$. + + Рассмотрим матрицу ограничения этого оператора на корневое подпространство: + $$ + A(\limref{(\phi - \mu \id)}{V^\l(\phi)}, \e) = A(\limref{\phi}{V^\l(\phi)}, \e) - \mu E. + $$ + + Она имеет вид $(*)$, где $A_i = (\lambda - \mu)E_{k_i}$. Следовательно, + $$ + \det(\limref{(\phi - \mu \id)}{V^\l(\phi)}) = (\lambda - \mu)^{k_m} \neq 0. + $$ + Что и означает, что линейный оператор невырожден. +\end{proof} + +\begin{Suggestion} + Если $\lambda$ -- собственное значение $\phi$, то $\dim{V^{\lambda}(\phi)}$ равен кратности + $\lambda$ как корня многочлена $\chi_\phi(t)$. +\end{Suggestion} + +\begin{proof} + Пусть $(e_1, \ldots, e_k)$ --- базис $V^{\lambda}(\phi),\ k = \dim{V^{\lambda}(\phi)}$. Дополним $(e_1, \ldots, e_k)$ до базиса $\mathbb{e} = (e_1, \ldots, e_n)$ всего пространства $V$. Тогда матрица линейного оператора имеет следующий вид: + \begin{gather*} + A_\phi = + \begin{pmatrix} + \begin{array}{c|c} + B & * \\ \hline + 0 & C + \end{array} + \end{pmatrix},\quad B \in M_k,\ C \in M_{n-k} \\ + \chi_\phi(t) = \det(tE - A) = \det(tE - B)\det(tE - C). + \end{gather*} + + Заметим, что $\det(tE - B)$ --- это характеристический многочлен $\limref{\phi}{V^\l(\phi)}$, следовательно, + $$ + \chi_\phi(t) = (t - \lambda)^k\det(tE - C). + $$ + Осталось показать, что $\lambda$ --- не корень $\det(tE - C)$. + + Пусть $W = \langle e_{k+1}, \ldots, e_n \rangle$. Тогда рассмотрим линейный оператор $\psi \in L(W)$, у которого матрица в базисе $(e_{k+1}, \ldots, e_n)$ есть $C$. Предположим, что $\det(\lambda E - C) = 0.$ Это значит, что $\lambda$~--- собственное значение для $\psi$ и существует вектор $w \in W,\ w \neq 0$ такой, что $\psi(w) = \lambda w$. + + Тогда: + \begin{gather*} + \phi(w) = \l w + u, \quad u \in V^\l(\phi) \\ + \phi(w) - \l w \in V^\l(\phi) \\ + (\phi - \l\id)(w) \in V^\l(\phi) \Rightarrow w \in V^\l(\phi) + \end{gather*} + Получили противоречие. Значит, $\l$ --- не корень $\det(tE - C)$. +\end{proof} + +\begin{Consequence} + $V^{\lambda}(\phi) = \ker\phi^s_\lambda$, где $s$ --- кратность $\lambda$ как корня многочлена $\chi_\phi(t)$. +\end{Consequence} + +\begin{Suggestion} + Если $\lambda_1, \ldots, \lambda_k$, где $\lambda_i \neq \lambda_j$ при $i \neq j$ --- собственные значения $\phi$, то сумма $V^{\lambda_1}(\phi) + \ldots + V^{\lambda_k}(\phi)$ --- прямая. +\end{Suggestion} + +\begin{proof} + Докажем индукцией по $k$. + + База при $k = 1$ --- ясно. + + Теперь пусть утверждение доказано для всех значений, меньших $k$. Докажем для $k$. + + Выберем векторы $v_i \in V^{\lambda_i}(\phi)$ такие, что $v_1 + \ldots + v_k = 0$. Пусть $m$ --- высота вектора $v_k$. Тогда применим к нашей сумме оператор $\phi^m_{\lambda_k}$, получив следующее: + \[ + \phi^m_{\lambda_k}(v_1) + \ldots + \phi^m_{\lambda_k}(v_{k-1}) + \phi^m_{\lambda_k}(v_k) = 0. + \] + С другой стороны, $ \phi^m_{\lambda_k}(v_k) = 0$, то есть: + \[ + \phi^m_{\lambda_k}(v_1) + \ldots + \phi^m_{\lambda_k}(v_{k-1}) + \phi^m_{\lambda_k}(v_k) = \phi^m_{\lambda_k}(v_1) + \ldots + \phi^m_{\lambda_k}(v_{k-1}) = 0. + \] + Тогда по предположению индукции $\phi^m_{\lambda_k}(v_1) = \ldots = \phi^m_{\lambda_k}(v_{k-1}) = 0$. Hо + $ \limref{\phi_{\l_k}}{V^{\l_i}(\phi)}$ невырожден и, следовательно, обратим при $i \neq k$. Значит, $v_1 = \ldots = v_{k-1} = 0$. Но тогда и $v_k = 0$. + + Следовательно, сумма прямая, что нам и требовалось. +\end{proof} + +\begin{Theorem} + Если характеристический многочлен $\chi_\phi(t)$ разлагается на линейные множители, причём $\chi_\phi(t) = (t - \lambda_1)^{k_1}\ldots(t - \lambda_s)^{k_s}$, то $V = \bigoplus_{i = 1}^s V^{\lambda_i}(\phi)$. +\end{Theorem} + +\begin{proof} + Так как сумма $ V^{\lambda_1}(\phi) + \ldots + V^{\lambda_s}(\phi)$ прямая и для любого $i$ выполняется, что $\dim(V^{\lambda_i}(\phi)) = k_i$, то: + $$ + \dim(V^{\lambda_1}(\phi) + \ldots + V^{\lambda_s}(\phi)) = k_1 + \ldots + k_s = \dim{V}. + $$ + Следовательно, $V = \bigoplus_{i = 1}^s V^{\lambda_i}(\phi)$. +\end{proof} + +\subsection{Жордановы клетки} +\begin{Def} +Пусть $\lambda \in F$. \textbf{Жордановой клеткой} порядка $n$, отвечающей значению $\lambda$, называется матрица вида: +\begin{gather*} +J_\l^n = +\begin{pmatrix} +\l & 1 & 0 & \ldots & 0 & 0 \\ +0 & \l & 1 & \ldots & 0 & 0 \\ +0 & 0 & \l & \ddots & 0 & 0 \\ +\vdots & \vdots & \vdots & \ddots & \ddots & \vdots \\ +0 & 0 & 0 & \ldots & \l & 1 \\ +0 & 0 & 0 & \ldots & 0 & \l +\end{pmatrix} \in M_n(F). +\end{gather*} +\end{Def} + +\end{document} diff --git a/linear-algebra/tex/linear-algebra_25_[21.03.2016].tex b/linear-algebra/tex/linear-algebra_25_[21.03.2016].tex new file mode 100644 index 0000000..21312fa --- /dev/null +++ b/linear-algebra/tex/linear-algebra_25_[21.03.2016].tex @@ -0,0 +1,200 @@ +\input{header.tex} + +\begin{document} + +\section{Лекция 25 от 21.03.2016} + +\subsection*{Жорданова нормальная форма} +Пусть $V$ --- векторное пространство, $\phi$ --- линейный оператор. + +\begin{Theorem}[Жорданова нормальная форма линейного оператора] +Пусть $\chi_\phi(t)$ разлагается на линейные множители. Тогда существует базис $\e$ в $V$ такой, что +\begin{gather*} +A(\phi, \e) = +\begin{pmatrix*} +J_{\mu_1}^{n_1} & 0 & \ldots & 0 \\ +0 & J_{\mu_2}^{n_2} & \ldots & 0 \\ +\vdots & \vdots & \ddots & \vdots \\ +0 & 0 & \ldots & J_{\mu_p}^{n_p} +\end{pmatrix*} \quad (*) +\end{gather*} +Кроме того, матрица $(*)$ определена однозначно с точностью до перестановок жордановых клеток. +\end{Theorem} + +\begin{Def} +Матрица $(*)$ называется жордановой нормальной формой линейного оператора. +\end{Def} + +\begin{Consequence} +В векторном пространстве над полем комплексных чисел для любого линейного оператора существует жорданова нормальная форма. +\end{Consequence} + +\textbf{Схема построения:} +\begin{itemize} +\item[Шаг 1:] Разложим характеристический многочлен: $\chi_\phi(t) = (t - \l_1)^{k_1}\ldots(t-\l_s)^{k_s}$, где $\l_i \neq \l_j$ при $i \neq j$. Тогда, по доказанной на прошлой лекции теореме, $V = \bigoplus_{i = 1}^sV^{\l_i}(\phi)$, причем $\dim V^{\l_i}(\phi) = k_i$. + +Введем отображение $\psi_i = \limref{\phi}{V^{\l_i}(\phi)} \in L(V^{\l_i}(\phi))$. Тогда $\chi_{\psi_i}(t) = (t - \l_i)^{k_i}$. Также введем $\e_i$~--- базис $V^{\l_i}(\phi)$. Пусть $\e = \e_1 \cup \ldots \cup \e_s$. + +Тогда: +\begin{gather*} +A(\phi, \e) = +\begin{pmatrix*} +A_1 & 0 & \ldots & 0 \\ +0 & A_2 & \ldots & 0 \\ +\vdots & \vdots & \ddots & \vdots \\ +0 & 0 & \ldots & A_s +\end{pmatrix*}, \quad \text{где } A_i = A(\psi_i, \e_i) \in M_{k_i}. +\end{gather*} + +\item[Шаг 2:] Для любого $i$ можно выбрать базис $\e_i$ так, чтобы +\begin{gather*} +A_i = +\begin{pmatrix*} +J_{\l_i}^{m_{i1}} & 0 & \ldots & 0 \\ +0 & J_{\l_i}^{m_{i2}} & \ldots & 0 \\ +\vdots & \vdots & \ddots & \vdots \\ +0 & 0 & \ldots & J_{\l_i}^{m_{iq}} +\end{pmatrix*}, \quad m_{i1} + \ldots + m_{iq} = k_i +\end{gather*} +Обратите внимание, что здесь все жордановы клетки отвечают одному значению $\l_i$, но при этом матрица $A_i$ целиком жорданову клетку не образует, так как линия единиц над диагональю из $\l$ разрывна там, где состыковываются две клетки: +\begin{gather*} +\begin{pmatrix*} +\begin{array}{c|c} +\begin{matrix} +\l_i & 1 \\ +& \ddots & \ddots\\ +& & \l_i & 1 \\ +& & & \l_i +\end{matrix} & +\begin{matrix} +\\ +\\ +\\ +0&&&&&&& +\end{matrix} +\\ \hline & +\begin{matrix} +\l_i & 1 \\ +& \ddots & \ddots\\ +& & \l_i & 1 \\ +& & & \l_i +\end{matrix} +\end{array} +\end{pmatrix*} +\end{gather*} + +Тогда жорданова нормальная форма матрицы $A(\phi, \e)$ составляется из таких матриц $A_i$: +\setcounter{MaxMatrixCols}{13} +\begin{gather*} +A(\phi, \e) = +\begin{pmatrix*} +J_{\l_1}^{m_{11}} \\ +& J_{\l_1}^{m_{12}} \\ +&&\ddots\\ +&&& J_{\l_2}^{m_{21}} \\ +&&&& \ddots \\ +&&&&& J_{\l_s}^{m_{s1}} \\ +&&&&&& \ddots \\ +&&&&&&& J_{\l_s}^{m_{sk_i}} +\end{pmatrix*} +\end{gather*} + +\item[Шаг 3:] Осталось только заметить, что для любого $i = 1, \ldots, s$ число и порядок жордановых клеток однозначно определены из последовательности чисел: +\begin{align*} +&\dim \ker (\psi_i - \l_i \id) \\ +&\dim \ker (\psi_i - \l_i \id) ^ 2 \\ +&\ldots \\ +&\dim \ker (\psi_i - \l_i \id)^{k_i} +\end{align*} + +Откуда и следует однозначность представления в виде жордановой нормальной формы (с точностью до перестановки жордановых клеток). +\end{itemize} + +\subsection*{Линейные функции на векторном пространстве} +Начнем с примера. Рассмотрим функцию $f \colon \R^n \rightarrow \R$. + +Пусть $x_0 \in \R^n$ и $y = \begin{pmatrix}y_1 \\ \vdots \\ y_n\end{pmatrix} \in\R^n$ --- приращение, то есть $x = x_0 + y$. Если функция достаточно хорошая, то есть дважды дифференцируема в точке $x$, то +\begin{gather*} +f(x) = f(x_0) + a_1y_1 + \ldots + a_ny_n + b_{11}y_1^2 + \ldots + b_{ij}y_iy_j +\ldots + b_{nn}y_n^2 + \overline{o}(|y|^2). +\end{gather*} + +Сумма $a_1y_1 + \ldots + a_ny_n$ называется линейной формой, а сумма $b_{11}y_1^2 + \ldots \hm+ b_{ij}y_iy_j + \ldots + b_{nn}y_n^2$~--- квадратичной формой. + +Теперь дадим строгое определение: +\begin{Def} +Линейной функцией (формой, функционалом) на векторном пространстве $V$ называется всякое линейное отображение $\sigma \colon V \rightarrow F$. + +Обозначение: $V^* = \Hom(V, F)$. +\end{Def} + +В этом определении $F$ фактически рассматривается как одномерное векторного пространство. + +\begin{Comment} +Функционалом принято называть, когда векторное пространство состоит из функций. +\end{Comment} + +\begin{Examples}\ +\begin{enumerate} +\item $\alpha \colon \R^n \rightarrow \R;\ \phi(v) = \langle v, e \rangle$ --- скалярное произведение с некоторым фиксированным $e$. +\item $\alpha \colon \mathcal{F}(X, F) \rightarrow F;\ \alpha(f) = f(x_0)$. Здесь $\mathcal{F}(X, F) = \{f \colon X \rightarrow F \}$. +\item $\alpha \colon C[a, b] \rightarrow \R;\ \alpha(f) = \int_a^b f(x) dx$. +\item $\alpha \colon M_n(F) \rightarrow F;\ \alpha(X) = \mathrm{tr}A$. +\end{enumerate} +\end{Examples} + +\begin{Def} +Пространство $V^*$ называется сопряженным (двойственным) к $V$. +\end{Def} + +Пусть $\e = (e_1, \ldots, e_n)$ --- базис $V$. Тогда он определяет изоморфизм $\phi \colon V^* \to \Mat_{1\times n}$, \\$\alpha \mapsto (\alpha_1, \ldots, \alpha_n)$, где $\alpha_i = \phi(e_i)$ и $\alpha$ --- линейная функция. При этом, если $x = x_1e_1 + \ldots + x_ne_n$, то $\alpha(x) = (\alpha_1, \ldots, \alpha_n)\begin{pmatrix}x_1\\ \vdots \\ x_n\end{pmatrix}$. + +\begin{Consequence} +$\dim V^* = n$. +\end{Consequence} + +Пусть $\e = (e_1, \ldots, e_n)$ --- базис $V$. Рассмотрим линейные функции $\eps_1, \ldots, \eps_n$ такие, что $\eps_i(e_j) =~\delta_{ij}$, где $\delta_{ij} = +\begin{cases} +1, & i = j \\ +0, & i \neq j +\end{cases} +$ --- символ Кронекера. То есть $\eps_i = (\delta_{i1}, \ldots, \delta_{ii}, \ldots, \delta_{in}) = (0, \ldots, 1, \ldots, 0)$. + +\begin{Suggestion} +$(\eps_1, \ldots, \eps_n)$ --- базис в $V^*$. +\end{Suggestion} + +\begin{proof} +Возьмем любое $\alpha \in V^*$. Положим $a_i = \alpha(e_i)$. Тогда $\alpha = a_1\eps_1 + \ldots + a_n\eps_n$. То есть мы получили, что через $(\eps_1, \ldots, \eps_n)$ действительно можно выразить любое $\alpha$. + +Теперь покажем, что $\eps_1, \ldots, \eps_n$ --- линейно независимы. Пусть $a_1\eps_1 + \ldots + a_n\eps_n = 0,\ a_i \in F$. Применив эту функцию к $e_i$, получим, что $a_1\eps_1(e_1) + \ldots + a_n\eps_n(e_i) = 0$. Отсюда следует, что $a_i = 0$, а все остальные $a_j$, при $j \neq i$, равны нулю в силу определения $\eps_j$. Итого, $a_1 = \ldots \hm= a_n = 0$, что и доказывает линейную независимость. +\end{proof} + +\begin{Def} +Базис $(\eps_1, \ldots, \eps_n)$ называется сопряженным к $\e$ базисом. +\end{Def} + +\begin{Task} +Всякий базис $V^*$ сопряжен некоторому базису $V$. +\end{Task} + +\subsection*{Билинейные функции на векторном пространстве} + +\begin{Def} +Билинейной функцией (формой) на векторном пространстве $V$ называется всякое билинейное отображение $\beta \colon V \times V \rightarrow F$. То есть это отображение, линейное по каждому аргументу: +\begin{enumerate} +\item $\beta(x_1 + x_2, y) = \beta(x_1, y) + \beta(x_2, y)$; +\item $\beta(\l x, y) = \l\beta(x, y)$; +\item $\beta(x, y_1 + y_2) = \beta(x, y_1) + \beta(x, y_2)$; +\item $\beta(x, \l y) = \l\beta(x, y)$. +\end{enumerate} +\end{Def} + +\begin{Examples}\ +\begin{enumerate} +\item $V = \R^n,\ \beta(x, y) = \langle x, y \rangle$ --- скалярное произведение. +\item $V = \R^2,\ \beta(x, y) = \begin{vmatrix}x_1 & y_1 \\ x_2 & y_2\end{vmatrix}$. +\item $V = C[a, b],\ \beta(f, g) = \int_a^bf(x)g(x)dx$. +\end{enumerate} +\end{Examples} + +\end{document} diff --git a/linear-algebra/tex/linear-algebra_26_[06.04.2016].tex b/linear-algebra/tex/linear-algebra_26_[06.04.2016].tex new file mode 100644 index 0000000..efcf5a7 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_26_[06.04.2016].tex @@ -0,0 +1,193 @@ +\input{header.tex} + +\begin{document} +\section{Лекция 26 от 06.04.2016} + +\subsection*{Матрицы билинейных функций} +Пусть $V$ --- векторное пространство, $\dim V < \infty$, $\beta \colon V \times V \rightarrow F$ --- билинейная функция. + +\begin{Def} +Матрицей билинейной функции в базисе $\e$ называется матрица $B = (b_{ij})$, где $b_{ij} = \beta(e_i, e_j)$. Обозначение: $B(\beta, \e)$. +\end{Def} + +Пусть $x = x_1e_1 + \ldots + x_ne_n \in V$ и $y = y_1e_1 + \ldots + y_ne_n \in V$. Тогда: +\begin{gather*} +\beta(x, y) = \beta\left(\sum_{i = 1}^{n}x_ie_i, \sum_{j = 1}^{n}y_je_j\right) = \sum_{i = 1}^{n} x_i\beta\left(e_i, \sum_{j = 1}^{n}y_je_j\right) = \\ += \sum_{i = 1}^{n}x_i\sum_{j = 1}^{n}y_j\beta(e_i, e_j) = \sum_{i = 1}^{n}\sum_{j = 1}^{n}x_ib_{ij}y_j = \\ += (x_1, \ldots, x_n)B \vvector{y} \quad (*) +\end{gather*} + +\begin{Suggestion}\ +\begin{enumerate} +\item Всякая билинейная функция однозначно определяется своей матрицей в базисе $\e$ (и, следовательно, в любом другом базисе). +\item Для любой матрицы $B \in M_n(F)$ существует единственная билинейная функция $\beta$ такая, что $B = B(\beta, \e)$. +\end{enumerate} +\end{Suggestion} + +\begin{proof}\ +\begin{enumerate} +\item Уже доказано, это следует из формулы $(*)$. +\item Определим $\beta$ по формуле $(*)$. Тогда $\beta$ --- это билинейная функция на $V$ и ее матрица есть в точности $B$. Единственность следует из все той же формулы. +\end{enumerate} +\end{proof} + +\begin{Comment} +Эта биекция не имеет никакого отношения к биекции линейных операторов с квадратными матрицами. +\end{Comment} + +Пусть $\e = (e_1, \ldots, e_n)$ и $\e' = (e'_1, \ldots, e'_n)$ --- два базиса $V$, $\beta$ --- билинейная функция на $V$. Пусть также $\e' = \e C$, где $C$ --- матрица перехода, также $B(\beta, \e) = B$ и $B(\beta, \e') = B'$. + +\begin{Suggestion} +$B' = C^TBC$. +\end{Suggestion} + +\begin{proof} +Рассмотрим представление вектора $x \in V$ в обоих базисах. +\begin{gather*} +\begin{aligned} +x = x_1e_1 + \ldots + x_ne_n = (e_1, \ldots, e_n)\vvector{x} \\ +x = x'_1e'_1 + \ldots + x'_ne'_n = (e'_1, \ldots, e'_n) \vvector{x'} +\end{aligned} +\Longrightarrow +\vvector{x} = C\vvector{x'} +\end{gather*} +Аналогично для $y \in V$: +\begin{gather*} +\begin{aligned} +y = (e_1, \ldots, e_n)\vvector{y} \\ +y = (e'_1, \ldots, e'_n) \vvector{y'} +\end{aligned} +\Longrightarrow +\vvector{y} = C\vvector{y'}. +\end{gather*} +Тогда, если мы транспонируем формулу для $x$, получаем: +$$ +\beta(x, y) = \vector{x}B\vvector{y} = \vector{x'}C^TBC\vvector{y'}. +$$ +Одновременно с этим: +$$ +\beta(x, y) = \vector{x'}B'\vvector{y'}. +$$ +Сравнивая эти две формулы, получаем, что $B' = C^TBC$. +\end{proof} + +\begin{Consequence} +Число $\rk B$ не зависит от выбора базиса. +\end{Consequence} + +\begin{Def} +Число $\rk B$ называется рангом билинейной функции $\beta$. Обозначение: $\rk \beta$. +\end{Def} + +\subsection*{Симметричные билинейные функции} + +Как и для линейных операторов, неплохо было бы научиться находить такой базис, в котором матрица $B$ была бы проще. Но мы это сделаем только для некоторого класса билинейных функций. + +\begin{Def} +Билинейная функция называется симметричной, если $\beta(x, y) =\beta(y, x)$ для любый $x, y \in V$. +\end{Def} + +\begin{Suggestion} +Билинейная функция $\beta$ симметрична тогда и только тогда, когда матрица $B(\beta, \e)$ --- симметрическая (т.е. она равна своей транспонированной). +\end{Suggestion} + +\begin{proof} +Пусть $B = B(\beta, \e)$. +\begin{itemize} +\item[$\Rightarrow$] $\beta(e_i, e_j) = b_{ij} = b_{ji} = \beta(e_j, e_i) \Rightarrow B$ симметрична. +\item[$\Leftarrow$] Пусть $x = x_1e_1 + \ldots x_ne_n$ и $y = y_1e_1 + \ldots + y_ne_n$. Также воспользуемся тем, что данная нам матрица симметрична, то есть равна своей транспонированной. +\begin{gather*} +\beta(y, x) = \vector{y}B\vvector{x} = \left[\vector{y}B\vvector{x}\right]^T =\\ += \vector{x}B^T\vvector{y} = \vector{x}B\vvector{y} = \beta(x, y) +\end{gather*} +То есть $\beta(y, x) = \beta(x, y)$, что и означает, что $\beta$ симметрична. +\end{itemize} +\end{proof} + +\subsection*{Квадратичные функции} + +\begin{Def} +Пусть $\beta \colon V\times V \rightarrow F$ --- билинейная функция. Тогда $Q_\beta \colon V \rightarrow F$, заданная формулой $Q_\beta(x) = \beta(x, x)$, называется квадратичной функцией (формой), ассоциированной с билинейной функцией $\beta$. +\end{Def} + +Покажем, что такая квадратичная функция на самом деле является однородным многочленом степени 2 от $n$ переменных. Пусть $\e = \vector{e}$ --- базис $V$, $B = B(\beta, \e)$, $x = \vector{x}$. Тогда: +$$ +Q_\beta(x) = \vector{x}V\vvector{x} = \sum_{i = 1}^{n}\sum_{j = 1}^{n}b_{ij}x_ix_j +$$ + +Квадратичную функцию удобно так представлять, но не определять. + +\begin{Examples} +Здесь $\e$ --- стандартный базис. +\begin{enumerate} +\item $V = \R^n,\ \beta(x, y) = x_1y_1 + \ldots + x_ny_n\ \Rightarrow\ Q_\beta(x) = x_1^2 + \ldots + x_n^2,\ B(\beta, \e) = E$. +\item $V = \R^2,\ \beta(x, y) = 2x_1y_2\ \Rightarrow\ Q_\beta(x) = 2x_1x_2,\ B(\beta, \e) = \begin{pmatrix}0 & 2 \\ 0 & 0\end{pmatrix}$. +\item $V=\R^2,\ \beta(x, y) = x_1y_2+x_2y_1\ \Rightarrow\ Q_\beta(x) = 2x_1x_2,\ B(\beta, \e) = \begin{pmatrix}0 & 1 \\ 1 & 0\end{pmatrix}$. +\end{enumerate} +\end{Examples} + +\begin{Comment} +Квадратичная функция задает билинейную функцию не однозначно (примеры 2 и 3). +\end{Comment} + +В дальнейшем нам понадобится делить на два. Поэтому далее предположим, что в нашем поле $F$ можно делить на два. Что это означает? Заметим, что $2 = 1 + 1$, и, строго говоря, нельзя делить на ноль. Следовательно, наше условие можно переформулировать: рассматриваем такие поля $F$, в которых $1 + 1 \neq 0$. В терминах поля, это уже гораздо более осмысленное и понятное условие. + +\begin{Theorem} +Отображение $\beta \mapsto Q_\beta$ является биекцией между симметричными билинейными функциями на $V$ и квадратичными функциями на $V$. +\end{Theorem} + +\begin{proof}\ \\ +\underline{Суръективность.} Пусть $\beta$ --- билинейная функция. Рассмотрим тогда ассоциированную с ней квадратичную функцию $Q_\beta(x) = \beta(x, x)$. Пусть $\sigma(x, y) = \frac{1}{2}(\beta(x, y) + \beta(y, x))$ --- симметричная билинейная функция на $V$. Тогда: +$$ +Q_\sigma(x) = \sigma(x, x) = \frac{1}{2}(\beta(x, x) + \beta(x, x)) = \beta(x, x) = Q_\beta(x) +$$ +Итого, $Q_\sigma = Q_\beta$. Следовательно, отображение суръективно. + +\underline{Инъективность}. Пусть $\beta(x, y)$ -- симметричная билинейная функция. Аналогично, рассмотрим $Q_\beta(x) = \beta(x, x)$. Посмотрим на $Q_\beta(x + y)$: +\begin{gather*} +Q_\beta(x + y) = \beta(x + y, x + y) = \beta(x, x) + \beta(x, y) + \beta(y, x) + \beta(y, y) = Q_\beta(x) + Q_\beta(y) + 2\beta(x, y) \\ +\Downarrow \\ +\beta(x, y) = \frac{1}{2}\left( Q_\beta(x + y) - Q_\beta(x) - Q_\beta(y) \right) +\end{gather*} +Полученная выше формула как раз и означает, что значения билинейной функции однозначно задаются соответствующей квадратичной функцией. +\end{proof} + +\begin{Comment}\ +\begin{enumerate} +\item Билинейная функция $\sigma(x, y) = \frac{1}{2}(\beta(x, y) + \beta(y, x))$ называется симметризацией билинейной функции $\beta$. Причем если $B = B(\beta, \e)$ и $S = B(\sigma, \e)$, то $S = \frac{1}{2}(B + B^T)$. +\item Симметричная билинейная функция $\beta(x, y) = \frac{1}{2}\left( Q_\beta(x + y) - Q_\beta(x) - Q_\beta(y) \right)$ называется поляризацией квадратичной функции $Q$. +\end{enumerate} +\end{Comment} + +\begin{Examples} +Для предыдущих двух примеров: +$$ +\begin{pmatrix} +0 & 1 \\ +1 & 0 +\end{pmatrix} = \frac{1}{2}\left( +\begin{pmatrix} +0 & 2 \\ +0 & 0 +\end{pmatrix} ++ +\begin{pmatrix} +0 & 2 \\ +0 & 0 +\end{pmatrix}^T +\right) +$$ +\end{Examples} + +Далее вся терминология для симметричных билинейных функций переносится на квадратичные функции. В частности, матрицей квадратичной формы в базисе $\e$ называется матрица соответствующей симметричной билинейной функции в том же базисе. + +Теперь вспоминаем, что перед нами стоит задача научиться приводить к хорошему виду. + +\begin{Def} +Квадратичная функция $Q$ имеет в базисе $\e$ канонический вид, если для любого вектора $x = x_1e_1 + \ldots + x_ne_n$ верно, что $Q_\beta(x) = a_1x_1^2 +\ldots + a_nx_n^2$, где $a_i \in F$. Иными словами, она имеет диагональную матрицу. +\end{Def} + +\begin{Def} +Квадратичная функция $Q$ имеет нормальный вид в базисе $\e$, если для любого вектора $x = x_1e_1 + \ldots + x_ne_n$ верно, что $Q_\beta(x) = a_1x_1^2 +\ldots + a_nx_n^2$, причем $a_i \in \{-1, 0, 1\}$. +\end{Def} +\end{document} \ No newline at end of file diff --git a/linear-algebra/tex/linear-algebra_27_[13.04.2016].tex b/linear-algebra/tex/linear-algebra_27_[13.04.2016].tex new file mode 100644 index 0000000..14daff4 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_27_[13.04.2016].tex @@ -0,0 +1,156 @@ +\input{header.tex} + +\begin{document} +\renewcommand{\f}{\mathbb{f}} + +\section{Лекция 27 от 13.04.2016} + +\subsection*{Привидение к каноническому и нормальному виду} + +Пусть $V$ --- векторное пространство, $\dim V = n$, $\e = \vector{e}$ --- базис $V$, $Q \colon V \rightarrow F$ --- квадратичная функция на $V$. + +\begin{Theorem} +Для любой квадратичной функции $Q$ существует такой базис, в котором $Q$ имеет канонический вид. +\end{Theorem} + +\begin{proof} Метод Лагранжа. + +Докажем индукцией по $n$. + +При $n = 1$ имеем, что $Q(x) = ax^2$, то есть уже имеем канонический вид. + +Предположим, что для всех значений меньших $n$ доказано. Докажем тогда для $n$. + +Пусть $A = (a_{ij})$ --- матрица квадратичной функции $Q$ в исходном базисе. Тогда: +$$ +Q(x) = Q(x_1, \ldots, x_n) = \sum_{i = 1}^{n}a_{ii}x_i^2 + 2\sum_{1 \leqslant i < j \leqslant n}a_{ij}x_ix_j +$$ + +\underline{Случай 0}: пусть $a_{ij} = 0$ для всех пар $(i, j)$. Тогда $Q(x) = 0x_1^2 + \ldots + 0x_n^2$ --- уже канонический вид. + +\underline{Случай 1}: пусть существует такое $i$, что $a_{ii} \neq 0$. Перенумеровав переменные, считаем, что $a_{11} \neq 0$. Тогда: +\begin{gather*} +Q(x_1, \ldots, x_n) = (a_{11}x_1^2 + 2a_{12}x_1x_2 + \ldots + 2a_{1n}x_1x_n) + Q_1(x_2, \ldots, x_n) = \\ += \frac{1}{a_{11}}\left((a_{11}x_1 + \ldots + a_{1n}x_n)^2 - (a_{12}x_2 + \ldots + a_{1n}x_n)^2 \right) + Q_1(x_2, \ldots, x_n) = \\ += \frac{1}{a_{11}}(a_{11}x_1 + \ldots + a_{1n}x_n)^2 + Q_2(x_2, \ldots, x_n) +\end{gather*} +Теперь сделаем следующую замену переменных: +\begin{gather*} +x_1' = a_{11}x_1 + \ldots + a_{1n}x_n \\ +x_2' = x_2, \ldots, x_n' = x_n +\end{gather*} +Получаем: +$$ +Q(x_1', \ldots, x_n') = \frac{1}{a_{11}}x_1' + Q_2(x_2', \ldots, x_n') +$$ +Дальше пользуемся предположением индукции для $Q_2$, окончательно получая канонический вид для исходной $Q$. + +\underline{Случай 2}: пусть $a_{ii} = 0$ для всех $i$, но существует такая пара $(i, j)$, где $i < j$, что $a_{ij} \neq 0$. Переименовываем переменные так, чтобы $a_{12} \neq 0$ и делаем замену: +\begin{gather*} +x_1 = x_1' - x_2' \\ +x_2 = x_1' + x_2' \\ +x_3 = x_3', \ldots, x_n = x_n' +\end{gather*} +Тогда $2a_{12}x_1x_2 = 2a_{12}x_1'^2 - 2a_{12}x_2'^2$. Следовательно: +$$ +Q(x_1', \ldots, x_n') = 2a_{12}x_1'^2 - 2a_{12}x_2'^2 + 2\sum_{1 \leqslant i < j \leqslant n}a_{ij}x_i'x_j' +$$ +Таким образом, мы пришли к случаю 1, который уже умеем решать. +\end{proof} + +\begin{Consequence} +Всякую квадратичную функцию над полем $\R$ можно заменой базиса привести к нормальному виду. +\end{Consequence} + +\begin{proof} +Существует такой базис, в котором $Q(x_1, \ldots, x_n) = a_1x_1^2 + \ldots + a_nx_n^2$. Сделаем замену: +$$ +x_i' = +\begin{cases} +\sqrt{|a_i|}x_i, & \text{если } a_i \neq 0 \\ +x_i, & \text{если } a_i = 0 +\end{cases} +$$ +Второе условие нужно для того, чтобы можно было выразить старые переменные через новые, не деля при этом на ноль. + +Получаем, что $Q(x_1', \ldots, x_n') = \epsilon_1x_1'^2 + \ldots + \epsilon_nx_n'^2$, где $\epsilon_i = \sgn a_i \in \{-1, 0, 1\}$. Что нам и было надо. +\end{proof} + +\begin{Comment} +Если $F = \C$, то любую квадратичную функцию $Q$ можно привести к виду $Q(x_1, \ldots, x_n) = x_1^2 + \ldots + x_k^2$, где $k \leqslant n$ ($k = \rk Q$), то есть $B(Q, \e) = \diag(1, \ldots, 1, 0, \ldots, 0)$. +\end{Comment} + +\subsection*{Закон инерции, индексы инерции} + +Пусть $Q$ --- квадратичная функция над $\R$, которая в базисе $\e$ имеет нормальный вид: +$$ +Q(x_1, \ldots, x_n) = x_1^2 + \ldots + x_s^2 - x_{s + 1}^2 - \ldots - x_{s + t}^2, +$$ +где $s$ --- это количество положительных слагаемых, а $t$ --- отрицательных. + +\begin{Theorem}[Закон инерции] +Числа $s,\ t$ не зависят от выбора базиса, в котором $Q$ имеет нормальный вид. +\end{Theorem} + +\begin{proof} +Пусть $\e = \vector{e}$ --- базис такой, что $v = x_1e_1 + \ldots + x_ne_n$ и $Q$ имеет в нем нормальный вид: $Q(v) = x_1^2 + \ldots + x_s^2 - x_{s + 1}^2 - \ldots - x_{s + t}^2$. + +Пусть также $\f = \vector{f}$ --- другой базис такой, что $v = y_1e_1 + \ldots + y_ne_n$ и $Q$ также имеет в нем нормальный вид: $Q(v) = y_1^2 + \ldots + y_p^2 - y_{p + 1}^2 - \ldots - y_{p + q}^2$. + +Заметим, что $s + t = p + q$, так как обе эти суммы равны $\rk Q$. В допущении, что $s \neq p$, не умоляя общности будем считать, что $s > p$. + +Положим $L_1 = \langle e_1, \ldots, e_s \rangle,\ \dim L_1 = s$ и $L_2 = \langle f_{p + 1}, \ldots, f_{n}\rangle,\ \dim L_2 = n - p$. Видно, что $L_1 + L_2 \subset V$, а значит, $\dim(L_1 + L_2) \leqslant n$. Тогда: +$$ +\dim(L_1 \cap L_2) = \dim L_1 + \dim L_2 - \dim(L_1 + L_2) \geqslant s + n - p - n = s - p > 0. +$$ +Следовательно, существует ненулевой вектор $v \in L_1 \cap L_2$. Разложим тогда этот вектор в базисах данных линейных оболочек: +\begin{gather*} +v = x_1e_1 + \ldots + x_se_s,\ \exists x_i \neq 0 \Rightarrow Q(v) = x_1^2 + \ldots + x_s^2 >0 \\ +v = y_{p + 1}f_{p + 1} + \ldots + y_nf_n \Rightarrow Q(v) = -y_{p+1}^2 - \ldots - y_{p + q}^2 \leqslant 0 +\end{gather*} + +Получили противоречие. Значит, исходное предположение неверно и $s = p$. Откуда в свою очередь следует, что $t = q$. +\end{proof} + +\begin{Def} +Эти числа имеют свои названия: +\begin{enumerate} +\item $i_+ := s$ --- положительный индекс инерции; +\item $i_- := t$ --- отрицательный индекс инерции; +\item $i_0 := n - s - t$ --- нулевой индекс инерции. +\end{enumerate} +\end{Def} + +\begin{Def} +Квадратичная функция $Q$ над полем $\R$ называется +\begin{center} +\begin{tabular}{c|c|c} +Термин & Обозначение & Условие \\ \hline +положительно определенной & $Q > 0$ & $Q(x) > 0\ \forall x \neq 0$ \\ +отрицательно определенной & $Q < 0$ & $Q(x) < 0\ \forall x \neq 0$ \\ +неотрицательно определенной & $Q \geqslant 0$ & $Q(x) \geqslant 0\ \forall x$ \\ +неположительно определенной & $Q \leqslant 0$ & $Q(x) \leqslant 0\ \forall x$ \\ +неопределенной & $-$ & $\exists x, y \colon Q(x) > 0,\ Q(y) < 0$ +\end{tabular} + +\begin{tabular}{c|c|c} +Термин & Нормальный вид & Индексы инерции \\ \hline +положительно определенной & $x_1^2 + \ldots + x_n^2$ & $i_+=n,\ i_- = 0$ \\ +отрицательно определенной & $-x_1^2 - \ldots - x_n^2$ & $i_+=0,\ i_-=n$ \\ +неотрицательно определенной & $x_1^2 + \ldots + x_k^2,\ k \leqslant n$ & $i_+=k,\ i_-=0$ \\ +неположительно определенной & $-x_1^2 - \ldots - x_k^2,\ k \leqslant n$ & $i_+=0, i_-=k$ \\ +неопределенной & $x_1^2+\ldots+x_s^2-x_{s + 1}^2-\ldots-x_{s + t}^2,\ s,t\geqslant1$ & $i_+=s,\ i_-=t$ +\end{tabular} +\end{center} +\end{Def} + +\begin{Examples} $V = \R^2$. +\begin{enumerate} +\item $Q(x, y) = x^2 + y^2,\ Q > 0$; +\item $Q(x, y) = - x^2 - y^2,\ Q < 0$; +\item $Q(x, y) = x^2 - y^2$; +\item $Q(x, y) = x^2,\ Q \geqslant 0$; +\item $Q(x, y) = -x^2,\ Q \leqslant 0$. +\end{enumerate} +\end{Examples} +\end{document} \ No newline at end of file diff --git a/linear-algebra/tex/linear-algebra_28_[20.04.2016].tex b/linear-algebra/tex/linear-algebra_28_[20.04.2016].tex new file mode 100644 index 0000000..bb6c623 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_28_[20.04.2016].tex @@ -0,0 +1,171 @@ +\input{header.tex} + +\begin{document} +\renewcommand{\f}{\mathbb{f}} + +\section{Лекция 28 от 19.04.2016} + +\subsection*{Ортогонализация} +Пусть $V$ --- векторное пространство над полем $F$ размерности $n$, и $\mathbb{e} = (e_1, \ldots, e_n)$ --- его базис. Пусть также $Q\colon \; V \to F$ --- квадратичная форма, $\beta\colon\; V\times V \to F$ --- соответствующая билинейная функция и $B = B(\beta, \mathbb{e})$ --- ее матрица. +$$ +B = \begin{pmatrix} + b_{11}& b_{12} & b_{13} & \vdots\\ + b_{21}& b_{22} & b_{23} & \vdots\\ + b_{31}& b_{32}& b_{33} & \vdots\\ + \cdots& \cdots& \cdots& \ddots +\end{pmatrix} +$$ + +Рассмотрим $B_i$ --- левые верхние $i\times i$-подматрицы. Например, $B_1 = (b_{11})$, $B_2 = \begin{pmatrix} + b_{11}& b_{12}\\ + b_{21}& b_{22} +\end{pmatrix}$ +и так далее. +\par Матрица $B_i$ --- это матрица ограничения билинейной функции $\beta$ на подпространство, натянутое на векторы $(e_1, \ldots, e_i)$. Назовем \textit{верхним угловым минором} число $\delta_i = \det(B_i)$. Также будем считать, что $\delta_0 = 1$. +\begin{Def} + Базис $\mathbb{e}$ называется ортогональным (по отношению к $\beta$), если $\beta(e_i, e_j) = 0$ для любых $i \neq j$. В ортогональном базисе матрица квадратичной формы имеет канонический вид. +\end{Def} +\begin{Theorem}[Метод ортогонализации Грама -- Шмидта] + Предположим, что $\delta_i \neq 0$ для всех $i$. Тогда существует единственный базис $\mathbb{e}' = (e_1', \ldots, e_n')$ в $V$ такой, что + \begin{enumerate} + \item $\mathbb{e}'$ --- ортогональный + \item $e_1' = e_1,\\ e_2' \in e_2 + \langle e_1'\rangle,\\ e_3' \in e_3 + \langle e_1', e_2' \rangle,\\ \ldots\\ e_n' \in e_n + \langle e_1', \ldots, e_{n-1}'\rangle$ + \item $Q(e_i') = \cfrac{\delta_i}{\delta_{i-1}}$ для всех $i$. + \end{enumerate} +\end{Theorem} +\begin{proof} + Индукция по $n$. База для $n = 1$ очевидна. + \par Теперь пусть всё доказано для всех $k 0$ тогда и только тогда, когда $\delta_i > 0$ для всех $i$. +\end{Theorem} +\begin{proof}\ \\ + $[\Leftarrow]$ Следует из предыдущей теоремы. \\ + $[\Rightarrow]$ Докажем, чтo $\delta_i = \det(B_i) > 0$. Действительно, $B_i$ --- это матрица ограничения $Q\bigr|_{\langle e_1, \ldots, e_i\rangle}$. Оно так же будет строго положительным, следовательно, существует матрица $C_i \in M_n(\mathbb{R}),\\ \det(C_i)\neq 0$, такая, что $C_i^TBC_i = E$. Но тогда + $\det C^T_i\det B_i \det C_i = \det E = 1$. Следовательно, $\det B_i = \cfrac{1}{(\det C_i)^2} > 0$, что и требовалось. +\end{proof} +\begin{Theorem} + $Q < 0 \Leftrightarrow \begin{cases} + \delta_i < 0, & 2 \nmid i \\ + \delta_i > 0, & 2 \mid i + \end{cases}$ +\end{Theorem} +\begin{proof} + Применяя критерий Сильвестра для $B(Q, \mathbb{e}) = - B(-Q, \mathbb{e})$, получаем требуемое. +\end{proof} + +\subsection*{Евклидовы пространства. Основные понятия} +\begin{Def} + Евклидово пространство --- это векторное пространство $\mathbb{E}$ над полем $\mathbb{R}$, на котором задана положительно определённая симметрическая билинейная функция $(\cdot, \cdot)$, которую мы будем называть скалярным произведением. +\end{Def} +\begin{Examples}\ +\begin{enumerate} +\item $\mathbb{R}^n,\ x = \begin{pmatrix}x_1\\ \vdots\\ x_n\end{pmatrix}$, $y = \begin{pmatrix}y_1\\ \vdots\\ y_n\end{pmatrix}, + (x,y) = \sum\limits_{i = 1}^n x_iy_i$. +\item $\E = C[0, 1]$, $(f, g) = \int_{0}^{1}f(x)g(x)dx$, $(f, f) = \int_{0}^{1}f^2(x)dx > 0$. +\end{enumerate} +\end{Examples} +\begin{Comment} + Важно отметить, что евклидово пространство можно определить только над полем $\mathbb{R}$. +\end{Comment} + +\begin{Def} + Пусть $x\in \mathbb{E}$. Тогда длиной вектора называют величину $|x| = \sqrt{(x,x)}$. +\end{Def} + +Очевидно, что $|x| \geqslant 0$, причем $|x| = 0$ тогда и только тогда, когда $x = 0$. + +\begin{Suggestion}[Неравенство Коши-Буняковского] + Пусть $x, y \in \E$. Тогда $|(x,y)| \leqslant |x||y|$, причём знак равенства возможен тогда и только тогда, когда $x$ и $y$ пропорциональны. +\end{Suggestion} +\begin{proof}\ + \begin{enumerate} + \item $x,y$ пропорциональны, т.е. $x = \lambda y$ для некоторого $\lambda$. Тогда: + \[ + |(x,y)| = |(x,\lambda x)| = \lambda|(x,x)| = |x|\lambda|x| = |x||y|. + \] + \item $x,y$ линейно независимы. Тогда они будут базисом своей линейной оболочки. Тогда матрица $B$ билинейной функции $(\cdot, \cdot)\bigr|_{\langle x, y\rangle}$ равна: + \begin{gather*} + B = \begin{pmatrix} + (x,x)& (x,y)\\ + (y,x)& (y,y) + \end{pmatrix} + \end{gather*} + Так как $\det B > 0$, то $(x,x)(y,y) - (x,y)^2 > 0$. Следовательно: + \begin{gather*} + |(x,y)|^2 < |x|^2|y|^2\\ + |(x,y)| < |x||y| + \end{gather*} + \end{enumerate} +\end{proof} + +\begin{Def} + Углом между векторами $x$ и $y$ называют такой $\alpha$, что $ \cos \alpha = \cfrac{(x,y)}{|x||y|}$. +\end{Def} + +Рассмотрим систему векторов $(v_1, \ldots, v_k)$, где $v_i \in \E$. +\begin{Def} +Матрица Грама системы $v_1, \ldots, v_k$ это + $$G(v_1,\ldots, v_k) := (g_{ij}),\quad g_{ij} = (v_i,v_j).$$ +\end{Def} + +\begin{Suggestion}\ + \begin{enumerate} + \item $\det G(v_1, \ldots, v_k) \geqslant 0$ + \item $\det G(v_1, \ldots, v_k) = 0$ тогда и только тогда, когда $v_1, \ldots, v_k$ линейно зависимы. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item $v_1, \ldots, v_k$ линейно независимы. Следовательно, матрица $G(v_1, \ldots, v_k)$ является матрицей ограничения $(\cdot, \cdot)$ на $\langle v_1, \ldots, v_k\rangle$, базисом в котором является $(v_1, \ldots, v_k)$. А значит, $\det G(v_1, \ldots, v_k) > 0$. + \item $v_1, \ldots, v_k$ линейно зависимы. Значит, существуют коэффициенты $(\l_1, \ldots, \l_k) \neq (0, \ldots, 0)$ такие, что $\l_1v_1 + \ldots + \l_kv_k = 0$. Если обозначить матрицу Грама $G(v_1, \ldots, v_k)$ за $G$, то тогда + \begin{gather*} + \l_1 G_{(1)} + \ldots + \l_kG_{(k)} = \\ = + (\l_1v_1 + \ldots + \l_kv_k, v_1) + (\l_1v_1 + \ldots + \l_kv_k, v_2) + \ldots + (\l_1v_1 + \ldots + \l_kv_k, v_k) =\\= 0 + 0 + \ldots + 0 + \end{gather*} + То есть строки линейно зависимы и $\det G = 0$. + \end{enumerate} +\end{proof} +\end{document} \ No newline at end of file diff --git a/linear-algebra/tex/linear-algebra_29_[27.04.2016].tex b/linear-algebra/tex/linear-algebra_29_[27.04.2016].tex new file mode 100644 index 0000000..93efd81 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_29_[27.04.2016].tex @@ -0,0 +1,184 @@ +\input{header.tex} + +\begin{document} +\renewcommand{\f}{\mathbb{f}} + +\section{Лекция 29 от 27.04.2016} +\subsection*{Ортогональные дополнения} +Пусть $\mathbb{E}$ --- евклидово пространство, $\dim \E = n$. +\begin{Def} + Векторы $x,y$ называются ортогональными, если $(x,y)=0$. Обозначение: \\$x\perp y$. +\end{Def} + +\begin{Def} + Пусть $S \subseteq \mathbb{E}$ --- произвольное подпространство. Ортогональным дополнением к $S$ называется множество $S^{\perp} = \{x\in \mathbb{E}\; |\; (x,y) = 0\;\forall y \in S\}$. +\end{Def} + +\begin{Comment}\ + \begin{enumerate} + \item $S^\perp$ --- подпространство в $\E$. + \item $S^\perp = \langle S \rangle^\perp$. + \end{enumerate} +\end{Comment} + +\begin{Suggestion} +Пусть $S$ --- подпространство в $\E$. Тогда: + \begin{enumerate} + \item $\dim S^\perp = n - \dim S$; + \item $\mathbb{E} = S \oplus S^\perp$; + \item $(S^\perp)^\perp = S$. + \end{enumerate} +\end{Suggestion} + +\begin{proof}\ + \begin{enumerate} + \item Выделим в $S$ базис $(e_1, \ldots, e_k)$ и дополним его векторами $(e_{k+1}, \ldots, e_n)$ до базиса $\mathbb{E}$. Рассмотрим вектор $x \in \E$ и представим его в виде $x_1e_1 + \ldots + x_ne_n$. Если $x \in S^\perp$, то это то же самое, если $(x, e_i) = 0$ для $i = 1 \ldots k$. Итого: + \begin{gather*} + (x,e_i) = (e_1, e_i)x_1 + (e_2, e_i) x_2 + \ldots, (e_n, e_i) x_n= 0, \quad i = 1 \ldots k + \end{gather*} + Получим однородную СЛУ $G\begin{pmatrix} + x_1\\x_2\\ \vdots\\ x_n + \end{pmatrix} = 0$, где $G \in Mat_{k\times n}(\mathbb{R})$ и $g_{ij} = (e_i, e_j)$. Заметим, что $\rk G = k$, так как это часть матрицы Грама, и ее левый верхний $k\times k$ минор больше нуля. Следовательно, размерность пространства решений $\dim S^\perp = n - \rk G = n - \dim S$. + \item Из предыдущего пункта получаем, что $\dim S + \dim S^\perp = n$. Вместе с тем, поскольку $(x,x) = 0$ тогда и только тогда, когда $x = 0$, то $S \cap S^\perp = \{0\}$. Следовательно, $\mathbb{E} = S \oplus S^\perp$. + \item $S \subset (S^\perp)^\perp$ --- всегда. Вместе с тем, $\dim (S^\perp)^\perp = n - \dim S^\perp = n - (n - k) = k = \dim S$. И так как размерности совпадают, то $S = (S^\perp)^\perp$. +\end{enumerate} +\end{proof} + +Итак, мы теперь знаем, что $\E = S \oplus S^\perp$. Значит, для $x \in \mathbb{E}$ существует единственное представление его в виде $x = y + z$, где $y \in S,\; z \in S^\perp$. +\begin{Def} + Вектор $y$ называется ортогональной проекцией вектора $x$ на подпространство $S$. Обозначение: $\pr_S x$. \\ Вектор $z$ называется ортогональной составляющей вектора $x$ вдоль подпространства $S$. Обозначение: $\ort_S x$. +\end{Def} + +\subsection*{Ортогональные и ортонормированные базисы. Свойства} + +\begin{Def} + Базис $(e_1, \ldots, e_n)$ в $\mathbb{E}$ называется ортогональным, если $(e_i, e_j) = 0\; \forall i\neq j$. Это равносильно тому, что $G(e_1, \ldots, e_n)$ диагональна. \\Базис называется ортонормированным, если дополнительно $(e_i, e_i) = 1\; \forall i$. Это равносильно тому, что $G(e_1, \ldots, e_n) = E$. +\end{Def} +\begin{Comment} + Если $(e_1,\ldots, e_n)$ ортогональный базис, то $\left(\cfrac{e_1}{|e_1|}, \ldots, \cfrac{e_n}{|e_n|}\right)$ ортонормированный. +\end{Comment} +\begin{Theorem} + В любом конечномерном евклидовом пространстве существует ортонормированный базис. +\end{Theorem} +\begin{proof} + Следует из того, что всякую положительно определенную квадратичную форму можно привести к нормальному виду. +\end{proof} +Пусть $(e_1, \ldots, e_n)$ --- ортонормированный базис в $\E$. Пусть также есть ещё один базис $(e_1', \ldots, e_n')$, причём $(e_1', \ldots, e_n') = (e_1, \ldots, e_n)C$. +\begin{Suggestion} + $(e_1', \ldots, e_n')$ --- ортонормированный тогда и только тогда, когда $C^TC = E$ или, что то же самое, $C^{-1} = C^T$. +\end{Suggestion} +\begin{proof} + Условие, что базис $(e_1', \ldots, e_n')$ является ортонормированным, равносильно тому, что $G(e_1', \ldots, e_n') = E$. С другой стороны, $G(e_1', \ldots, e_n') = C^TG(e_1, \ldots, e_n)C$, причем аналогично $G(e_1, \ldots, e_n) = E$. Откуда и следует, что $C^TC = E$. +\end{proof} +\begin{Def} + Матрица $C$ в таком случае называется ортогональной. +\end{Def} + +\begin{Properties}\ +\begin{enumerate} +\item $C^TC = E$, значит, $C^T = C^{-1}$, и тогда $CC^T = E$. Итого, получаем: +$$ +\sum\limits_{k = 1}^{n}c_{ki}c_{kj} = \delta_{ij} = \sum\limits_{k = 1}^{n}c_{ik}c_{jk} +$$ +Напомним, что $\delta_{ij}$ это символ Кронекера. +\item $\det C = \pm 1$. +\end{enumerate} +\end{Properties} + +\begin{Examples} + $C = \begin{pmatrix} + \cos \varphi& -\sin \varphi\\ + \sin \varphi& \cos \varphi + \end{pmatrix}$ --- матрица поворота на угол $\varphi$ в $\mathbb{R}^2$. +\end{Examples} + +Пусть $S \subseteq \mathbb{E}$ --- подпространство, $(e_1, \ldots, e_k)$ --- его ортогональный базис, $x \in \mathbb{E}$. +\begin{Suggestion} + $\pr_S x = \sum\limits_{i = 1}^{k}\cfrac{(x,e_i)}{(e_i, e_i)}e_i$. В частности, если базис ортонормированный, \\$\pr_S x = \sum\limits_{i = 1}^{k}(x,e_i)e_i$ +\end{Suggestion} +\begin{proof} +Представим вектор $x$ в виде суммы $x = \pr_Sx + \ort_Sx$. Тогда: +$$ +(x, e_i) = (\pr_S x, e_i) + \underbrace{(\ort_S x, e_i)}_{=0} = (\pr_S x, e_i) \quad i = 1, \ldots, k. +$$ +Вместе с тем, $\pr_S x = \sum\limits_{j = 1}^{k}\l_je_j$, следовательно, $(x, e_i) = \sum\limits_{j = 1}^k\l_j(e_j, e_i)$. +Но так как базис ортогональный, все слагаемые, кроме одного, занулятся, и останется только $(x, e_i) = \l_i(e_i, e_i)$. Откуда и следует, что $\l_i = \cfrac{(x, e_i)}{(e_i, e_i)}$. +\end{proof} + +Пусть есть базис $(e_1, \ldots, e_n)$ в $\mathbb{E}$. Процесс ортогонализации Грама-Шмидта даёт ортогональный базис $(f_1, \ldots, f_n)$, причем: +\begin{align*} + & f_1 = e_1\\ + & f_2 \in e_2 + \langle e_1 \rangle\\ + & \ldots\\ + & f_n \in e_n + \langle e_1, \ldots, e_{n - 1} \rangle +\end{align*} +Точно так же можно заметить, что $\langle f_1, \ldots, f_i \rangle = \langle e_1, \ldots, e_i\rangle$ для всех $i= 1, \ldots, n$. +\begin{Suggestion} + $f_i = \ort_{\langle e_1, \ldots, e_{i-1}\rangle} e_i$ для всех $i = 1, \ldots, n$. +\end{Suggestion} +\begin{proof} +Воспользовавшись равенством линейных оболочек, получаем, что \\$e_i \in f_i + \langle f_1, \ldots, f_{i-1}\rangle$. Следовательно, данный базисный вектор можно представить в виде $e_i = f_i + \lambda_1f_1 + \ldots + \lambda_{i -1} f_{i -1}$. И из того, что $f_i \perp \langle e_1, \ldots, e_{i -1} \rangle = \langle f_1, \ldots, f_{i - 1}\rangle$ как раз и получаем, что $f_i = \ort_{\langle e_1, \ldots, e_{i-1}\rangle} e_i$. +\end{proof} + +\begin{Examples} +Данное рассуждение проще понять, если представить себе частный случай для $\E = \R^3$. + +У нас зафиксированы векторы $e_1, e_2, e_3$, и мы их ортогонализируем. Для начала, $f_1 = e_1$. Вектор $f_2$ получается как проекция вектора $e_2$ на прямую, ортогональную $f_1$. А вектор $f_3$~--- как проекция $e_3$ на прямую, ортогональную плоскости, образованной векторами $f_1$ и $f_2$. Аналогично для пространств большей размерности. +\end{Examples} + +\begin{Theorem}[Пифагора] +Если $x, y \in \E$ и $x \perp y$, то $|x+y| = |x|^2 + |y|^2$. +\end{Theorem} + +\begin{proof} + $$|x + y|^2 = (x+y, x+y) = (x, x) + (y, y) + \underbrace{(x, y)}_{=0} + \underbrace{(y, x)}_{=0} = (x, x) + (y, y) = |x|^2 + |y|^2$$ +\end{proof} + +\subsection*{Расстояния в евклидовых пространствах} + +Рассмотрим векторы $x, y \in \E$. +\begin{Def} + Расстоянием между векторами $x$ и $y$ называется число $\rho(x,y) := |x-y|$. +\end{Def} + +\begin{Suggestion}[Неравенство треугольника] + $\rho(a,b) + \rho(b,c) \geqslant \rho(a,c)$ при $a, b, c \in \E$. +\end{Suggestion} + +\begin{proof} + Пусть $x = a-b,\; y = b - c$. Тогда $a-c = x +y$. Теперь достаточно доказать, что $|x| + |y| \geqslant |x + y|$. Для этого рассмотрим $|x + y|^2$. + \begin{gather*} + |x+y|^2 = (x, x) + 2(x, y) + (y, y) = |x|^2 + 2(x, y) + |y|^2 \leqslant |x|^2 + 2|x||y|+ |y|^2 = (|x| + |y|)^2 + \end{gather*} + Сравнивая начало и конец неравенства, получаем, что $|x+y| \leqslant |x| + |y|$. +\end{proof} +Пусть $P$ и $Q$ --- два произвольных подмножества $\mathbb{E}$. +\begin{Def} + Расстоянием между $P$ и $Q$ называют величину + $$ + \rho (P,Q) := \inf \{\rho(x,y) \mid x\in P,\ y\in Q\}. + $$ +\end{Def} +Пусть $x \in \mathbb{E}$ и $U \subseteq \mathbb{E}$ --- подпространство. +\begin{Theorem} + $\rho (x,U) = |\ort_U x|$, причём $\pr_U x$ --- единственный ближайший к $x$ вектор из $U$. +\end{Theorem} +\begin{proof} + Пусть $y = \pr_U x$ и $z = \ort_U x$. Пусть также $y' \in U\backslash \{0\}$, тогда: + \[ + \rho(x, y + y') = |x - y - y'| = |z - y'| = \sqrt{|z|^2 + \underbrace{|y'|^2}_{>0}} > |z| = \rho(x,y). + \] + Из того, что вектор $z$, которым мы огранили снизу, определяется однозначно, и следует, что существует единственный ближайший вектор к $x$ из $U$. +\end{proof} +Пусть $U \subseteq \mathbb{E}$ --- подпространство, $x \in \mathbb{E}$, $(e_1, \ldots, e_k)$ --- базис $U$. +\begin{Theorem} + $(\rho(x,U))^2 = \cfrac{\det G(e_1, \ldots, e_k, x)}{\det G(e_1, \ldots, e_k)}$ +\end{Theorem} +\begin{proof} + Разобьем на два случая: когда $x$ лежит в $U$ и когда не лежит. + \begin{enumerate} + \item $x \in U$. Тогда $\rho (x,U) = 0$. Но с другой стороны, $\det G(e_1, \ldots, e_k, x) = 0$, поскольку эти векторы линейно зависимы, и значит, равенство выполняется. + \item $x \notin U$. Тогда $\rho(x,U) = |\ort_U x| = |z|$. Ортогонализация Грама-Шмидта к $(e_1, \ldots, e_k, x)$ даст нам $(f_1, \ldots, f_k, z)$, причём $|z|^2 = (z,z) = \cfrac{\delta_{k+1}}{\delta_{k}} = \cfrac{\det G(e_1, \ldots, e_k, x)}{\det G(e_1, \ldots, e_k)}$. + \end{enumerate} +\end{proof} +\end{document} diff --git a/linear-algebra/tex/linear-algebra_30_[11.05.2016].tex b/linear-algebra/tex/linear-algebra_30_[11.05.2016].tex new file mode 100644 index 0000000..a66bfd5 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_30_[11.05.2016].tex @@ -0,0 +1,212 @@ +\input{header.tex} + +\begin{document} +\section{Лекция 30 от 11.05.2016} + +\subsection*{$N$-мерные параллелепипеды в евклидовых пространствах} + +Пусть $\E$ --- евклидово пространство. Вспомним, что такое расстояния в нем. + +Для векторов $x,\ y \in E$ расстояние это $\rho(x, y):= |x - y|$. + +Для подмножеств $P, Q \subseteq \E$ расстояние это $\rho(P, Q) := \inf\limits_{x \in P,\ y \in Q} \rho(x, y)$. + +Для подпространства $U \subseteq \E$ и вектора $x \in \E$ известны следующие вещи: +\begin{enumerate} +\item $\rho(x, U) = |\ort_Ux|$ +\item $\rho(x, U)^2 = \frac{\det G(e_1, \ldots, e_k, x)}{\det G(e_1, \ldots, e_k)}$, где $e_1, \ldots, e_k$ --- базис в $U$. +\end{enumerate} + +Рассмотрим теперь векторы $a_1, \ldots, a_n \in \E$, причем $n$ --- необязательно размерность $\E$. +\begin{Def} +$N$-мерным параллелепипедом, натянутым на векторы $a_1, \ldots, a_n$ называется подмножество +$$ +P(a_1, \ldots, a_n) := \left\{ x = \sum_{i = 1}^n x_ia_i \mid 0 \leqslant x_i \leqslant 1 \right\}. +$$ +\end{Def} + +\begin{Examples}\ +\begin{enumerate} +\item При $n = 2$ это обычный двухмерный параллелограмм. +\item При $n = 3$ это трехмерный параллелепипед. +\end{enumerate} +\end{Examples} + +\begin{Def} +Для параллелепипеда $P(a_1, \ldots, a_{n})$ основание это $P(a_1, \ldots, a_{n-1})$, а высота --- $h = \ort_{\langle a_1, \ldots, a_{n-1}\rangle}a_n$. +\end{Def} + +\begin{Def} +Объем $n$-мерного параллелепипеда $P(a_1, \ldots, a_{n})$ --- это число $\vol P(a_1, \ldots, a_{n})$, определяемое рекурсивно следующим образом: +\begin{align*} +n = 1 \quad& \vol P(a_1) = |a_1| \\ +n > 1 \quad& \vol P(a_1, \ldots, a_n) = \vol P(a_1, \ldots, a_{n-1})\cdot |h| +\end{align*} +\end{Def} + +\begin{Theorem} +$\vol P\vector{a}^2 = \det G\vector{a}$. +\end{Theorem} + +\begin{proof} +Докажем это утверждение по индукции. + +База: при $n = 1$ имеем $\vol P(a_1)^2 = |a_1|^2 = (a_1, a_1) = \det G(a_1)$. + +Теперь пусть утверждение доказано для всех меньших значений. Докажем для $n$. +\begin{gather*} +\vol P\vector{a}^2 = \vol P(a_1, \ldots, a_{n-1})^2 \cdot |h|^2 = +\det G(a_1, \ldots, a_{n-1}) \cdot |\ort_{\langle a_1, \ldots, a_{n-1} \rangle}a_n|^2 = \\ += \begin{cases} + 0 = \det G\vector{a}, & \text{если $a_1, \ldots a_{n-1}$ линейно зависимы} \\ + \det G(a_1, \ldots, a_n)\frac{\det G(a_1, \ldots, a_n)}{\det G(a_1, \ldots, a_{n-1})} = \det G\vector{a}, & \text{если $a_1, \ldots, a_{n-1}$ линейно независимы} + \end{cases} +\end{gather*} +\end{proof} + +\begin{Consequence} +Объем параллелепипеда не зависит от выбора основания. +\end{Consequence} + +\begin{Theorem} +Пусть $\vector{e}$ --- ортогональный базис в $\E$, и $\vector{a} = \vector{e}A$ для некоторой матрицы $A \in M_n(\R)$. Тогда $\vol P\vector{a} = |\det A|$. +\end{Theorem} + +\begin{Comment} +Это --- геометрический смысл определителя! +\end{Comment} + +\begin{proof} +Вспомним, что матрица Грама ортогонального базиса равна единичной матрице: +$$ +G\vector{a} =A^TG\vector{e}A = A^TA. +$$ +Тогда для определителя справедливо следующее: +$$ +\det G\vector{a} = \det(A^TA) = (\det A)^2. +$$ +Осталось воспользоваться предыдущей теоремой: +$$ +\vol P\vector{a} = \sqrt{\det G \vector{a}} = |\det A|. +$$ +\end{proof} + +\subsection*{Изоморфизм евклидовых пространств} + +Теперь рассмотрим два евклидовых пространства, $\E$ и $\E'$. +\begin{Def} +Изоморфизм евклидовых пространств $\E$ и $\E'$ --- это биективное отображение $\phi: \E \rightarrow \E'$ такое, что +\begin{enumerate} +\item $\phi$ --- изоморфизм векторных пространств. +\item $(\phi(x), \phi(y))' = (x, y)$ для любых $x \in \E$ и $y \in \E'$. Здесь через $()'$ обозначается скалярное произведение в $\E'$. +\end{enumerate} +\end{Def} + +\begin{Def} +Евклидовы пространства $\E$ и $\E'$ называются изоморфными, если между ними существует изоморфизм. Обозначение: $\E \simeq \E'$. +\end{Def} + +\begin{Theorem} +Два конечномерных евклидовых пространства $\E$ и $\E'$ изоморфны тогда и только тогда, когда их размерности совпадают. +\end{Theorem} + +\begin{proof}\ \\ +$[\Rightarrow]$ Очевидно из первого пункта определения изоморфизма евклидовых пространств. + +$[\Leftarrow]$ Зафиксируем ортонормированные базисы $\e = \vector{e}$ в $\E$ и $\e' = \vector{e'}$ в $\E'$, где $n = \dim \E = \dim \E'$. Зададим изоморфизм $\phi: \E \rightarrow \E'$ \textit{векторных пространств} по формуле +$$ +\phi(e_i) = e_i'\quad \forall i = 1,\ldots, n. +$$ +Тогда имеем следующее (напомним, что $\delta_{ij}$ это символ Кронекера): +$$ +(\phi(e_i), \phi(e_j))' = (e_i', e_j')' = \delta_{ij} = (e_i, e_j). +$$ +Теперь рассмотрим векторы $x = \sum_{_i = 1}^{n}x_ie_i$ и $y = \sum_{j = 1}^{n}y_je_j$ и проверим второй пункт определения изоморфизма евклидовых пространств. Будем пользоваться билинейностью скалярного произведения. +\begin{gather*} +(\phi(x), \phi(y))' = \left(\phi\left(\sum_{i = 1}^{n}x_ie_i\right), \phi\left(\sum_{j = 1}^{j = n}y_je_j\right)\right)' = \left(\sum_{i = 1}^{n}x_i\phi(e_i), \sum_{j = 1}^{n}y_j\phi(e_j)\right)' = \\ += \sum_{i = 1}^{n}\sum_{j = 1}^{n}x_iy_j\phi(e_i, e_j)' = \sum_{i = 1}^{n}\sum_{j = 1}^{n}x_iy_j(e_i, e_j) = (x, y) +\end{gather*} +\end{proof} + +\subsection*{Линейные операторы в евклидовых пространствах} + +Пусть $\E$ --- евклидово пространство, $\phi$ --- его линейный оператор. Тогда ему можно сопоставить две билинейные функции на $\E$: +\begin{gather*} +\beta_\phi(x, y) = (x, \phi(y)) \\ +\beta^T_\phi(x, y) = (\phi(x), y) +\end{gather*} +Введем базис $\e = \vector{e}$ в $\E$, матрицу Грама $G = G\vector{e}$, матрицу оператора $A_\phi \hm= A(\phi, \e)$, а также два вектора $x = \sum_{i = 1}^{n}x_ie_i$ и $y = \sum_{j = 1}^{n}y_je_j$. Тогда имеем следующее: +\begin{gather*} +\phi(x) = A_\phi\vvector{x} \qquad \phi(y) = A_\phi \vvector{y} \\ +\beta_\phi(x, y) = \vector{x} GA_\phi \vvector{y} \qquad +\beta^T_\phi(x, y) = \vector{x}A_\phi^TG\vvector{y} +\end{gather*} +Отсюда мы можем вывести матрицы данных билинейных форм: +\begin{gather*} +B(\beta_\phi, \e) = GA_\phi \\ +B(\beta^T_\phi, \e) = A^T_\phi G +\end{gather*} + +\begin{Comment} +Отображения $\phi \mapsto \beta_\phi$ и $\phi \mapsto \beta^T_\phi$ являются биекциями между $L(\E)$ и пространством всех билинейных форм на $\E$. +\end{Comment} + +\begin{Def} +Линейный оператор $\psi \in L(\E)$ называется сопряженным к $\phi$, если для всех векторов $x,\ y \in \E$ верно, что $(\psi(x), y)\hm = (x, \phi(y))$. Это также равносильно тому, что $\beta_\psi^T = \beta_\phi$. Обозначение: $\psi = \phi^*$. +\end{Def} + +\begin{Suggestion}\ +\begin{enumerate} +\item $\phi^*$ существует и единственен. +\item $A_{\phi^*} = G^{-1}A_\phi^TG$, где $A_{\phi^*} = A(\phi^*, \e)$, а все остальные обозначения прежние. В частности, если $\e$ --- ортонормированный базис, то $A_{\phi^*} = A_{\phi}^T$. +\end{enumerate} +\end{Suggestion} + +\begin{proof} +Снова обозначим $\phi^*$ как $\psi$. Мы уже знаем, что $B(\beta_\psi^T, \e) = A_\psi^TG$ и $B(\beta_\phi, \e) \hm= GA_\phi$. Мы хотим, чтобы эти две матрицы были равны. Транспонируем их и, воспользовавшись тем, что $G = G^T$, получаем: +$$ +GA_\psi = A_\phi^TG. +$$ +Выразив $A_\psi$, получаем, что такая матрица (и, соответственно, оператор) единственная: +$$A_\psi = G^{-1}A_\phi^TG.$$ +Существование же напрямую следует из того, что линейный оператор с матрицей $G^{-1}A_\phi^TG$ обладает нужными свойствами. +\end{proof} + +\begin{Def} +Линейный оператор $\phi$ называется самосопряженным (симметрическим), если $\phi^* = \phi$. Это равносильно тому, что $(\phi(x), y) = (x, \phi(y)))$ для любых векторов $x,\ y \in \E$. +\end{Def} + +\begin{Comment} +В случае, когда $\e$ --- ортонормированный базис в $\E$ и $A_\phi = A(\phi, \e)$, то самосопряженность линейного оператора $\phi$ равносильно тому, что $A_\phi = A_\phi^T$. Отсюда и второе название таких операторов --- симметрические. +\end{Comment} + +Здесь важно, что мы работаем именно над евклидовым пространством, так как мы использовали скалярное произведение для проведения биекции с билинейными формами. + +\begin{Examples} +Пусть $U \subseteq \E$ --- подпространство. Отображение $\phi : x \mapsto \pr_Ux$ является самосопряженным. + +\begin{proof}\ \\ +\textbf{I способ (координатный).} + +Пусть $(e_1, \ldots, e_k)$ --- ортонормированный базис в $U$, а $(e_{k+1}, \ldots, e_n)$ --- ортонормированный базис в $U^T$. Тогда $\e = (e_1, \ldots, e_n)$ --- ортонормированный базис в $\E$. А значит, матрица $\phi$ будет иметь в таком базисе следующий вид: +$$ +A(\phi, \e) = \diag(\underbrace{1, \ldots, 1}_{k},\underbrace{0, \ldots, 0}_{n - k}) +$$ +При транспонировании диагональная матрица не меняется, следовательно, $A(\phi, \e)^T = A(\phi, \e)$. Что и означает, что $\phi = \phi^*$. + +\textbf{II способ (бескоординатный).} + +Проверим условие $(x, \phi(y)) = (\phi(x), y)$: +\begin{align*} +(\phi(x), y) =& (\pr_Ux, \pr_Uy + \ort_Uy) = (\pr_Ux, \pr_Uy) + \underbrace{(\pr_Ux, \ort_Uy)}_{=0} = \\ +=& (\pr_Ux, \pr_Uy) + \underbrace{(\ort_Ux, \pr_Uy)}_{=0} = (\pr_Ux + \ort_Ux, \ort_Uy) = (x, \phi(y)). +\end{align*} +\end{proof} +\end{Examples} + + + + + + +\end{document} \ No newline at end of file diff --git a/linear-algebra/tex/linear-algebra_31_[17.05.2016].tex b/linear-algebra/tex/linear-algebra_31_[17.05.2016].tex new file mode 100644 index 0000000..563d550 --- /dev/null +++ b/linear-algebra/tex/linear-algebra_31_[17.05.2016].tex @@ -0,0 +1,211 @@ +\input{header.tex} + +\begin{document} +\section{Лекция 31 от 17.05.2016} + +\subsection*{Самосопряжённые линейные операторы (продолжение)} + +Пусть $\mathbb{E}$ --- евклидово пространство, $\dim \mathbb{E} = n$, $\varphi \in L(\mathbb{E})$. Вспомним, что по определению сопряжённый линейный оператор $\phi^*$ это такой линейный оператор, для которого выполняется следующее: +$$ +(x,\;\varphi(y)) = (\varphi^*(x),\; y). +$$ + +Вспомним также, что самосопряженным называется такой оператор $\phi$, для которого $\phi^* = \phi$. + +\begin{Suggestion} + Пусть $\varphi$ --- самосопряженный линейный оператор в $\E$. Если $U \subseteq \mathbb{E}$ ---\\ $\phi$-инвариантное подпространство в $\E$, то $U^\perp$ тоже $\varphi$-инвариантно. +\end{Suggestion} + +Поясним, что означает этот факт. + +Пусть $\dim U = m$ и $U = \langle e_1, \ldots, e_m \rangle$. Так как $\E = U \oplus U^\perp$, то $\dim U^\perp = n - m$ и \\$U^\perp = \langle e_{m+1}, \ldots, e_n\rangle$, где $\e = (e_1, \ldots, e_n)$ --- базис $\E$. + +Тогда матрица $\phi$ в базисе $\e$ имеет следующий блочный вид: +$$ +\begin{pmatrix}A & B \\ C & D\end{pmatrix}, \quad A \in M_m,\ D \in M_{n-m}. +$$ +Когда $U$ --- $\phi$-инвариантно, то есть $\phi(U) \subseteq U$, эта матрица принимает вид $\begin{pmatrix}A & B \\ 0 & D\end{pmatrix}$, так как базисные векторы $e_1,\ldots e_m$ переходят в себя, не затрагивая векторы $e_{m+1}, \ldots, e_n$. И мы хотим доказать, что $U^\perp$ тоже является $\phi$-инвариантным подпространством, то есть блок $B$ также равен нулю, то есть матрица $\phi$ в базисе $\e$ имеет вид $\begin{pmatrix}A & 0 \\ 0 & D\end{pmatrix}$. + +\begin{proof} + Известно, что $\phi = \phi^*$ и $\phi(U) \subseteq U$. + Мы хотим, чтобы $\varphi(U^\perp) \subseteq U^\perp$. Для этого нам достаточно показать, что $(x, \phi(y)) = 0$ для любых векторов $x \in U$ и $y \in U^\perp$. + \[ + (x,\varphi(y)) = (\varphi^*(x), y) = (\underbrace{\varphi(x)}_{\in U}, \underbrace{y}_{\in U^\perp}) = 0 + \] +\end{proof} + +\begin{Suggestion} + У самосопряжённого оператора $\varphi$ есть собственный вектор над $\mathbb{R}$. +\end{Suggestion} + +\begin{proof} + Ранее в курсе мы уже доказывали, что у $\phi$ существует одномерное или двумерное $\phi$-инвариантное подпространство. Рассмотрим соответствующие случаи. + +\begin{enumerate} + \item Если существует одномерное $\phi$-инвариантное подпространство, то его порождающий вектор является собственным. + + \item Пусть $U \subseteq \mathbb{E}$ --- двумерное $\phi$-инвариантное подпространство и $\mathbb{e} = (e_1, e_2)$ --- его ортонормированный базис. Пусть $\psi \in L(U)$ --- ограничение $\varphi$ на $U$. В прошлый раз мы уже доказывали, что матрица $\psi$ имеет симметрический вид, то есть $A(\psi, \mathbb{e}) = \begin{pmatrix} + a& b\\ + b& c + \end{pmatrix}$. + Рассмотрим его характеристический многочлен: + \begin{gather*} + \chi_\psi(t) = (-1)^2\begin{vmatrix} + a-t& b\\ + b& c-t + \end{vmatrix} = t^2 - (a + c)t + ac - b^2 = 0;\\ + D = (a - c)^2 + 4b^2 \geqslant 0. + \end{gather*} + Так как дискриминант неотрицательный, то у $\chi_\psi(t)$ есть хотя бы один корень. Следовательно, у $\psi$ есть собственный вектор $v$. Но $\psi$ --- ограничение $\phi$, так что вектор $v$ тоже является для него собственным. +\end{enumerate} + +\end{proof} + +\begin{Theorem} + У всякого самосопряжённого линейного оператора есть ортонормированный базис из собственных векторов. В частности, $\varphi$ диагонализуем над $\mathbb{R}$ и его характеристический многочлен разлагается в произведение линейных сомножителей. +\end{Theorem} + +\begin{Consequence} + Всякая симметричная матрица над $\mathbb{R}$ подобна диагональной. +\end{Consequence} + +\begin{proof} + Докажем индукцией по $n$. + + Для $n = 1$ всё очевидно. Если $n > 1$, то у $\varphi$ есть собственный вектор $v$. Положим $e_1 = \cfrac{v}{|v|}$ и $U = \langle e_1\rangle^\perp$. Тогда $\dim U = n - 1$, причем $U$ --- $\varphi$-инвариантное подпространство (см. предыдущее предложение). По предположеню индукции в $U$ есть ортонормированный базис из собственных векторов $(e_2,\ldots, e_n)$. Тогда $(e_1,\ldots, e_n)$ --- искомый базис. +\end{proof} + +\begin{Consequence} + Пусть $\varphi$ --- самосопряженный линейный оператор, и $\lambda, \mu$ --- его собственные значения. Тогда $V_\lambda(\varphi)\perp V_\mu(\varphi)$ при $\lambda \neq \mu$. +\end{Consequence} + +\begin{proof}\ + \begin{enumerate} + \item \underline{Координатный способ.} Пусть $\mathbb{e} = (e_1, \ldots, e_n)$ --- ортонормированный базис из собственных векторов, где $\varphi(e_i) = \lambda_ie_i$. Тогда для произвольного вектора $x = x_1e_1 + \ldots + x_ne_n$ из $V$ верно, что $\varphi(x) = x_1\lambda_1 e_1 + \ldots + x_n \lambda_n e_n$. + + Несложно понять, что если $x \in V_\l(\phi)$, то есть $\phi(x) = \l x$, то тогда $x$ принадлежит линейной оболочке тех базисных векторов, чье собственное значение равно $\l$: $x \in \langle e_i \mid \l_i = \l \rangle$. А так как базисные векторы попарно ортогональны в силу свойств выбранного базиса, то как раз получаем, что $V_\l(\phi) \perp V_\mu(\phi)$, если $\l \neq \mu$. + \item \underline{Бескоординатный способ.} Возьмем произвольные векторы $x \in V_\l(\phi)$ и $y \in V_\mu(\phi)$. Тогда: + $$ + \lambda(x,y) = (\lambda x, y) = (\varphi(x), y) = (x, \varphi(y)) = (x, \mu y) = \mu (x, y). + $$ + А поскольку $\lambda \neq \mu$, то $(x,y) = 0$. + \end{enumerate} +\end{proof} + +\begin{Consequence}[Приведение квадратичной формы к главным осям] + Для любой квадратичной формы $Q$ над $\mathbb{E}$ существует ортонормированный базис, в котором $Q$ имеет канонический вид. + $$ + Q(x_1, \ldots, x_n) = \lambda_1 x_1^2 + \ldots + \lambda_n x_n^2. + $$ + Причем числа $\lambda_1, \ldots, \lambda_n$ определены однозначно с точностью до перестановки. +\end{Consequence} + +Это более сильное утверждение, чем мы доказывали ранее, так как теперь мы говорим именно про ортонормированный базис. + +\begin{proof} + Существует единственный самосопряжённый линейный оператор $\phi$ в $\mathbb{E}$ такой, что $Q(v) = (v, \varphi(v))$. Если $\mathbb{e}$ --- ортонормированный базис, то матрица $Q$ в базисе $\mathbb{e}$ будет равна матрице $\varphi$ в базисе $\mathbb{e}$. Числа $\lambda_1, \ldots, \lambda_n$ являются собственными значениями $\varphi$. +\end{proof} + +\begin{Consequence} + Пусть $A\in M_n(\mathbb{R}), A = A^T$. Тогда существует ортогональная матрица $C$ такая, что + $$ + C^TAC = C^{-1} AC = D = \mathrm{diag}(\lambda_1, \ldots, \lambda_n). + $$ +\end{Consequence} + +\subsection{Ортогональные линейные операторы} + +\begin{Def} + Линейный оператор $\varphi \in L(\mathbb{E})$ называется ортогональным, если + $$ + (\varphi(x), \varphi(y)) = (x,y), \quad \forall x, y \in \E. + $$ + Другими словами, $\varphi$ сохраняет скалярное произведение, осуществляет изоморфизм $\E$ на себя. +\end{Def} + +\begin{Suggestion} +Пусть $\phi$ --- линейный оператор в $\E$. Тогда следующие условия эквивалентны: +\begin{enumerate} +\item $\phi$ --- ортогональный линейный оператор; +\item $|\phi(x)| = |x|$ для всех $x \in \E$, то есть $\phi$ сохраняет длины; +\item существует $\phi^{-1}$, причем $\phi^{-1} = \phi^*$, то есть $\phi \cdot \phi^* = \phi^*\cdot \phi = \id$; +\item если $\e$ --- ортонормированный базис, то $A(\phi, \e)$ --- ортогональная матрица; +\item если $(e_1, \ldots, e_n)$ --- ортонормированный базис, то $(\phi(e_1), \ldots, \phi(e_n))$ --- тоже ортонормированный базис. +\end{enumerate} +\end{Suggestion} + +\begin{proof} +Везде здесь $x, y \in \E$. +\begin{itemize}[align=left] +\item[$(1) \Rightarrow (2)$] +$$ +|\phi(x)| = \sqrt{(\phi(x), \phi(x))} = \sqrt{(x, x)} = |x| +$$ +\item[$(2) \Rightarrow (1)$] Используем поляризацию (см. лекция 26). +$$ +(\phi(x), \phi(y) = \frac{1}{2}(|\phi(x + y)|^2 - |\phi(x)|^2 - |\phi(y)|^2) = \frac{1}{2}(|x + y|^2 - |x|^2 - |y|^2) = (x, y) +$$ +\item[$(1)\&(2) \Rightarrow (3)$] Найдем ядро $\phi$: +\begin{gather*} +\phi(x) = 0 \quad \Rightarrow \quad |\phi(x)| = 0 \quad \Rightarrow \quad |x| = 0 \quad \Rightarrow \quad x = 0 +\end{gather*} +Итого, $\Ker \phi = \{0\}$. Значит, существует $\phi^{-1}$. Теперь докажем, что $\phi^{-1} = \phi^*$: +\begin{gather*} +(\phi^{-1}(x), y) = (\phi(\phi^{-1}(x)), \phi(y)) = (x, \phi(y)) +\end{gather*} +Получили, что $\phi^{-1}$ является сопряженным к $\phi$ по определению. +\item[$(3) \Rightarrow (1)$] +$$ +(\phi(x), \phi(y)) = (\phi^*(\phi(x)), y) = (x, y) +$$ +\item[$(4) \Leftrightarrow (5)$] Пусть $\e = (e_1, \ldots, e_n)$ --- ортонормированный базис. Тогда верно, что +$$ +(\phi(e_1), \ldots, \phi(e_n)) = (e_1, \ldots, e_n) \cdot C, \quad C = A(\phi, \e) +$$ +Матрица $C$ является ортогональной тогда и только тогда, когда $(\phi(e_1), \ldots, \phi(e_n))$ --- ортонормированный базис. +\item[$(3) \Leftrightarrow (4)$] Пусть $\e$ --- ортонормированный базис, $C = A(\phi, \e)$. Тогда $A(\phi^*, \e) = C^T$ и условие, что $\phi\cdot\phi^* = id$ равносильно тому, что $C\cdot C^T = E$, то есть $C$ --- ортогональная матрица. +\end{itemize} +\end{proof} + +\begin{Examples} +Тут надо придумать, как записывать. +\end{Examples} + +\begin{Suggestion} + Пусть $\varphi$ --- ортогональный линейный оператор в $\E$. Если $U \subseteq \mathbb{E}$ ---\\ $\phi$-инвариантное подпространство в $\E$, то $U^\perp$ тоже $\varphi$-инвариантно. +\end{Suggestion} + +\begin{proof} +Рассмотрим $\psi$ --- ограничение $\phi$ на $U$. Оно, очевидно, тоже сохраняет длины, то есть также является ортогональным оператором. Следовательно, существует $\psi^{-1}$. + +Достаточно показать, что $(x, \phi(y)) = 0$ для любых векторов $x \in U$ и $y \in U^\perp$. +\begin{gather*} +(x, \phi(y)) = (\psi(\psi^{-1}(x)), \phi(y)) = (\phi(\psi^{-1}(x)), \phi(y)) = (\underbrace{\psi^{-1}(x)}_{\in U}, \underbrace{y}_{\in U^\perp}) = 0 +\end{gather*} +\end{proof} + +Пусть $\Pi(\alpha) = \begin{pmatrix} +\cos\alpha & \sin\alpha \\ +\sin\alpha & \cos\alpha +\end{pmatrix}$. + +\begin{Theorem} +Пусть $\phi$ --- ортогональный линейный оператор в $\E$. Тогда существует ортонормированный базис $\e$ такой, что матрица $A(\phi, \e)$ имеет следующий блочно-диагональный вид: +$$ +A(\phi, \e) := +\begin{pmatrix} +\Pi(\alpha)\\ +&\ddots \\ +&&\Pi(\alpha)\\ +&&&-1\\ +&&&&\ddots\\ +&&&&&-1\\ +&&&&&& 1\\ +&&&&&&& \ddots \\ +&&&&&&&& 1 +\end{pmatrix}. +$$ +\end{Theorem} + + +\end{document} diff --git a/probability-theory/main.pdf b/probability-theory/main.pdf new file mode 100644 index 0000000..1a8dfa8 Binary files /dev/null and b/probability-theory/main.pdf differ diff --git a/probability-theory/tex/definitions.sty b/probability-theory/tex/definitions.sty new file mode 100644 index 0000000..da9cb66 --- /dev/null +++ b/probability-theory/tex/definitions.sty @@ -0,0 +1,62 @@ +%% Символы +\newcommand\independent{\protect\mathpalette{\protect\independenT}{\perp}} % Знак "независимы" +\def\independenT#1#2{\mathrel{\rlap{$#1#2$}\mkern2mu{#1#2}}} + +\providecommand\given{} +\DeclarePairedDelimiterX\brackets[1]{(}{)}{ + \renewcommand\given{ \nonscript\: + \delimsize\vert + \nonscript\: + \mathopen{} + \allowbreak} + #1 +} +\DeclarePairedDelimiterX\squarebrackets[1]{[}{]}{ + \renewcommand\given{ \nonscript\: + \delimsize\vert + \nonscript\: + \mathopen{} + \allowbreak} + #1 +} +\let\Pr\undefined +\NewDocumentCommand{\Pr}{g}{\mathsf{P}\IfNoValueTF{#1}{}{\brackets*{#1}}} +\NewDocumentCommand{\E}{g}{\mathsf{E}\IfNoValueTF{#1}{}{\squarebrackets*{#1}}} +\NewDocumentCommand{\D}{g}{\mathsf{D}\IfNoValueTF{#1}{}{\squarebrackets*{#1}}} +\newcommand{\cov}{\operatorname{\mathsf{cov}}} % Ковариация +\newcommand{\eqdist}{\overset{d}{=}} % Одинаково распределённые величины +\newcommand{\prto}{\xrightarrow{\Pr}} % Сходимость по вероятности (probably to) +\newcommand{\asto}{\xrightarrow{\text{п.н.}}} % Сходимость почти наверное (almost surely to) +\newcommand{\N}{\mathbb{N}} % Натуральные числа +\newcommand{\Z}{\mathbb{Z}} % Целые числа +\newcommand{\R}{\mathbb{R}} % Действительные числа +\newcommand{\F}{\mathcal{F}} % +\renewcommand{\leq}{\leqslant} % Меньше или равно +\renewcommand{\geq}{\geqslant} % Больше или равно +\renewcommand{\phi}{\varphi} % Фи +\renewcommand{\epsilon}{\varepsilon} % Эпсилон +\renewcommand{\emptyset}{\varnothing} % Пустое множество + +%% Алгоритмы +\renewcommand{\algorithmicrequire}{\textbf{Вход:}} +\renewcommand{\algorithmicensure}{\textbf{Выход:}} +\renewcommand{\algorithmiccomment}[1]{\hspace*{\fill}\{#1\}} +\floatname{algorithm}{Алгоритм} +\newcommand{\algname}[1]{\textsc{#1}} + +%% Теоремы и иже с ними +\theoremstyle{remark} +\newtheorem*{remark}{Примечание} +\newtheorem*{exercise}{Упражнение} + +\theoremstyle{definition} +\newtheorem{definition}{Определение} + +\theoremstyle{plain} +\newtheorem*{frequency-stability}{Принцип устойчивости частоты} +\newtheorem*{law-of-total-probability}{Формула полной вероятности} +\newtheorem*{lemma}{Лемма} +\newtheorem{theorem}{Теорема} +\newtheorem{problem}{Задача} +\newtheorem*{hypothesis}{Гипотеза} +\newtheorem*{consequence}{Следствие} \ No newline at end of file diff --git a/probability-theory/tex/header.sty b/probability-theory/tex/header.sty new file mode 100644 index 0000000..59a304f --- /dev/null +++ b/probability-theory/tex/header.sty @@ -0,0 +1,110 @@ +%% Настройка поддержки русского языка +\usepackage{cmap} % Поиск по кириллице +\usepackage{mathtext} % Кириллица в формулах +\usepackage[T1,T2A]{fontenc} % Кодировки шрифтов +\usepackage[utf8]{inputenc} % Кодировка текста +\usepackage[english,russian]{babel} % Подключение поддержки языков + +%% Настройка размеров полей +\usepackage[top=1in, bottom=1in, left=0.8in, right=0.8in]{geometry} + +\usepackage{xparse} + +%% Математические пакеты +\usepackage[fleqn]{mathtools} % Тот же amsmath, только с некоторыми поправками +\usepackage{amssymb} % Математические символы +\usepackage{amsthm} % Оформление теорем +\usepackage{amstext} % Текстовые вставки в формулы +\usepackage{amsfonts} % Математические шрифты +\usepackage{icomma} % "Умная" запятая: $0,2$ --- число, $0, 2$ --- перечисление +\usepackage{enumitem} % Для выравнивания itemize (\begin{itemize}[align=left]) +\usepackage{array} % Таблицы и матрицы + +% Пакеты для алгоритмов +\usepackage{algorithm} +\usepackage{algorithmicx} +\usepackage[noend]{algpseudocode} +\usepackage{listings} + +%% Шрифты +\usepackage{euscript} % Шрифт Евклид +\usepackage{mathrsfs} % \mathscr{} + +%% Графика +\usepackage[pdftex]{graphicx} % Вставка картинок +\graphicspath{{images/}} % Стандартный путь к картинкам +\usepackage{tikz} % Рисование всего +\usepackage{pgfplots} % Графики +\usepackage{circuitikz} % Электрические цепи +\usepackage{wrapfig} % Обволакивание изображений текстом +\usetikzlibrary{patterns} + +%% Прочие пакеты +\usepackage{indentfirst} % Красная строка в начале текста +\usepackage{epigraph} % Эпиграфы +\usepackage{fancybox,fancyhdr} % Колонтитулы +\usepackage[colorlinks=true, urlcolor=blue]{hyperref} % Ссылки +\usepackage{titlesec} % Изменение формата заголовков +\usepackage[normalem]{ulem} % Для зачёркиваний +\usepackage[makeroom]{cancel} % И снова зачёркивание (на этот раз косое) +\usepackage{makecell} % Разбиение клетки по диагонали +\usepackage{xifthen} % if-else в определениях комманд + +%% Прочее +\mathtoolsset{showonlyrefs=true} % Показывать номера только у тех формул, + % на которые есть \eqref{} в тексте. +\renewcommand{\headrulewidth}{1.8pt} % Изменяем размер верхнего отступа колонтитула +\renewcommand{\footrulewidth}{0.0pt} % Изменяем размер нижнего отступа колонтитула + + +%% Замена цвета гиперссылки на заметку на синий +\makeatletter +\def\@footnotecolor{red} +\define@key{Hyp}{footnotecolor}{% + \HyColor@HyperrefColor{#1}\@footnotecolor% +} +\def\@footnotemark{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \stepcounter{Hfootnote}% + \global\let\Hy@saved@currentHref\@currentHref + \hyper@makecurrent{Hfootnote}% + \global\let\Hy@footnote@currentHref\@currentHref + \global\let\@currentHref\Hy@saved@currentHref + \hyper@linkstart{footnote}{\Hy@footnote@currentHref}% + \@makefnmark + \hyper@linkend + \ifhmode\spacefactor\@x@sf\fi + \relax +}% +\makeatother + +%% Параметры колонтитулов +\hypersetup{footnotecolor=blue} +\fancyfoot{} +\fancyhead[RO,LE]{\thepage} +\fancyhead[LO]{\leftmark} +\fancyhead[RE]{\rightmark} + +%% Сброс счётчика задач в каждой section +\makeatletter +\@addtoreset{problem}{section} +\makeatother + +%% Титульный лист +\renewcommand{\titlepage}{\begingroup + \hbox{ + \hspace*{0.12\textwidth} + \rule{1pt}{\textheight} + \hspace*{0.05\textwidth} + \parbox[b]{0.775\textwidth}{ + {\includegraphics[width=\linewidth]{image}}\\[2\baselineskip] + {\noindent\Huge\bfseries Теория вероятностей}\\[\baselineskip] + {\large\textrm{Конспекты лекций и семинаров}}\\[3\baselineskip] + {\Large\textsc{Лектор: Д.А. Шабанов}}\\[\baselineskip] + {Конспекты вели Денис Беляков, Никита Попов и Алексей Хачиянц}\\[6\baselineskip] + {\noindent НИУ ВШЭ, 2016-2017}\\[\baselineskip] + } + } + \endgroup +} diff --git a/probability-theory/tex/image.png b/probability-theory/tex/image.png new file mode 100644 index 0000000..5820b5c Binary files /dev/null and b/probability-theory/tex/image.png differ diff --git a/probability-theory/tex/lecture_1_09.09.2016.tex b/probability-theory/tex/lecture_1_09.09.2016.tex new file mode 100644 index 0000000..ea07677 --- /dev/null +++ b/probability-theory/tex/lecture_1_09.09.2016.tex @@ -0,0 +1,170 @@ +\section{Лекция от 09.09.2016} +\subsection{Введение. Принцип устойчивости частоты} +Чем занимается теория вероятностей? Она изучает \emph{случайные} явления. Допустим, мы провели какой-либо эксперимент. Можем ли мы что-то заранее сказать о результате? +\begin{itemize} + \item Если да, то результат называют \emph{детерминированным}. Пример такого эксперимента~--- выбрасывание кирпича из окна. Очевидно, что кирпич упадёт на землю\footnote{Если его не запустили с первой космической скоростью, конечно.} и результат предопределён. Такие задачи изучают в той же линейной алгебре или где-либо ещё, но не в теории вероятностей. + \item А теперь предположим, что заранее сказать, каков будет результат, невозможно. Например, точно сказать, какой стороной упадёт подброшенная монетка, вряд ли получится. Тогда результат называют \emph{недетерминированным}. Именно задачи с недетерминированным результатом и изучаются в теории вероятностей. +\end{itemize} +Небольшое историческое отступление~--- вообще говоря, теория вероятностей появилась в связи с изучением азартных игр наподобие рулетки ещё в средних веках. Но тогда она представляла собой скорее набор эмпирических фактов, чем полноценную науку. Теория вероятностей стала такой, какой она является сейчас, лишь в XX веке благодаря трудам А.Н. Колмогорова. + +Хорошо, а как изучаются случайные процессы? Ну выпала решка, и что? На самом деле теория вероятностей не о единичных экспериментах, а об \emph{асимптотике}. Это значит следующее: если проводить серию одинаковых экспериментов, то теория вероятностей поможет предсказать частоту, с которой будет появляться какой-либо ответ. + +Теория вероятностей держится на крайне важном \emph{принципе устойчивости частоты}. Перед тем, как ввести формальное определение, рассмотрим пару экспериментов, связанных с подбрасыванием монетки: +\begin{itemize} + \item В XVIII веке Жорж-Луи Леклерк де Бюффон провёл эксперимент, подбросив монетку 4040 раз. Из них в 2048 бросках выпал герб. В итоге частота составила около 0.506. + \item В XIX веке пошли ещё дальше --- Карл Пирсон подбросил монетку 24000 раз.\footnote{Оставим вопрос о том, как он не поленился провернуть это, без ответа.} У него получилось так, что герб выпал 12012 раз. В итоге частота составила 0.5005. +\end{itemize} +Отсюда видно, что эксперименты дают частоту, близкую к \(1/2\). + +Неформально говоря, принцип формулируется так: если мы проводим серию одинаковых экспериментов, то количество появлений одного определённого ответа при делении на число экспериментов сходится к некоторому числу \(p \in [0, 1]\). Теперь можно ввести формальное определение. +\begin{frequency-stability} + Пусть \(A\)~--- некоторое событие, а \(v_{n}(A)\)~--- число экспериментов, в которых происходит событие \(A\) среди первых \(n\). Тогда \[\lim_{n \to \infty}\frac{v_{n}(A)}{n} = p,\quad p \in [0, 1].\] +\end{frequency-stability} +Получаемое число \(p\) называют \emph{вероятностью} события \(A\) и обозначают \(\Pr(A)\). Например, \(\Pr(\text{встретить живого динозавра на улице}) = 0\), так как они все вымерли. + +\subsection{Вероятностное пространство. Простейшие свойства вероятности} +Именно после введения этого понятия Колмогоровым теория вероятностей перестала быть прежней. Введём определение для дискретного случая (общий оставим на потом): +\begin{definition} + \emph{Дискретным вероятностным пространством} называется пара \((\Omega, \Pr)\), где \(\Omega\)~--- \emph{множество элементарных исходов}, а \(\Pr\)~--- \emph{вероятность} на \(\Omega\). +\end{definition} + +Множество элементарных исходов \(\Omega\)~--- некоторое конечное или счётное множество. Элемент \(\omega \in \Omega\) называют \emph{элементарным исходом}. Полагается, что в случайном эксперименте обязательно получается один и только один элементарный исход. + +Примеры множеств элементарных исходов: +\begin{enumerate} + \item \(\Omega = \left\{\text{О}, \text{Р}\right\}\)~--- бросок монеты. + \item \(\Omega = \left\{\omega_1, \ldots, \omega_6\right\}\), где \(\omega_i = \{\)выпало \(i\) очков\(\}\)~--- бросок игрального кубика. + \item \(\Omega = \left\{\omega_1, \ldots, \omega_n, \ldots \right\}\), где \(\omega_i = \{\)на данный момент горит \(i\) зданий\(\}\)~--- предсказание пожаров в городе. +\end{enumerate} + +\begin{definition} + Подмножество \(A \subseteq \Omega\) называется \emph{событием} на вероятностном пространстве \((\Omega, \Pr)\). +\end{definition} +Пример события: пусть подбрасывают игральную кость, и \(A\) = \(\{\)выпало чётное число очков\(\}\). Тогда \(A = \left\{\omega_2, \omega_4, \omega_6 \right\}\). + +\begin{definition} + Отображение \(\Pr : \Omega \to [0, 1]\) называют \emph{вероятностью}\footnote{В общем случае вероятность ещё могут называть \emph{вероятностной мерой}.}, если \(\sum\limits_{\omega \in \Omega} \Pr(\omega) = 1.\) В случае счётного множества \(\Omega\) данный ряд должен сходиться абсолютно. +\end{definition} + +Пусть у нас есть некоторое событие \(A\) на вероятностном пространстве \((\Omega, \Pr)\). Как посчитать его вероятность? +\begin{definition} + \emph{Вероятностью события} \(A \subseteq \Omega\) называют \(\Pr(A) = \sum\limits_{\omega \in A} \Pr(\omega).\) +\end{definition} + +\begin{definition} + Пусть \(A\)~--- некое событие. Тогда \emph{дополнением} к событию \(A\) называют событие \(\overline{A} = \Omega \setminus A\). +\end{definition} + +Перед тем, как идти дальше, напомним определение дизъюнктного объединения. +\begin{definition} + Пусть есть множества \(A_1, A_2, \ldots, A_n\). Тогда \emph{дизъюнктным объединением} множеств называют объединение попарно непересекающихся ``копий'' множеств: \[\bigsqcup_{i = 1}^{n} A_i = \bigcup_{i = 1}^{n} \left\{(x, i) \mid x \in A_i\right\}.\] В нашем случае полагается, что если пишут дизъюнктное объединение, то множества попарно не пересекаются. +\end{definition} + +Рассмотрим некоторые свойства вероятности. +\begin{theorem}[Простейшие свойства вероятности] + Для любого дискретного вероятностного пространства \((\Omega, \Pr)\) выполняется следующее: + \begin{enumerate} + \item \(\Pr(\Omega) = 1\), \(\Pr(\emptyset) = 0\). + \item Конечная аддитивность: \(\Pr\left(\bigsqcup\limits_{i = 1}^{n} A_i\right) = \sum\limits_{i = 1}^{n} \Pr(A_i)\). + \item \(\Pr(A) + \Pr(\overline{A}) = 1\). + \item \(\Pr(A \cup B) = \Pr(A) + \Pr(B) - \Pr(A \cap B)\). + \item Для любого набора событий \(A_1, A_2, \ldots, A_n\) \(\Pr\left(\bigcup\limits_{i = 1}^{n} A_i\right) \leq \sum\limits_{i = 1}^{n} \Pr(A_i)\). + \item Счётная аддитивность: \(\Pr\left(\bigsqcup\limits_{i = 1}^{\infty} A_i\right) = \sum\limits_{i = 1}^{\infty} \Pr(A_i).\) + \end{enumerate} + Последнее свойство выполняется только для счётного \(\Omega\). +\end{theorem} +\begin{proof} + Распишем доказательства для каждого пункта по отдельности: + \begin{enumerate} + \item \(\Pr(\Omega) = 1\) следует из определения вероятности, а \(\Pr(\emptyset) = 0\) следует из определения вероятности события. + + \item Случай с конечным множеством \(\Omega\) очевиден. Тогда положим, что \(\Omega\) счётно, то есть \(\Omega = \left\{\omega_i \mid i \in \N \right\}\). + + Пусть есть некоторое событие \(A\). Тогда представим его вероятность в удобном для нас виде: + \[\Pr(A) = \sum_{\omega \in A} \Pr(\omega) = \sum_{i\,:\,\omega_i \in A} \Pr(\omega_i) = \lim_{N \to \infty}\ \sum_{\substack{i\,:\, \omega_i \in A\\i < N}} \Pr(\omega_i).\] + Теперь распишем вероятность дизъюнктного объединения событий \(A_1, A_2, \ldots, A_n\): + \begin{multline*} + \Pr\left(\bigsqcup_{i = 1}^{n} A_i\right) = \sum_{\omega\,\in\,\bigsqcup A_i} \Pr(\omega) = \lim_{N \to \infty} \left(\sum_{\substack{i\,:\,\omega_i\,\in\,\bigsqcup A_i\\i < N}} \Pr(\omega_i)\right) = \lim_{N \to \infty} \sum_{i = 1}^{n} \sum_{\substack{j\,:\,\omega_j\,\in\,A_i\\j < N}} \Pr(\omega_j) = \\ = \sum_{i = 1}^{n} \lim_{N \to \infty} \sum_{\substack{j\,:\,\omega_j\,\in\,A_i\\j < N}} \Pr(\omega_j) = \sum_{i = 1}^{n} \Pr(A_i). + \end{multline*} + + \item Согласно второму пункту, \(1 = \Pr(\Omega) = \Pr(A \cup \overline{A}) = \Pr(A) + \Pr(\overline{A})\). + + \item Так как \(A \cup B = A \cup (B \setminus A)\) и \(A \cap (B \setminus A) = \emptyset\), то \(\Pr(A \cup B) = \Pr(A) + \Pr(B \setminus A)\). Далее, заметим, что \(B \setminus A = B \setminus (A \cap B)\). Тогда \(\Pr(A \cup B) = \Pr(A) + \Pr(B \setminus (A \cap B))\). + + Рассмотрим второй член. Заметим, что \(\Pr(A \cap B) + \Pr(B \setminus (A \cap B)) = \Pr(B)\). + Тогда получаем, что \(\Pr(A \cup B) = \Pr(A) + \Pr(B) - \Pr(A \cap B)\). + + \item Докажем это утверждение по индукции. База была доказана в пункте 4 (так как \(\Pr(A \cap B) \geq 0\)). Теперь рассмотрим шаг индукции. Пусть утверждение верно для какого-то \(m\). Тогда + \(\Pr\left(\bigcup\limits_{i = 1}^{m + 1} A_i\right) \leq \Pr(A_{m + 1}) + \Pr\left(\bigcup\limits_{i = 1}^{m} A_i\right) \leq \sum\limits_{i = 1}^{m + 1} \Pr(A_i)\). + + \item За доказательством этого пункта обращайтесь к учебнику матанализа на тему частичных сумм и абсолютной сходимости.\footnote{На самом деле я попробую найти доказательство. Когда-нибудь. Но не сейчас. (А.Х.)} + \end{enumerate} +\end{proof} + +\subsection{Классическая модель. Примеры} +Пусть \((\Omega, \Pr)\)~--- некоторое конечное вероятностное пространство, при этом все элементарные исходы равновероятны. Тогда легко посчитать вероятность элементарного исхода: \(\Pr(\omega) = \frac{1}{|\Omega|}\) для всех \(\omega \in \Omega\). Такую модель называют \emph{классической}. + +Как посчитать вероятность события в классической модели? Очень просто: \(\Pr(A) = \frac{|A|}{|\Omega|}\) для всех \(A \subseteq \Omega\). + +Рассмотрим некоторые примеры классических моделей. +\begin{enumerate} + \item Бросок монетки. В таком случае \(\Omega = \{\text{О}, \text{Р}\}\) и \(\Pr(\text{О}) = \Pr(\text{Р}) = \frac{1}{2}\). + + \item Бросок двух монеток. С этой моделью связано одно заблуждение Д'Аламбера. Он рассуждал следующим образом: так как \(\Omega = \{\text{ОО}, \text{РР}, \text{ОР}\}\), то \(\Pr(\text{ОО}) = \Pr(\text{РР}) = \Pr(\text{ОР}) = \frac{1}{3}\). Но это опровергается экспериментами. И как это исправить? Есть два варианта: + \begin{enumerate} + \item Можно сказать, что модель не является классической и поправить вероятности: \(\Pr(\text{ОО}) = \Pr(\text{РР}) = \frac{1}{4}\), \(\Pr(\text{ОР}) = \frac{1}{2}\). + \item А можно просто изменить множество элементарных исходов. Начнём учитывать порядок выпадения: \(\Omega = \{\text{ОО}, \text{РР}, \text{ОР}, \text{РО}\}\). Такая модель уже является классической. + \end{enumerate} + Рассуждая в стиле Д'Аламбера, можно прийти к выводу, что вероятность встретить живого динозавра на улице равна \(\frac{1}{2}\), ведь его можно либо встретить, либо не встретить. + + \item Бросок \(n\) монет. В таком случае вероятностное пространство будет устроено следующим образом: + \(\Omega = \left\{\omega = (\omega_1, \omega_2, \ldots, \omega_n) \mid \omega_i \in \left\{\text{О}, \text{Р}\right\}\right\}\). Легко понять, что в данной модели \(2^n\) элементарных исходов. + \begin{remark} + Вероятностное пространство такого вида называют \emph{симметрической схемой Бернулли}. + \end{remark} + Но данная модель является классической только тогда, когда монетки ``честные'', то есть которые падают орлом или решкой вверх равновероятно. Если же это не так, то вероятность элементарного исхода \(\omega = (\omega_1, \omega_2, \ldots, \omega_n)\) задаётся следующей формулой: \(\Pr(\omega) = p^{\,\sum\limits_{i = 1}^{n} \omega_i}(1 - p)^{n - \sum\limits_{i = 1}^{n} \omega_i}\). + + \item Урновые схемы (размещение частиц по ячейкам). Пусть есть \(n\) различных шаров в ящике. Мы случайным образом вынимаем \(m\) шаров. Вопрос: каков размер множества элементарных исходов? Сначала приведём ответ, после чего докажем его. + \begin{center} + \begin{tabular}{|c|c|c|c|} + \hline \diaghead{Порядоквозврат}{Возврат?}{Порядок?} & Упорядоченный набор & Неупорядоченный набор \\ + \hline&&\\[-10pt] + С возвратом & \(n^{m}\) & \(C_{n + m - 1}^{m} = \dfrac{(n + m - 1)!}{m!(n - 1)!}\) \\[10pt] + \hline&&\\[-10pt] + Без возврата & \(A_{n}^{m} = \dfrac{n!}{(n - m)!}\) & \(C_{n}^{m} = \dfrac{n!}{m!(n - m)!}\) \\[10pt] + \hline + \end{tabular} + \end{center} + \begin{proof} + Будем доказывать утверждения от верхнего левого против часовой стрелки. + \begin{enumerate} + \item Пусть набор упорядочен и можно возвращать. Тогда любой элемент набора можно получить \(n\) способами (так как все элементы можно вернуть). Отсюда получаем \(n^m\). + \item Теперь положим, что набор упорядочен, но возвращать нельзя. Тогда первый элемент можно выбрать \(n\) способами, второй~--- \(n - 1\) способом и так далее до \(m\)-го элемента, который можно выбрать \(n - m + 1\) способом. По правилу умножения получаем \(\frac{n!}{(n - m)!} = A_{n}^{m}\). + \item Рассмотрим случай, когда набор неупорядочен и возвращать нельзя. Тогда необходимо посчитать количество способов выбрать \(k\) шаров из \(m\). Достаточно логично, что это равно \(\frac{A_{n}^{m}}{m!} = \frac{n!}{m!(n - m)!} = C_{n}^{m}\), так как в последовательности нам не важен порядок. + \item Осталось рассмотреть последний случай~--- неупорядоченный набор с возвратом. В этом случае нам достаточно указать, сколько раз мы выбрали каждый шар. Как это сделать? Воспользуемся методом точек и перегородок. Пусть есть \(m\) точек и нужно распределить их по \(n\) группам. Для этого нужно использовать \(n - 1\) перегородку. Тогда задача сводится к нахождению количества способов выбрать \(m\) элементов из \(n + m - 1\). А это равно \(C_{n + m - 1}^{m} = \frac{(n + m - 1)!}{m!(n - 1)!}\). + \end{enumerate} + \end{proof} +\end{enumerate} + +\subsection{Условная вероятность. Формула полной вероятности} +Пусть \((\Omega, \Pr)\)~--- дискретное вероятностное пространство. +\begin{definition} + Пусть \(A \subseteq \Omega\)~--- некоторое событие и \(B \subseteq \Omega\)~--- другое событие, причём \(\Pr(B) > 0\). Тогда \emph{условной вероятностью события \(A\) при условии \(B\)} называют \[\Pr(A \mid B) = \dfrac{\Pr(A \cap B)}{\Pr(B)}.\] + Если \(\Pr(B) = 0\), то положим, что \(\Pr(A \mid B) = 0\) для любого события \(A \subseteq \Omega\). +\end{definition} +Условную вероятность можно воспринимать следующим образом: сузим множество элементарных исходов до \(B\) и посчитаем вероятность события \(A\) на полученном множестве. +\begin{remark} + Если \(\Pr(B) > 0\), то \(\tilde{\Pr}(A) = \Pr(A \mid B)\) тоже является вероятностью на \(\Omega\). +\end{remark} +\begin{definition} + Пусть \(B_1, B_2, \ldots, B_n\)~--- некоторые события на \(\Omega\) такие, что \(\bigsqcup\limits_{i = 1}^{n} B_i = \Omega\). Тогда этот набор событий называется (конечным) \emph{разбиением} \(\Omega\). +\end{definition} +Теперь докажем важную формулу: +\begin{law-of-total-probability} + Пусть \(B_1, B_2, \ldots, B_n\)~--- разбиение \(\Omega\). Тогда для любого события \(A \subseteq \Omega\) верно, что \(\Pr(A) = \sum\limits_{i = 1}^{n} \Pr(A \mid B_i)\Pr(B_i).\) +\end{law-of-total-probability} +\begin{proof} + Так как \(A \cap \Omega = A\) и \(\bigsqcup\limits_{i = 1}^{n} B_i = \Omega\), то \(\Pr(A) = \Pr\left(A \cap \left(\bigsqcup\limits_{i = 1}^{n} B_i\right)\right)\). Заметим, что \(A \cap \left(\bigsqcup\limits_{i = 1}^{n} B_i\right) = \bigsqcup\limits_{i = 1}^{n} (A \cap B_i)\). Тогда + \(\Pr(A) = \sum\limits_{i = 1}^{n} \Pr(A \cap B_i) = \sum\limits_{i = 1}^{n} \Pr(A \mid B_i)\Pr(B_i)\). +\end{proof} +Заметим, что формула полной вероятности работает и в случае, когда \(\Pr(B_i) = 0\) для какого-то \(i\). \ No newline at end of file diff --git a/probability-theory/tex/lecture_2_16.09.2016.tex b/probability-theory/tex/lecture_2_16.09.2016.tex new file mode 100644 index 0000000..7d47895 --- /dev/null +++ b/probability-theory/tex/lecture_2_16.09.2016.tex @@ -0,0 +1,144 @@ +\section{Лекция от 16.09.2016} +\subsection{Классические задачи теории вероятностей} +\begin{problem}[Задача о сумасшедшей старушке] + Есть самолёт на \(n\) мест, в который садятся \(n\) пассажиров. Первой в него заходит безумная старушка, которая садится на случайное место. Каждый следующий пассажир действует по следующему правилу: садится на своё место, если оно свободно, и на случайное, если своё занято. С какой вероятностью + \begin{enumerate} + \item последний пассажир сядет на своё место? + \item предпоследний пассажир сядет на своё место? + \item и последний, и предпоследний пассажир сядут на свои места? + \end{enumerate} +\end{problem} +\begin{proof}[Решение] + У первого пункта есть элементарное решение. Пусть при некоторой рассадке пассажиров последний пассажир сел не на свое место (такую рассадку назовем неудачной). Тогда до прихода последнего пассажира его место было занято пассажиром A (A может быть и сумасшедшей старушкой). В момент прихода пассажира A перед ним стоит выбор~--- какое место занять. В рассматриваемой рассадке он занимает место последнего пассажира. Но с той же вероятностью он мог занять и место старушки, и в дальнейшем все пассажиры, включая последнего, займут свои собственные места. (Конечно, нужно еще пояснить, почему в момент прихода пассажира A старушкино место все еще свободно. Но это действительно так~--- нетрудно проследить, что пока старушкино место свободно, среди всех еще не вошедших пассажиров есть ровно один, чье место уже занято. Как только очередной пассажир занимает старушкино место, все остальные будут садиться только на свои места.) Таким образом, каждой неудачной рассадке соответствует удачная, которая может случиться с той же вероятностью. Это говорит о том, что ровно в половине случаев рассадка будет неудачной. + + Теперь рассмотрим формальное решение для первого пункта. Пусть \(A = \{\)последний сядет на своё место\(\}\). Если\footnote{Это уже вертолёт, скорее. (Д.А. Шабанов)} \(n = 2\), то \(\Pr(A) = \frac{1}{2}\). Теперь рассмотрим случай \(n = 3\). Пусть \(B_{i} = \{\)бабушка есла на \(i\)-е место\(\}\). По формуле полной вероятности \[\Pr(A) = \Pr(A \mid B_{1})\Pr(B_{1}) + \Pr(A \mid B_{2})\Pr(B_{2}) + \Pr(A \mid B_{3})\Pr(B_{3}) = \frac{1}{3}\left(1 + \frac{1}{2} + 0\right) = \frac{1}{2}.\] + Намечается закономерность. Попробуем сформулировать гипотезу и доказать её: + \begin{hypothesis} + Для любого \(n\) вероятность того, что последний пассажир сядет на своё место, равна \(\frac{1}{2}\). + \end{hypothesis} + \begin{proof} + По индукции. База \((n = 2)\) была доказана ранее. Теперь предположим, что утверждение верно для всех \(k < n\). Тогда докажем, что утверждение верно для \(k = n\). Опять же, распишем вероятность по формуле полной вероятности: + \[\Pr(A) = \sum\limits_{i = 1}^{n} \Pr(A \mid B_i)\Pr(B_i).\] + Заметим, что \(\Pr(B_i) = \frac{1}{n}\). Теперь посмотрим на значения условных вероятностей: + \[\Pr(A \mid B_i) = \begin{cases} + 1, & i = 1 \\ + 0, & i = n \\ + \frac{1}{2}, & 2 \leq i \leq n - 1 + \end{cases}\] + Последнее условие на значение условной вероятности следует из шага индукции, так как \(i\)-й пассажир ``становится'' бабушкой. Тогда \(\Pr(A) = \frac{1}{n}\left(1 + \frac{1}{2} + \ldots + \frac{1}{2} + 0\right) = \frac{1}{2}\). + \end{proof} + Перейдём ко второму пункту задачи. Пусть \(C = \{\)предпоследний пассажир сел на своё место\(\}\). Тогда рассмотрим \(\Pr(C)\) в случае, когда \(n = 3\). Он сможет сесть на своё место тогда и только тогда, когда бабушка не села на его место. Тогда \(\Pr(C) = \frac{2}{3}\). Попробуем доказать гипотезу, аналогичную случаю с последним пассажиром. + \begin{hypothesis} + Для любого \(n\) вероятность того, что предпоследний пассажир сядет на своё место, равна \(\frac{2}{3}\). + \end{hypothesis} + \begin{proof} + Доказательство практически такое же, как и для последнего пассажира, с тем отличием, что значения условной вероятности будут несколько другие: + \[\Pr(C \mid B_i) = \begin{cases} + 1, & i = 1, n \\ + 0, & i = n - 1 \\ + \frac{2}{3}, & 2 \leq i \leq n - 2 + \end{cases}\] + Тогда \(\Pr(C) = \frac{1}{n}\left(1 + \frac{2}{3} + \ldots + \frac{2}{3} + 0 + 1\right) = \frac{2}{3}\) + \end{proof} + Аналогичными рассуждениями можно доказать, что вероятность того, что \(i\)-й с конца пассажир сядет на своё место, равна \(\frac{i}{i + 1}\). + + Теперь приступим к третьему пункту. Докажем следующее утверждение: + \begin{hypothesis} + Вероятность этого события (обозначим его за \(D\)) равна \(\frac{1}{3}\). + \end{hypothesis} + \begin{proof} + Опять же, по индукции. Базой служит случай \(n = 3\). В таком случае условие выполнимо тогда и только тогда, когда бабушка сядет на своё место. Тогда вероятность равна \(\frac{1}{3}\) и база верна. + + Перейдём к шагу индукции. Рассуждаем абсолютно аналогично: по формуле полной вероятности \(\Pr(D) = \sum\limits_{i = 1}^{n} \Pr(D \mid B_i)\Pr(B_i)\). Значения условных вероятностей равны + \[\Pr(D \mid B_i) = \begin{cases} + 1, & i = 1 \\ + 0, & i = n - 1, n \\ + \frac{1}{3}, & 2 \leq i \leq n - 2 + \end{cases}\] + и \(\Pr(D) = \frac{1}{n}\left(1 + \frac{1}{3} + \ldots + \frac{1}{3} + 0 + 0\right) = \frac{1}{3}\). + \end{proof} + Заметим, что \(\Pr(D) = \Pr(A)\Pr(C)\). Это \sout{счастливое совпадение} \emph{неспроста}. +\end{proof} + +\begin{problem}[Задача об удачливом студенте] + Студент начал готовиться к экзамену слишком поздно и выучил только \(k\) билетов из \(n\). Студент решил схитрить и выбрать место в очереди такое, чтобы вероятность получить выученный билет была максимальной. Какое место ему выбрать? +\end{problem} +\begin{proof}[Решение] + Пусть \(A_{s} = \{\)студент вытащил хороший билет, если он встал \(s\)-тым в очереди\(\}\). Докажем следующую гипотезу: + \begin{hypothesis} + \(\Pr(A_{s}) = \frac{k}{n}\). + \end{hypothesis} + \begin{proof} + Введём разбиение \(B_{0}, B_{1}, \ldots, B_{k}\) пространства \(\Omega\), где \(B_{i} = \{\)до студента взяли ровно \(i\) хороших билетов\(\}\). Тогда по формуле полной вероятности \[\Pr(A_{s}) = \sum\limits_{i = 0}^{k} \Pr(A_{s} \mid B_{i})\Pr(B_{i}).\] + Посчитаем \(\Pr(B_{i})\). Для определения количества успешных исходов нужно выбрать \(i\) билетов из \(k\) хороших и \(s - i - 1\) из \(n - k\) плохих. Тогда \[\Pr(B_{i}) = \frac{\binom{k}{i}\binom{n - k}{s - i - 1}}{\binom{n}{s - 1}}.\] + Теперь надо определить значение условной вероятности \(\Pr(A_{s} \mid B_{i})\). Так как есть \(n - s + 1\) невыбранный билет и \(k - i\) из них изучены, то \(\Pr(A_{s} \mid B_{i}) = \frac{k - i}{n - s + 1}\). Тогда + \[\Pr(A) = \sum\limits_{i = 0}^{k}\frac{k - i}{n - s + 1}\frac{\binom{k}{i}\binom{n - k}{s - i - 1}}{\binom{n}{s - 1}} = \frac{k}{n}\sum\limits_{i = 0}^{k}\frac{\binom{k - 1}{i}\binom{n - k}{s - i - 1}}{\binom{n - 1}{s - 1}}.\] + Теперь заметим, что сумма справа равна 1, так как она соответствует разбиению пространства в случае, когда всего задач \(n - 1\). Тогда \(\Pr(A_{s}) = \frac{k}{n}\). + \end{proof} + В итоге как ни вставай~--- всё равно никакой разницы не будет.\footnote{Ибо по закону подлости попадётся невыученный билет.} +\end{proof} + +\subsection{Теорема Байеса} +\begin{theorem}[Байес] + Пусть \(\{B_{1}, B_{2}, \ldots, B_{n}\}\) --- разбиение \(\Omega\), причём \(\Pr(B_i) > 0\) для всех \(i \in \{1, 2, \ldots, n\}\). Тогда для любого события \(A\) такого, что \(\Pr(A) > 0\), выполняется + \[\Pr(B_i \mid A) = \frac{\Pr(A\mid B_i)\Pr(B_i)}{\sum\limits_{j = 1}^{n} \Pr(A\mid B_j)\Pr(B_j)}\] +\end{theorem} +\begin{proof} + По определению условной вероятности \(\Pr(B_i\mid A) = \frac{\Pr(A\cap B_i)}{\Pr(A)} = \frac{\Pr(A\mid B_i)\Pr(B_i)}{\Pr(A)}\). Тогда, применяя формулу полной вероятности для \(\Pr(A)\), получаем желаемое. +\end{proof} + +\subsection{Независимость событий} +\begin{definition} + События \(A\) и \(B\) на вероятностном пространстве \((\Omega, \Pr)\) называются \emph{независимыми}, если \(\Pr(A \cap B) = \Pr(A)\Pr(B)\). Иногда используется обозначение \(A \independent B\). +\end{definition} +Рассмотрим некоторые примеры независимых событий: +\begin{enumerate} + \item Задача про сумасшедшую бабушку: События \(A = \{\)последний сядет на своё место\(\}\) и \(B = \{\)предпоследний сядет на своё место\(\}\) независимы, как было доказано ранее. + + \item Бросок игральной кости. Пусть \(A = \{\)выпало чётное число очков\(\}\), а \(A = \{\)выпало число очков, кратное 3\(\}\). Докажем, что они независимы. Заметим, что \(A \cap B = \{\)число очков кратно 6\(\}\). Тогда \(\Pr(A \cap B) = \frac{1}{6} = \frac{1}{2} \cdot \frac{1}{3} = \Pr(A)\Pr(B)\). +\end{enumerate} +Данное определение работает только для двух событий. Можно ли как-то его обобщить? Попробуем ввести аналогично: +\begin{definition} + Cобытия \(A_1, \ldots, A_n\) называются \emph{попарно независимыми}, если для любых \(i\) и \(j\) таких, что \(i \neq j\), \(A_i\) независимо от \(A_j\). +\end{definition} +Однако обобщение обычно вводят по другому: +\begin{definition} + События \(A_1, a_2, \ldots, A_n\) называются \emph{независимыми по совокупности}, если для любого множества \(\{i_1, i_2, \ldots, i_k\} \subseteq \{1, 2, \ldots, n\}\) выполняется, что \(\Pr(A_{i_1}\cap\ldots\cap A_{i_k}) = \prod\limits_{j = 1}^{k} \Pr(A_{i_j})\). +\end{definition} +\begin{remark} + Если говорят про независимость событий и не указывают тип, то обычно подразумевают независимость по совокупности. +\end{remark} + +Стоит заметить, что попарная независимость~--- гораздо более слабое условие, чем независимость по совокупности. Приведём пример. Пусть есть тетраэдр, грани которого покрашены следующим образом: первая грань покрашена в красный, вторая~--- в синий, третья~--- в зелёный, а четвёртая~--- во все три цвета сразу. Его подбрасывают. Введём три события: \(A_{\text{К}} = \{\)на нижней грани есть красный цвет\(\}\), \(A_{\text{С}} = \{\)на нижней грани есть синий цвет\(\}\) и \(A_{\text{З}} = \{\)на нижней грани есть зелёный цвет\(\}\). Очевидно, что вероятность любого события~--- \(\frac{1}{2}\), а любой пары событий~--- \(\frac{1}{4}\). Однако вероятность объединения всех трёх событий равна \(\frac{1}{4}\), а не \(\frac{1}{8}\). Следовательно, события попарно независимы, но не независимы по совокупности. +\begin{exercise} + Приведите пример \(n\) событий таких, что любой набор из \(n - 1\) события независим, а все \(n\) событий вместе зависимы. +\end{exercise} + +Для независимости выполняются следующие свойства: +\begin{enumerate} + \item \(A \independent A \iff \Pr(A) = 0\text{ или }\Pr(A) = 1 \iff \text{для любого события } B\ A \independent B\). + \item \(A \independent B \implies \overline{A} \independent B\). + \item Если \(A_1, A_2, \ldots, A_n\) независимы в совокупности, то любой набор \(B_1, B_2, \ldots, B_n\) такой, что \(B_i = A_i\) или \(B_i = \overline{A_i}\), тоже независим. +\end{enumerate} + +\subsection{Случайные величины в дискретных вероятностных пространствах} +\begin{definition} + Пусть \((\Omega, \Pr)\)~--- дискретное вероятностное пространство. Тогда любое отображение \(\xi : \Omega \to \R\) называется \emph{случайной величиной}. +\end{definition} +\begin{remark} + В литературе случайную величину часто сокращают до с.в. +\end{remark} +Рассмотрим некоторые примеры случайных величин: +\begin{enumerate} + \item Широко распространённым примером случайной величины служит индикатор какого-либо события. Введём определение. + \begin{definition} + Пусть \(A \in \Omega\)~--- событие. Тогда \emph{индикатором} события \(A\) называют называется случайная величина, равная \[I_A(\omega) = \begin{cases} + 1, w \in A; \\ + 0, w \not\in A; + \end{cases}\] + \end{definition} + + \item Бросок игральной кости. Тогда случайной величиной будет число выпавших очков. + + \item Схема Бернулли: \(\Omega = \{\omega = (\omega_1 \ldots \omega_n),\; \omega_i \in \{0, 1\} \}\). В данном случае вводится случайная величина, равная \(\xi(\omega) = \sum\limits_{i=1}^{n}\omega_i\). Ещё её называют \emph{числом успехов в схеме Бернулли}. +\end{enumerate} \ No newline at end of file diff --git a/probability-theory/tex/lecture_3_23.09.2016.tex b/probability-theory/tex/lecture_3_23.09.2016.tex new file mode 100644 index 0000000..a167b30 --- /dev/null +++ b/probability-theory/tex/lecture_3_23.09.2016.tex @@ -0,0 +1,236 @@ +\section{Лекция от 23.09.2016} +\subsection{Распределение случайной величины. Примеры распределений} +Рассмотрим некоторое дискретное пространство \((\Omega, \Pr)\). Тогда случайная величина \(\xi\) на этом пространстве принимает не более, чем счетное множество значений. Пусть \(X = (x_1, x_2, \ldots, x_n, \ldots)\) --- множество значений случайной величины \(\xi\). Введём событие \(A_i = \{\omega : \xi(\omega) = x_i\}\). Его можно интерпретировать, как событие \(\{\xi\) приняло значение \(x_i\}\). Для удобства будем использовать обозначение \(A_i := \{\xi = x_i\}\). Также введем обозначение \(p_i\) для вероятности события \(A_i\): \(p_i = \Pr(A_i) = \Pr(\xi = x_i)\). + +\begin{definition} + Вместе множество значений \(X = (x_1, x_2, \ldots, x_n, \ldots)\) и набор вероятностей \((p_1, p_2, \ldots, p_n, \ldots)\) образуют то, что называется \emph{распределением случайной величины} \(\xi\). +\end{definition} +Понятно, что каждому числу \(x_i\) сопоставлено число \(p_i\). Легко заметить, что \(A_i\) образуют разбиение пространства \(\Omega\). Тогда \(\sum\limits_{i = 0}^{|X|} p_i = 1\). + +Рассмотрим некоторые известные примеры распределений: +\begin{enumerate} + \item Распределение Бернулли. + \begin{definition} + Случайная величина \(\xi\) имеет \emph{распределение Бернулли}, если она принимает всего два значения, 1 или 0, с заранее известными вероятностями \(p\) и \(q \equiv 1 - p\). Обозначение: \(\xi \sim \mathrm{Bern}(p)\). + \end{definition} + Легко понять, что \(X = \{0, 1\}\), \(\Pr(\xi = 1) = p\), \(\Pr(\xi = 0) = q\). Принято говорить, что событие \(\{\xi = 1\}\) соответствует ``успеху'', а событие \(\{\xi = 0\}\)~--- ``неудаче''. Эти названия достаточно условные, и в зависимости от конкретной задачи могут быть заменены на противоположные. + + \item Биномиальное распределение. + \begin{definition} + \emph{Биномиальное распределение} в теории вероятностей~--- распределение количества ``успехов'' \(\xi\) в последовательности из \(n\) независимых случайных экспериментов, таких, что вероятность ``успеха'' в каждом из них постоянна и равна \(p\). Обозначение: \(\xi \sim \mathrm{Bin}(n, p)\). + \end{definition} + Пусть \(x_1, \ldots, x_n\) --- последовательность независимых случайных величин с одинаковым распределением Бернулли с параметром \(p\). Тогда \(\xi = \sum\limits_{i = 1}^{n} x_i\). Посчитаем \(\Pr(\xi = k)\). Для этого необходимо выбрать \(k\) исходов из \(n\) и сказать, что они успешны. Тогда \(\Pr(\xi = k) = \binom{n}{k}p^k(1 - p)^{n - k}\). + + \item Пуассоновское распределение. + \begin{definition} + Говорят, что случайная величина \(\xi\) имеет \emph{распределение Пуассона}, если она принимает любое значение\footnote{Есть путаница, откуда считать~--- с нуля или же с единицы. Будем считать, что начинаем с единицы.} \(k \in \N\) с вероятностью \(\frac{\lambda^k}{k!}e^{-\lambda}\), где \(\lambda > 0\)~--- некоторый параметр. Обозначение: \(\xi \sim \mathrm{Pois}(\lambda)\). + \end{definition} + Почему оно вводится именно так? Об этом будет рассказано позднее. + + \item Геометрическое распределение. + \begin{definition} + Говорят, что случайная величина \(\xi\) имеет \emph{геометрическое распределение}, если она принимает любое значение \(k \in \N\) с вероятностью \(p(1 - p)^{k - 1}\). Обозначение: \(\xi \sim \mathrm{Geom}(p)\). + \end{definition} +\end{enumerate} + +\subsection{Независимость случайных величин} +Далее множество значений случайной величины \(\xi\) на вероятностном пространстве \((\Omega, \Pr)\) будем обозначать как \(\xi(\Omega)\). + +\begin{definition} + Пусть \(\xi\), \(\eta\)~--- случайные величины на вероятностном пространстве \((\Omega, \Pr)\). Будем говорить, что эти случайные величины \emph{независимы}, если для любых \(a \in \xi(\Omega)\), \(b \in \eta(\Omega)\) события \(\{\xi = a\}\) и \(\{\eta = b\}\) независимы. +\end{definition} +По опредлению независимых событий получаем, что +\[\Pr(\{\xi = a\} \cap \{\eta = b\}) = \Pr(\xi = a)\Pr(\eta = b).\] +\begin{remark} + Для простоты левую часть часто обозначают за \(\Pr(\xi = a, \eta = b)\). +\end{remark} +Теперь обобщим это понятие на произвольное количество случайных величин: +\begin{definition} + Пусть \(\xi_1, \ldots, \xi_n\) --- случайные величины на вероятностном пространстве \((\Omega, \Pr)\) и известно, что \(\xi_i\) принимает значения \((a_1^{(i)}, a_2^{(i)}, \ldots, a_n^{(i)})\). Тогда будем говорить, что случайные величины \(\xi_1, \ldots, \xi_n\) \emph{независимы (в совокупности)}, если \(\forall j_1, \ldots, j_n\) выполнено: + \[\Pr(\xi_1 = a_{j_1}^{(1)}, \ldots, \xi_n = a_{j_n}^{(n)}) = \prod\limits_{k = 1}^{n}\Pr(\xi_k = a_{j_{k}}^{(k)}).\] +\end{definition} +\begin{exercise} + Пусть \(A, B\) --- некоторые события над \((\Omega, \Pr)\). Показать, что \(A\) и \(B\) независимы тогда и только тогда, когда их индикаторы \(I_A\) и \(I_B\) независимы. +\end{exercise} +\begin{exercise} + Показать, что случайные величины \(\xi_1, \ldots, \xi_n\) независимы тогда и только тогда, когда + \[\forall \alpha_1, \alpha_2, \ldots, \alpha_n \in \R \quad \Pr(\xi_1 = \alpha_1, \ldots, \xi_n = \alpha_n) = \prod\limits_{i = 1}^{n}\Pr(\xi_i = \alpha_i)\] +\end{exercise} + +\subsection{Математическое ожидание. Свойства математического ожидания} +Опять же, зафиксируем некоторое дискретное вероятностное пространство \((\Omega, \Pr)\). +\begin{definition} + \emph{Математическим ожиданием} случайной величины \(\xi\) называют величину \(\E[\xi] = \sum\limits_{\omega \in \Omega} \xi(\omega)\Pr(\omega)\). +\end{definition} +\begin{remark} + Если \(\Omega\) счётно, то ряд \(\sum\limits_{\omega \in \Omega} \xi(\omega)\Pr(\omega)\) должен сходиться абсолютно; иначе сумма ряда не определена однозначно, так как порядок перебора \(\omega\) не задан (см. теорему Римана о перестановке членов условно сходящегося ряда). +\end{remark} +Смысл у математического ожидания случайной величины простой~--- его можно понимать как среднее значение этой случайной величины. + +Рассмотрим некоторые свойства математического ожидания. +\begin{theorem}[Простейшие свойства математического ожидания] + Пусть \(\xi, \eta\)~--- некоторые случайные величины. Тогда выполняются следующие свойства: + \begin{enumerate} + \item Матожидание линейно: \(\forall a, b \in \R\ \E[a\xi + b\eta] = a\E[\xi] + b\E[\eta]\); + \item Оно сохраняет относительный порядок: если \(\xi \leq \eta\) (то есть для любого \(\omega \in \Omega\) \(\xi(\omega) \leq \eta(\omega)\)), то \(\E[\xi] \leq \E[\eta]\); + \item Модуль математического ожидания меньше математического ожидания модуля: \(\left|\E[\xi]\right| \leq \E\left[|\xi\right|]\); + \item \(\E[\xi] = \sum\limits_{a \in \xi(\Omega)} a\Pr(\xi = a)\); + \item Для любой функции \(\phi(x)\) выполняется \(\E[\phi(\xi)] = \sum\limits_{a \in \xi(\Omega)} \phi(a)\Pr(\xi = a)\); + \item Если \(\Pr(\xi = c) = 1\) для некоторой константы \(c\), то \(\E[\xi] = c\); + \item Если \(\xi \geq 0\), то \(\E[\xi] \geq 0\); + \item Если \(E[\xi] = 0\) и \(\xi \geq 0\), то \(\Pr(\xi = 0) = 1\); + \item Если \(\xi\) и \(\eta\) независимы, то \(\E[\xi\eta] = \E[\xi]\E[\eta]\). + \end{enumerate} +\end{theorem} +\begin{proof} + Докажем пункты по порядку: + \begin{enumerate} + \item \(\E[a\xi + b\eta] = \sum\limits_{\omega \in \Omega} (a\xi+b\eta)(\omega) \Pr(\omega) = + \sum\limits_{\omega \in \Omega} a\xi(\omega) \Pr(\omega) + \sum\limits_{\omega \in \Omega}b\eta(\omega) \Pr(\omega) = a\E[\xi] + b\E[\eta]\). + \item \(\E[\xi] = \sum\limits_{\omega \in \Omega} \xi(\omega)\Pr(\omega) \leq \sum\limits_{\omega \in \Omega} \eta(\omega)\Pr(\omega) = \E[\eta]\). + \item \(\E[-\left|\xi\right|] \leq \E[\xi] \leq \E[\left|\xi\right|] \implies -\E[\left|\xi\right|] \leq \E[\xi] \leq \E[\left|\xi\right|] \implies \left|\E[\xi]\right| \leq \E\left[|\xi\right|]\) + \item + \begin{multline*} + \E[\xi] = + \sum\limits_{\omega \in \Omega} \xi(\omega)\Pr(\omega) = + \sum\limits_{a \in \xi(\Omega)}\sum\limits_{\omega\,:\,\xi(\omega) = a} \xi(\omega)\Pr(\omega) = + \sum\limits_{a \in \xi(\Omega)} \left(a\sum\limits_{\omega\,:\,\xi(\omega) = a} \Pr(\omega)\right) = \\ = + \sum\limits_{a \in \xi(\Omega)} a\Pr(\xi = a) + \end{multline*} + \item + \begin{multline*} + \E[\phi(\xi)] = + \sum\limits_{\omega \in \Omega} \phi(\xi(\omega))\Pr(\omega) = + \sum\limits_{a \in \xi(\Omega)}\sum\limits_{\omega\,:\,\xi(\omega) = a} \phi(\xi(\omega))\Pr(\omega) = \\ = + \sum\limits_{a \in \xi(\Omega)} \left(\phi(a)\sum\limits_{\omega\,:\,\xi(\omega) = a} \Pr(\omega)\right) = + \sum\limits_{a \in \xi(\Omega)} \phi(a)\Pr(\xi = a) + \end{multline*} + + \item + \begin{multline*} + \E[\xi] = \sum\limits_{\omega \in \Omega} \xi(\omega)\Pr(\omega) = \sum\limits_{\omega : \xi(\omega) = c} \xi(\omega)\Pr(\omega) + \sum\limits_{\omega : \xi(\omega) \neq c} \xi(\omega)\Pr(\omega) = c \Pr(\xi = c) + \\ + \sum\limits_{\omega : \xi(\omega) \neq c}\xi(\omega)\cdot 0 = c. + \end{multline*} + + \item \(\xi \geq 0 \implies \E[\xi] \geq \E[0] \geq 0\). + + \item \(\E[\xi] = \sum\limits_{\omega \in \Omega} \underbrace{\xi(\omega)}_{\geq 0}\underbrace{\Pr(\omega)}_{\geq 0} = 0 \implies \forall \omega \in \Omega\ \xi(\omega)\Pr(\omega) = 0\). Тогда если \(\xi(\omega) \neq 0\), то \(\Pr(\omega) = 0\). Тогда \(\Pr(\xi = 0) = 1\). + + Заметим, что если величина может быть и отрицательной, то это свойство не выполняется. Предположим, что \(\xi\) равновероятно принимает значения 1 и \(-1\). Тогда \(\E[\xi] = 0\), но \(\Pr(\xi = 0) = 0\). + + \item + \begin{multline*} + \E[\xi\eta] = + \sum_{\omega \in \Omega}\xi(\omega)\eta(\omega)\Pr(\omega) = + \left\{ + \begin{aligned} + \xi(\Omega) &= (a_1, a_2, \ldots)\\ + \eta(\Omega) &= (b_1, b_2, \ldots) + \end{aligned} + \right\} = + \sum_{i, j}\sum_{ + \substack{ + \omega:\\ + \xi(\omega) = a_i\\ + \eta(\omega) = b_j + } + }\xi(\omega)\eta(\omega)\Pr(\omega) =\\= + \sum_{i, j}a_ib_j\Pr(\xi = a_i, \eta = b_j) + \end{multline*} + Так как \(\xi \independent \eta\), то \(\Pr(\xi = a_i, \eta = b_j) = \Pr(\xi = a_i)\Pr(\eta = b_j)\) и сумма равна + \begin{multline*} + \sum_{i, j}a_ib_j\Pr(\xi = a_i)\Pr(\eta = b_j)= + \left(\sum_{i}a_i\Pr(\xi = a_i)\right)\left(\sum_{j}b_j\Pr(\eta = b_j)\right)= + \E[\xi]\E[\eta] + \end{multline*} + \end{enumerate} +\end{proof} + +Примеры использования математического ожидания: +\begin{enumerate} + \item Посчитаем математическое ожидание индикатора события \(A\): \\ \(\E[I_A] = \sum\limits_{\omega \in \Omega} I_A(\omega)\Pr(\omega) = \sum\limits_{\omega \in A} \Pr(\omega) = \Pr(A)\). + + \item Если мы рассмотрим классическую модель, т.е. такую модель, где все исходы равновероятны, то \(\E[\xi] = \frac{1}{|\Omega|}\sum\limits_{\omega \in \Omega}\xi(\omega)\). Иначе говоря, математическое ожидание в классической модели равно среднему арифметическому возможных значений \(\xi\). + + \item Пусть $\xi \sim \mathrm{Bin}(n, p)$. Тогда + \begin{multline*} + \E[\xi] = + \sum\limits_{k = 0}^{n} k\Pr(\xi = k) = + \sum\limits_{k = 1}^{n} k\binom{n}{k}p^{k}(1 - p)^{n - k} =\\= + \sum\limits_{k = 1}^{n} n\binom{n - 1}{k - 1}p^{k}(1 - p)^{n - k} = + np \sum\limits_{t=0}^{n-1} \binom{n - 1}{t}p^{t}(1 - p)^{n - 1 - t}. + \end{multline*} +\end{enumerate} + +\subsection{Дисперсия. Ковариация. Их свойства} +\begin{definition} + Пусть \(\xi\)~--- некоторая случайная величина над \((\Omega, \Pr)\). Тогда \emph{дисперсией} \(\xi\) называется \(\D[\xi] = \E[(\xi-\E[\xi])^2]\). +\end{definition} +Дисперсию случайной величины можно понимать как среднеквадратическое отклонение этой случайной величины от её среднего значения (математического ожидания). +\begin{remark} + Вероятность незначительного отклонения величины от математического ожидания, то есть \(\Pr(\E[\xi] - 2\sqrt{\D[\xi]} \leq \xi \leq \E[\xi] + 2\sqrt{\D[\xi]})\), всегда велика! Это нам пока не пригодится, но на будущее стоит запомнить. +\end{remark} +\begin{definition} + Пусть \(\xi\) и \(\eta\)~--- две случайные величины. Тогда \emph{ковариацией} этих величин называется \(\cov(\xi, \eta) = \E\left[(\xi - \E[\xi])(\eta-\E[\eta])\right]\). +\end{definition} +Ковариацию стоит воспринимать как меру зависимости двух случайных величин. +\begin{definition} + Две случайные величины \(\xi\) и \(\eta\) называют \emph{некоррелированными}, если \(\cov(\xi, \eta) = 0\). +\end{definition} +\begin{theorem}[Простейшие свойства дисперсии и ковариации] + Пусть \(\xi\),\(\eta\) и \(\chi\)~--- некоторые случайные величины. Тогда выполняются следующие свойства: + \begin{enumerate} + \item Ковариация билинейна: \(\cov(\xi, a\eta + b\chi) = a\cov(\xi, \eta) + b\cov(\xi, \chi)\); + \item \(\D[\xi] = \cov(\xi, \xi)\); + \item Для любого \(c \in \R\) верно, что \(\D[c\xi] = c^2\D[\xi]\) и \(\D[\xi + c] = \D[\xi]\); + \item Дисперсия неотрицательна: \(\D[\xi] \geq 0\). При этом \(\D[\xi] = 0 \iff \Pr(\xi = E[\xi]) = 1\); + \item Если \(\xi\) и \(\eta\) некоррелированные, то \(\D[\xi + \eta] = \D[\xi] + \D[\eta]\); + \item Связь с матожиданием: \(\D[\xi] = \E[\xi^2] - \left(\E[\xi]\right)^2\), \(\cov(\xi, \eta) = \E[\xi\eta] - \E[\xi]\E[\eta]\) + \end{enumerate} +\end{theorem} +\begin{proof} + Докажем все пункты по порядку: + \begin{enumerate} + \item По определению ковариации \(\cov(\xi, a\eta + b\chi) = \E\left[(\xi - \E[\xi])((a\eta + b\chi)-\E[a\eta + b\chi])\right]\). Распишем вторую скобку: \[(a\eta + b\chi)-\E[a\eta + b\chi] = (a\eta + b\chi) - a\E[\eta] - b\E[\chi] = a(\eta - \E[\eta]) + b(\chi - \E[\chi]).\] Тогда + \[\begin{aligned} + \cov(\xi, a\eta + b\chi) &= \E\left[(\xi - \E[\xi])(a(\eta - \E[\eta]) + b(\chi - \E[\chi]))\right] \\ + &= \E\left[a(\xi - \E[\xi])(\eta - \E[\eta]) + b(\xi - \E[\xi])(\chi - \E[\chi])\right] \\ + &= a\E[(\xi - \E[\xi])(\eta - \E[\eta])] + b\E[(\xi - \E[\xi])(\eta - \E[\eta])] \\ + &= a\cov(\xi, \eta) + b\cov(\xi, \chi). + \end{aligned}\] + + \item \(\cov(\xi, \xi) = \E\left[(\xi - \E[\xi])(\xi - \E[\xi])\right] = \E\left[(\xi - \E[\xi])^2\right] = \D[\xi]\). + + \item Для произведения \(\D[c\xi] = \cov(c\xi, c\xi) = c^2\cov(\xi, \xi) = c^2\D[\xi]\). Для суммы \(\D[\xi + c] = \E[((\xi + c) - \E[\xi + c])^2] = \E[(\xi + c - \E[\xi] - c)^2] = \E[(\xi - \E[\xi])^2] = \D[\xi]\). + + \item По определению дисперсии, \(D[\xi] = \E[(\xi-\E[\xi])^2]\), а \((\xi-\E[\xi])^2 \geq 0\). Тогда \(\E[(\xi-\E[\xi])^2] \geq 0\). + + \item Воспользуемся выражением дисперсии через ковариацию и билинейностью ковариации: + \(\D[\xi + \eta] = \cov(\xi + \eta, \xi + \eta) = \cov(\xi, \xi) + \cov(\eta, \eta) + 2\cov(\xi, \eta)\). Так как \(\xi\) и \(\eta\) некоррелированные, то \(\cov(\xi, \eta) = 0\) и \(\D[\xi + \eta] = \cov(\xi, \xi) + \cov(\eta, \eta) = \D[\xi] + \D[\eta]\). + + \item \(\cov(\xi, \eta) = \E\left[(\xi - \E[\xi])(\eta-\E[\eta])\right] = \E[\xi\eta - \xi\E[\eta] - \eta\E[\xi] + \E[\xi]\E[\eta]]\). По линейности матожидания \(\cov(\xi, \eta) = \E[\xi\eta] - 2\E[\xi]\E[\eta] + \E[\xi]\E[\eta] = \E[\xi\eta] - \E[\xi]\E[\eta]\). Для дисперсии воспользуемся тем, что \(\D[\xi] = \cov(\xi, \xi)\). + \end{enumerate} +\end{proof} +\begin{theorem} + Если случайные величины независимы, то они \emph{некоррелированные}. Обратное, вообще говоря, неверно. +\end{theorem} +\begin{proof} + Докажем, что из независимости следует некоррелируемость. Пусть \(\xi\) и \(\eta\)~--- независимые случайные величины. Тогда \(\cov(\xi, \eta) = \E[\xi\eta] - \E[\xi]\E[\eta]\). Но по свойству матожидания из независимости случайных величин следует, что \(\E[\xi\eta] = \E[\xi]\E[\eta]\). Тогда \(\cov(\xi, \eta) = 0\) и эти величины некоррелированные. + + Теперь покажем, что из некоррелированности не обязательно следует независимость. Пусть случайная величина \(\xi\) равновероятно принимает значения из множества \(\{0, 1, -1\}\). Возьмем случайную величину \(\eta = \xi^2\). По определению можно проверить, что величины \(\eta\) и \(\xi\) \emph{некоррелированные}: \(\cov(\xi, \eta) = \E[\xi\eta] - \E[\xi]\E[\eta] = \E[\xi^3] - \E[\xi]\E[\xi^2] = 0 - 0 = 0\). Но \(\xi\) и \(\eta\) \emph{не являются независимыми}, что проверяется опять же по определению: \(\Pr(\xi = 0, \eta = 0) = \frac{1}{3} \neq \frac{1}{9} = \Pr(\xi = 0)\Pr(\eta = 0)\). +\end{proof} + +\subsection{Неравенства Маркова и Чебышёва} +Под конец лекции обсудим два неравенства, которые сами по себе являются весьма полезными. +\begin{theorem}[Неравенство Маркова] + Пусть \(\xi \geq 0\)~--- неотрицательная случайная величина на \((\Omega, \Pr)\). Тогда для любого положительного \(a\) \[\Pr(\xi \geq a) \leq \dfrac{\E[\xi]}{a}.\] +\end{theorem} +\begin{proof} + Как было доказано ранее, матожидание индикатора события равно вероятности события. Тогда \(\Pr(\xi \geq a) = \E[I_{\xi \geq a}]\). Далее, заметим, что \(I_{\xi \geq a} \leq \frac{\xi}{a}I_{\xi \geq a}\). Тогда \[\Pr(\xi \geq a) \leq \E\left[\frac{\xi}{a}I_{\xi \geq a}\right] \leq \E\left[\frac{\xi}{a}\right] = \frac{\E[\xi]}{a}.\qedhere\] +\end{proof} +\begin{theorem}[Неравенство Чебышёва] + Пусть \(\xi\)~--- случайная величина на \((\Omega, \Pr)\) такая, что \(\D[\xi] < \infty\). Тогда для любого положительного \(a\) \[\Pr\left(|\xi - E[\xi]| \geq a\right) \leq \frac{\D[\xi]}{a^2}.\] +\end{theorem} +\begin{proof} + \(\Pr(|\xi - \E[\xi]| \geq a) = \Pr\left((\xi - E[\xi])^2 \geq a^2\right)\). По неравенству Маркова + \[\Pr\left((\xi - E[\xi])^2 \geq a^2\right) \leq \frac{\E[(\xi - E[\xi])^2]}{a^2} = \frac{\D[\xi]}{a^2}.\qedhere\] +\end{proof} \ No newline at end of file diff --git a/probability-theory/tex/lecture_4_30.09.2016.tex b/probability-theory/tex/lecture_4_30.09.2016.tex new file mode 100644 index 0000000..9a935c9 --- /dev/null +++ b/probability-theory/tex/lecture_4_30.09.2016.tex @@ -0,0 +1,190 @@ +\section{Лекция от 30.09.2016} + +\subsection{Сходимость случайных величин. Закон больших чисел.} +Сначала введём пару определений: + +\begin{definition} + Пусть \(\{\xi_n\}_{n = 1}^{\infty}\)~--- последовательность случайных величин, заданных на вероятностном пространстве \((\Omega, \Pr)\). Тогда будем говорить, что последовательность \emph{сходится по вероятности} к случайной величине \(\xi\), если для любого положительного \(\alpha\) выполнено, что + \[\lim\limits_{n \to \infty} \Pr{\left|\xi_n - \xi\right| \geq \alpha} = \lim\limits_{n \to \infty} \Pr{\{\omega : \left|\xi_n(\omega) - \xi(\omega)\right| \geq \alpha\}} = 0.\] + + Обозначение: \(\xi_n \prto \xi\). +\end{definition} + +\begin{definition} + Случайные величины \(\xi\) и \(\eta\) называют \emph{одинаково распределёнными}, если + \[ + \begin{cases} + \xi(\Omega) = \eta(\Omega); \\ + \forall x \in \xi(\Omega), \Pr{\xi = x} = \Pr{\eta = x}. + \end{cases} + \] + + Говоря простым языком, у этих случайных величин совпадают возможные значения и их вероятности. + + \textbf{Обозначение:} $\xi \eqdist \eta$. +\end{definition} + +\begin{theorem}[Закон больших чисел] + Пусть есть последовательность попарно независимых и одинаково распределённых случайных величин \(\{\xi_n\}_{n = 1}^{\infty}\) и существует число \(C\) такое, что \(\D{\xi_n} \leq C\) для всех \(n \in \N\). + + Введём обозначение \(S_n = \xi_1 + \xi_2 + \dots + \xi_n\). Тогда + \[\frac{S_n - \E{S_n}}{n} \prto 0.\] +\end{theorem} +\begin{proof} + Для начала заметим, что \(\E{\frac{S_n - \E{S_n}}{n}} = 0\). Тогда по неравенству Чебышёва выполнено, что: + \[\Pr{\left|\frac{S_n - \E{S_n}}{n}\right| \geq \epsilon} \leq \frac{\D{\frac{S_n - \E{S_n}}{n}}}{\epsilon^2}.\] + + Так как \(\D{\frac{S_n - \E{S_n}}{n}} = \frac{1}{n^2}\D{S_n}\) для фиксированного \(n\), то + \[\Pr{\left|\frac{S_n - \E{S_n}}{n}\right| \geq \epsilon} \leq \frac{\D{S_n}}{n^2\epsilon^2}.\] + + Распишем дисперсию в виде суммы ковариаций: + \[\D{S_n} = \cov(\xi_1 + \ldots + \xi_n, \xi_1 + \ldots + \xi_n) = \sum\limits_{i, j = 1}^{n} \cov(\xi_i, \xi_j).\] + + Если \(i \neq j\), то случайные величины \(\xi_i\) и \(\xi_j\) независимы. Но тогда они некоррелированы и \(\cov(\xi_i, \xi_j) = 0\). Следовательно, + \[\D{S_n} = \sum\limits_{i = 1}^{n} \cov(\xi_i, \xi_i) \leq Cn.\] + + Подставляя выражение дисперсии, получаем, что + \[\Pr{\left|\frac{S_n - \E{S_n}}{n}\right| \geq \epsilon} \leq \frac{C}{n\epsilon^2}\xrightarrow[n \to \infty]{} 0.\qedhere\] + + %В силу того, что \(\cov(\xi_i, \xi_j) = 0 \ \forall i \neq j, \text{ то } \D[S_n] = \D[\xi_1 + \ldots + \xi_n] = \cov(\xi_1 + \ldots + \xi_n, \xi_1 + \ldots + \xi_n) = \sum\limits_{i=1}^{n}\cov(\xi_i, \xi_i) = \sum\limits_{i=1}^{n}\D[\xi_i] \leq n \cdot c.\) + + %\noindentДалее по свойству дисперсии \(\D[\frac{S_n - \E[S_n]}{n}] = \frac{1}{n^2}\D[S_n].\) А исходя из рассуждения выше, данную величину можно оценить сверху: \(\frac{1}{n^2}\D[S_n] \leq \frac{c}{n}.\) + + %\noindentНаконец, для любых положительных $ \alpha $ по неравенству Чебышёва \(\Pr(\left|\frac{S_n - \E[s_n]}{n}\right| \geq \alpha) \leq \frac{\D[\frac{S_n - \E[S_n]}{n}]}{\alpha^2}.\) Осталось только ограничить числитель уже имеющейся оценкой. \(\frac{\D[\frac{S_n - \E[S_n]}{n}]}{\alpha^2} \leq \frac{c}{n\alpha^2}.\) Несложно увидеть, что данная величина стремится к нулю при \(n \to \infty.\) +\end{proof} + +\begin{remark} + Вообще, в законе больших чисел не обязательна независимость случайных величин~--- достаточно попарной некоррелированности. +\end{remark} + +\begin{consequence} + Пусть \(\{\xi_n\}_{n = 1}^{\infty}\)~--- последовательность попарно независимых случайных величин. Пусть существуют \(\alpha\) и \(C\) такие, что \(\E{\xi_n} = \alpha\) и \(\D{\xi_n} \leq C\) для всех \(n \in \N\). Тогда \[\frac{\xi_1 + \ldots + \xi_n}{n} \prto \alpha.\] +\end{consequence} +\begin{proof} + Из условия независимости случайных величин нам хватит следствия о том, что они являются попарно некоррелированными. Из закона больших чисел следует, что \(\frac{S_n - \E[S_n]}{n} \prto 0\). Так как \(\E[S_n] = n\alpha\), то + \(\frac{S_n}{n} - \alpha \prto 0\). + Также заметим, что в силу определения сходимости, \(\frac{S_n}{n} \prto \alpha\). +\end{proof} +%Не понимаю пока, что происходит с матожиданием... +%Update: осознал. + +Давайте попробуем осознать, в чем заключается смысл Закона больших чисел. +Пусть случайная величина задается индикатором происхождения события, \(\xi_i = I \)\{событие $ A $ произошло в $ i $-ом эксперименте\}, при этом все эксперименты проводятся независимо друг от друга ($ \xi_n $ является независимой случайной величиной). Обозначим за \(\vartheta(A)\) частоту появления события $ A $ в $ n $-м количестве экспериментов, \(\vartheta_n(A) = \frac{\xi_1 + \ldots + \xi_n}{n}.\) +Тогда по Закону больших чисел \(\vartheta_n(A) \prto \E[\xi_i] = \E[I\text{\{событие $ A $ произошло в $ i $-ом эксперименте\}}] = \Pr(A).\) Выходит, что Закон больших чисел является теоретическим обоснованием принципа устойчивости частот. + +\begin{definition} + Последовательность случайных величин \(\{\xi_n\}_{n = 1}^{\infty}\) сходится к случайной величине \(\xi\) c вероятностью 1 (или \emph{почти наверное}\footnote{Название ``сходимость почти наверное'' произошло от применяющегося в англоязычной литературе термина ``almost sure convergence''.}), если \[\Pr{\lim\limits_{n \to \infty}\xi_n = \xi} = \Pr{\left\{\omega : \lim\limits_{n \to \infty}\xi_n(\omega) = \xi(\omega)\right\}} = 1.\] + + Обозначение: \(\xi_n \asto \xi\) (сходится \emph{почти наверное}). +\end{definition} +\begin{remark} + Данное определение можно записать следующим образом: для любого \(\omega \in \Omega\) такого, что \(\Pr{\omega} > 0\), выполнено \(\xi_n(\omega) \to \xi(\omega)\). +\end{remark} + +\begin{theorem} + В диcкретных вероятностных пространствах \(\xi_n \prto \xi \iff \xi_n \asto \xi\). +\end{theorem} + +\begin{proof} + Докажем по очереди в обе стороны: + \begin{itemize} + \item[{[\(\Rightarrow\)]}] Допустим, что \(\xi_n \prto \xi\). Докажем, что тогда для любого \(\omega \in \Omega\), для которого \(\Pr{\omega} > 0\), выполнено \(\xi_n(\omega) \to \xi(\omega)\) (стремится в понимании предела последовательности). + + Пусть есть элементарный исход \(\omega_0\) такой, что сходимости нет: \(\xi_n(\omega_0) \nrightarrow \xi(\omega_0)\). В таком случае существует положительное \(\alpha\) и подпоследовательность \(\{\xi_{n_k}(\omega_0)\}_{k = 1}^{\infty}\) такие, что \(\forall k \in \N \left|\xi_{n_k}(\omega_0) - \xi(\omega_0)\right| \geq \alpha\). Но тогда \(\Pr{\left|\xi_{n_k} - \xi\right| \geq \alpha} \geq \Pr(\omega_0) > 0\). Но по определению сходимости по вероятности \(\Pr{\left|\xi_{n_k} - \xi\right| \geq \alpha} \to 0\). Получаем противоречие. Следовательно, \(\xi_n \asto \xi\). + + \item[{[\(\Leftarrow\)]}] Пусть \(\xi_n \asto \xi\). Согласно определению, \(\Pr(\lim\limits_{n \to \infty}\xi_n = \xi) = 1\). Это равносильно тому, что для любого \(\omega \in \Omega\), для которого \(\Pr{\omega} > 0\), выполнено \(\xi_n(\omega) \to \xi(\omega)\). + + Докажем, что выполнено условие сходимости \emph{по вероятности}: \(\Pr{\left|\xi_n - \xi \right| \geq \alpha} \to 0\) для любого положительного \(\alpha\). Пусть \(\Omega = \{\omega_i \mid i \in \N\}\). Зафиксируем произвольное \(\delta > 0\) и выберем номер \(N = N(\delta)\) такой, что \(\sum\limits_{i > N} \Pr(\omega_i) \leq \delta\). Тогда + \[\begin{aligned} + \Pr{\left|\xi_n - \xi\right| \geq \alpha} &= \sum_{i\,:\,\left|\xi_n(\omega_i) - \xi(\omega_i)\right| \geq \alpha} \Pr{\omega_i} \\ + &= \sum_{\substack{i\,:\,i \leq N \\ \left|\xi_n(\omega_i) - \xi(\omega_i)\right| \geq \alpha}} \Pr{\omega_i} + \sum_{\substack{i\,:\,i > N \\ \left|\xi_n(\omega_i) - \xi(\omega_i)\right| \geq \alpha}} \Pr{\omega_i} \\ + &\leq \sum_{\substack{i\,:\,i \leq N \\ \left|\xi_n(\omega_i) - \xi(\omega_i)\right| \geq \alpha}} \Pr{\omega_i} + \sum_{i > N} \Pr{\omega_i} \\ + &\leq \sum_{\substack{i\,:\,i \leq N \\ \left|\xi_n(\omega_i) - \xi(\omega_i)\right| \geq \alpha}} \Pr{\omega_i} + \delta. + \end{aligned}\] + + Теперь нужно перейти к пределу при \(n \to \infty.\) Но чтобы избежать ситуации, когда предела не существует, перейдем к верхнему пределу для тех же \(n\). Также заметим, что так как \(\xi_n(\omega_i) \to \xi(\omega_i)\), начиная c некоторого \(n\), \(\omega_i\) перестает входить в сумму. Тогда первая сумма стремится к нулю и + \[ + \overline{\lim_{n \to \infty}} \Pr{\left|\xi_n - \xi\right| \geq \alpha} \leq 0 + \delta. + \] + + В силу произвольности \(\delta > 0\) можно говорить о том, что этот предел стремится к нулю. \(\qedhere\) + \end{itemize} +\end{proof} + +Допустим, что \(S_n \sim \mathrm{Bin}(n, p)\). Тогда сформулируем два вопроса: + +\textbf{Вопрос 1:} Как оценить скорость сходимости \(\frac{S_n}{n} - a\) к нулю? + +\textbf{Вопрос 2:} Как оценить скорость сходимости \(\Pr{\left|\frac{S_n}{n} - a\right| \geq \epsilon}\) к нулю? + +\subsection{Схема испытаний Бернулли} +\textbf{Описание:} Схема испытаний Бернулли подразумевает много однородных экспериментов, в каждом из которых возможно два исхода --- ``успех'' и ``неудача''; при этом нас интересует распределение числа успехов. + +\textbf{Математическая модель:} Пусть $\{\xi_i\}$ --- независимые \emph{одинаково распределённые} случайные величины (например, последовательные броски монеты); $\xi_i(\Omega) = \left\{ 0; 1 \right\}$; пусть также $\Pr(\xi_i = 1) = p$ --- вероятность успеха каждого отдельного эксперимента. Введём также обозначение $S_n = \sum\limits_{i = 1}^n \xi_i$ --- случайную величину, обозначающую количество успехов. + +Распределение $S_n$ кажется очевидным: $S_n \sim \mathrm{Bin}(n, p)$, т.е. $\Pr(S_n = k) = C_n^kp^k(1-p)^{n-k}$. + +\begin{exercise} + Докажите, что распределение $S_n$ и вправду биномиально. +\end{exercise} + +\begin{exercise} + В качестве упражнения, читателю предлагается оценить, сколько нужно попыток, чтобы $\frac{\text{число успехов}}{\text{число попыток}}$ было примерно равно $p$, т.е. как быстро наблюдаемая вероятность сходится к реальной. Для этого предлагается оценить следующую вероятность: +\end{exercise} +\[ + \Pr\left(\left|\frac{S_n}{n}-p\right|\geq \epsilon\right) = ? +\] + +Кстати говоря, $p$ совершенно не обязана быть константой и может являться функцией от $n$: $p(n)$. + +Тогда, вообще говоря, есть несколько отдельных случаев: + +\begin{itemize} + \item + $np(n) \xrightarrow[n\to\infty]{} \lambda > 0$. + + \begin{theorem}[Пуассон] + + Пусть $np(n) \xrightarrow[n\to\infty]{} \lambda > 0$. + Тогда + \[ + \forall k \in \Z_+, \Pr(S_n = k) \xrightarrow[n\to\infty]{} e^{-\lambda}\frac{\lambda^k}{k!}. + \] + \end{theorem} + \begin{proof} + \begin{multline*} + C_n^kp^k(1-p)^{n-k} = + \frac{n(n-1)(n-2)\ldots(n-k+1)}{k!}p(n)^k(1-p(n))^{n-k} \sim\\\sim + \frac{n^k}{k!}\left(\frac{\lambda}{n}+o\left(\frac{1}{n}\right)\right)^k\left( 1-\frac{\lambda}{n}+o\left( \frac{1}{n} \right) \right)^{n-k} =\\= + \frac{1}{k!}\left(\lambda+o\left(1\right)\right)^k\left( 1-\frac{\lambda}{n}+o\left( \frac{1}{n} \right) \right)^{n-k} \xrightarrow[n\to\infty]{} + \frac{\lambda^k}{k!}e^{-\lambda} + \end{multline*} + \end{proof} + \textbf{Следствие:} $P(S_n = k) \overset{d}{\to} P(\xi = k),\ \xi \sim \mathrm{Pois}(\lambda)$ --- сходимость \emph{по распределению}. + + \item + $np(n) \xrightarrow[n\to\infty]{} \infty$. + + Сделаем ещё одно отступлление в сторону и рассмотрим величину $\frac{S_n - \E[S_n]}{\sqrt{\D[S_n]}}$. + Пусть \(\xi_1, \ldots, \xi_n \) --- $ n $ бернуллиевских случайных величин с \(\Pr{\xi_i = 1} = p,\ \Pr{\xi_i = 0} = q,\ p~+~q~=~1. \) Тогда для \(S_n = \xi_1 + \ldots + \xi_n \) + находим, что + \[ + \E[S_n] = np. + \] + + Несложно также показать, что + \begin{multline*} + \D[S_n] = \sum\D[\xi_i] + \sum\cov[x_i, x_j] = \sum\D[\xi_i] = n\D[\xi_1] =\\= n\left( \E[\xi_1^2]-\left( \E[\xi_1] \right)^2 \right) = n(p - p^2) = npq. + \end{multline*} + + \begin{theorem}[Муавра-Лапласа] + Пусть вероятность \(p\) того, что во время эксперимента произойдёт событие, постоянна и находится в интервале \((0, 1)\). Допустим, что было проведено \(n\) независимых испытаний. Обозначим за \(S_n\) количество испытаний, в которых произошло событие (это равносильно тому, что \(S_n \sim \mathrm{Bin}(n, p)\)). Введём следующее обозначение: + \[\Pr_n(a,b)\mathop{:=} \Pr\left( a < \frac{S_n - \E[S_n]}{\sqrt{\D[S_n]}} \leq b \right).\] + + Тогда + \[ + \sup_{a 1 - \delta.\] + + Увеличивая расстояние между \(a\) и \(b\) и увеличивая \(n\), получаем следующий результат: + \[\lim\limits_{n, |a - b| \to \infty} \Pr{\frac{S_n}{n} - p = \mathcal{O}\left(\frac{1}{\sqrt{n}}\right)} = 1.\] + + Отсюда получаем, что \(\frac{S_n}{n} = p + \mathcal{O}\left(\frac{1}{\sqrt{n}}\right)\). + + \item Теперь приступим ко второму вопросу. Для него достаточно применить неравенство Чебышёва: + \[\Pr{\left|\frac{S_n}{n}-p\right| \geq \epsilon} \leq \frac{\D{\frac{S_n}{n}}}{\epsilon^2} = + \frac{np(1 - p)}{n^2\epsilon^2} = \mathcal{O}\left(\frac{1}{n}\right).\] +\end{enumerate} + +\subsection{Неравенство Чернова} +Следующая теорема показывает то, насколько вероятно отклонение случайной величины от её математического ожидания. +\begin{theorem}[Неравенство Чернова] + Пусть \(S_n \sim \mathrm{Bin}(n, p)\), а \(\lambda = \E{S_n} = np\). Тогда для любого \(t > 0\) выполнено следующее: + \[\Pr{S_n \geq \lambda + t} \leq \exp\left( -\frac{t^2}{2(\lambda + \frac{t}{3})} \right), \qquad\Pr{S_n \leq \lambda - t} \leq \exp\left( -\frac{t^2}{2\lambda} \right).\] +\end{theorem} +\begin{proof} + Крайний случай для первого неравенства~--- \(t = n - \lambda\)~--- особого интереса не вызывает. Поэтому положим, что \(t < n - \lambda\). + + Заметим, что для любого положительного \(u\) выполнено следующее: + \[\Pr{S_n \geq \lambda + t} = \Pr{e^{uS_n} \geq e^{u(\lambda + t)}} \leq \left\{\text{по неравенству Маркова}\right\} \leq \frac{\E{e^{uS_n}}}{e^{u(\lambda + t)}}.\] + + Посчитаем \(\E{e^{uS_n}}\): + \[\E{e^{uS_n}} = \sum\limits_{k = 1}^{n} e^{uk}\binom{n}{k}p^{k}(1 - p)^{n - k} = \sum\limits_{k = 1}^{n}\binom{n}{k}(pe^u)^{k}(1 - p)^{n - k} = (1 - p + pe^u)^n.\] + + Положим \(x = e^u\). Тогда + \[\Pr{S_n \geq \lambda + t} \leq x^{-(\lambda + t)}(1 - p + px)^n.\] + + Минимизируем это выражение по \(x\). Для этого посчитаем производную и приравняем её к нулю: + \[(x^{-(\lambda + t)}(1-p+px)^n)' = -(\lambda + t)x^{-(\lambda + t + 1)}(1-p+px)^n + np + x^{-(\lambda+t)}(1-p+px)^{n-1} = 0.\] + + Отсюда получаем, что \(-(\lambda + t)(1 - p + px) + npx = 0\) и \(x = \frac{(\lambda + t)(1 - p)}{p(n - \lambda - t)}\). Тогда получаем следующую оценку сверху: + \[\begin{aligned} + \Pr{S_n \geq \lambda + t} &\leq \left(\frac{p(n-\lambda-t)}{(\lambda+t)(1-p)}\right)^{\lambda + t}\left(1 - p + p\frac{(\lambda + t)(1 - p)}{p(n - \lambda - t)}\right)^n \\ + &= \left(\frac{p(n-\lambda-t)}{(\lambda+t)(1-p)}\right)^{\lambda + t}\left(\frac{n(1 - p)}{n - \lambda - t}\right)^n \\ + &= \left(\frac{np}{\lambda + t}\right)^{\lambda + t}\left(\frac{n - np}{n - \lambda - t}\right)^{n - \lambda - t} \\ + &= \left(\frac{\lambda}{\lambda + t}\right)^{\lambda + t}\left(\frac{n - \lambda}{n - \lambda - t}\right)^{n - \lambda - t} + \end{aligned}\] + + Представим эту оценку в следующем виде: + \[\left(\frac{\lambda}{\lambda + t}\right)^{\lambda + t}\left(\frac{n - \lambda}{n - \lambda - t}\right)^{n - \lambda - t} = \exp\left\{-(\lambda + t)\ln\left(1 + \frac{t}{\lambda}\right) - (n - \lambda - t)\ln\left(1 - \frac{t}{n - \lambda}\right)\right\}.\] + + Введём функцию \(\phi(x) = (1 + x)\ln(1 + x) - x\) для \(x > -1\). Тогда (проверьте): + \[\Pr{S_n \geq \lambda + t} \leq \exp\left\{-\lambda\phi\left(\frac{t}{\lambda}\right) - (n - \lambda)\phi\left(-\frac{t}{n - \lambda}\right)\right\}.\] + + Теперь заметим, что если \(x > -1\), то \(\phi(x) > 0\). Тогда будет верно следующее (вторую оценку можно получить абсолютно аналогично первой, только взяв \(-u\) вместо \(u\)): + \[\begin{aligned} + \Pr{S_n \geq \lambda + t} &\leq \exp\left\{-\lambda\phi\left(\frac{t}{\lambda}\right)\right\}, \\ + \Pr{S_n \leq \lambda - t} &\leq \exp\left\{-\lambda\phi\left(\frac{-t}{\lambda}\right)\right\}. + \end{aligned}\] + + А теперь достаём бубен и начинаем оптимизировать: + \begin{itemize} + \item[{[\(\leq\)]}] Заметим, что \(\phi(0) = 0\) и \(\phi'(x) = 1 - 1 + \ln(x + 1) = \ln(x + 1) \leq x\). Тогда + \[-\phi(y) = \int\limits_{y}^{0} \phi'(x)\,\mathrm{d}x \leq \int\limits_{y}^{0} x\,\mathrm{d}x = -\frac{y^2}{2}.\] + + Отсюда получаем, что \(\phi(y) \geq \frac{y^2}{2}\) и \(\Pr{S_n \leq \lambda - t} \leq \exp\left\{-\frac{t^2}{2\lambda}\right\}\). + + \item[{[\(\geq\)]}] Дальше идёт полное шаманство (sic!). Заметим, что + \[\phi''(x) = \frac{1}{1 + x} \geq \frac{1}{\left(1 + \frac{x}{3}\right)^3} = \left(\frac{x^2}{2\left(1 + \frac{x}{3}\right)}\right)'' \implies \phi(x) \geq \frac{x^2}{2\left(1 + \frac{x}{3}\right)}.\] + + Отсюда получаем, что \(\Pr{S_n \geq \lambda + t} \leq \exp\left\{-\dfrac{t^2}{2\left(\lambda + \frac{t}{3}\right)}\right\}\). + \end{itemize} +\end{proof} + +К счастью, на экзамене будет достаточно понимать идею, и не требуется точное воспроизведение всех +вычислений. + +Теперь, используя неравенство Чернова, оценим скорость сходимости \(\Pr{|\frac{S_n}{n} - p| \geq \varepsilon}\) к нулю по-другому: +\[\Pr{\left|\frac{S_n}{n} - p\right| \geq \varepsilon} = \Pr{\left|S_n - \lambda\right| \geq n\epsilon} \leq \exp\left\{-\frac{n\epsilon^2}{2p}\right\}.\] + +Заметим, что оценка через неравенство Чебышёва давало гораздо оценку \(\frac{1}{\text{полином}}\), а неравенство Чернова даёт оценку \(\frac{1}{\text{экспонента}}\), что сходится гораздо быстрее. + +\subsection{Алгебры событий} +\begin{definition} + Пусть $\mathcal{A}$ --- система событий на $(\Omega, \Pr)$. Она называется \emph{алгеброй}, если + \begin{enumerate} + \item \(\Omega \in \mathcal{A}\), + \item Если \(A \in \mathcal{A}\), то и \(\overline{A} \in \mathcal{A}\), + \item Если \(A \in \mathcal{A}\) и \(B \in \mathcal{A}\), то и \(A \cap B \in \mathcal{A}\). + \end{enumerate} +\end{definition} + +\begin{exercise} + Докажите, что алгебра замкнута по основным операциям: \(\cup\), \(\setminus\), \(\triangle\). +\end{exercise} + +\noindent\textbf{Примеры:} + +\begin{itemize} + \item \(\left\{ \emptyset, \Omega \right\}\); + \item \(2^{\Omega}\); + \item \(\left\{ \emptyset, \Omega, A, \overline{A}\right\}\)~--- алгебра, порождённая \(A\); + \item \(\alpha\left( A_1, \ldots, A_n \right)\)~--- минимальная алгебра, содержащая \(A_1, \dots, A_n\). +\end{itemize} \ No newline at end of file diff --git a/probability-theory/tex/lecture_6_14.10.2016.tex b/probability-theory/tex/lecture_6_14.10.2016.tex new file mode 100644 index 0000000..d0c2054 --- /dev/null +++ b/probability-theory/tex/lecture_6_14.10.2016.tex @@ -0,0 +1,257 @@ +\section{Лекция от 14.10.2016} + +\subsection{Локальная лемма Ловаса: несимметричный и симметричный случаи} +\textbf{Предупреждение}: в данном случае мы решили несколько изменить доказательство, отойдя от сигма-алгебр к графам зависимости. Идейно эти принципы ничем не отличаются, но на коллоквиуме лучше рассказывать через алгебры событий. + +Введём понятие \emph{графа зависимости}. + +\begin{definition} + \emph{Графом зависимости} \(D = (V, E)\) для событий \(A_1, A_2, \dots, A_n\) называют ориентированный граф такой, что \(V = \{1, 2, \dots, n\}\), а для любого \(1 \leq i \leq n\) событие \(A_i\) независимо от событий \(A_j\), а также от всевозможных объединений и пересечений данных событий, если \((i, j) \notin E\). +\end{definition} + +\begin{theorem}[Несимметричный случай локальной леммы Ловаса] + Пусть \(A_1, \dots, A_n\) --- события на произвольном вероятностном пространстве \((\Omega, \Pr)\). Предположим, что + \begin{enumerate} + \item \(D = (V, E) \) является орграфом зависимости для определенных выше событий; + \item Существуют действительные числа \(x_1, \ldots x_n \in [0, 1) \) такие, + что для любого \(1 \leq i \leq n\) выполняется \[\Pr{A_i} \leq x_i \prod\limits_{(i, j) \in E} (1 - x_j).\] + \end{enumerate} + + Тогда вероятность того, что ни одно из событий \(A_1, \dots, A_n\) не произойдёт, можно ограничить снизу положительным числом: \[\Pr{\bigcap\limits_{i = 1}^{n}\overline{A_i}} \geq \prod\limits_{i = 1}^{n}(1 - x_i) > 0.\] +\end{theorem} + +Перед тем, как приступать к доказательству этой леммы, докажем следующую формулу: +\begin{theorem}[Формула умножения вероятностей] + Пусть \(B_1, B_2, \dots, B_n\)~--- события на вероятностном пространстве \((\Omega, \Pr)\). Тогда верно следующее: + \[\Pr{B_1 \cap \dots \cap B_m} = \Pr{B_1 \given B_2 \cap \dots \cap B_m}\Pr{B_2 \given B_3 \cap \dots \cap B_m} \dotsm \Pr{B_{m-1} \given B_m}\Pr{B_m}.\] +\end{theorem} +\begin{proof} + Будем последовательно применять определение условной вероятности: + \[\begin{aligned} + \Pr{B_1 \cap \dots \cap B_m} &= \Pr{B_1 \given B_2 \cap \dots \cap B_m}\Pr{B_2 \cap \dots \cap B_m} \\ + \Pr{B_2 \cap \dots \cap B_m} &= \Pr{B_2 \given B_3 \cap \dots \cap B_m}\Pr{B_3 \cap \dots \cap B_m} \\ + &\dots \\ + \Pr{B_{m - 1} \cap B_m}&= \Pr{B_{m-1} \given B_m}\Pr{B_m}. + \end{aligned}\] + + Постепенными подстановками получим желаемое. +\end{proof} + +Теперь перейдём к доказательству леммы. + +\begin{proof} + Разобьем доказательство на подпункты. + \begin{enumerate} + \item + Докажем индукцией по $ t $, что \(\forall i = 1, \ldots, n \), для любого набора чисел \(T \in \{1, \ldots, n\} \setminus \{i\} \), \(t = \left|T\right| < n\) , справедливо неравенство + \( + \Pr(A_i\mid\bigcap\limits_{j \in T}\overline{A_j}) \leq x_i. + \) + + Пусть $ t = 1 $. Тогда неравенство примет следующий вид: + \[ + \Pr(A_i\mid\overline{A_j}) = + \begin{cases} + \Pr(A_i),& (i, j) \notin E \\ + \frac{\Pr(A_i \cap \overline{A_j})}{\Pr(\overline{A_j})} \leq \frac{\Pr(A_i)}{\Pr(\overline{A_j})} \leq \frac{x_i(1-x_j)}{1 - x_j},& (i, j) \in E + \end{cases} + \] + Так как по условию \(\Pr(A_i) \leq x_i \prod\limits_{(i, j) \in E}(1 - x_j) \leq x_i (1 - x_j),\) вероятность \( \Pr(\overline{A_j}) = 1 - \Pr(A_j) \geq 1 - x_j.\) + + Также, если \(T = \emptyset\), из условия следует, что \(\Pr{A_i} \leq x_i\). + + Предполагая, что неравенство выполняется для всех $ t' < t $, докажем для его для $ t $. Положим \(T_1 = \{j \in T, (i, j) \in E \}, T_2 = T \setminus T_1 \). Тогда: + \[ + \Pr\left(A_i\mid \bigcap\limits_{j \in T}\overline{A_j}\right) = \frac + {\Pr\left(A_i \cap(\bigcap\limits_{j \in T_1}\overline{A_j})\mid \bigcap\limits_{k \in T_2} \overline{A_k}\right)} + {\Pr\left(\bigcap\limits_{j \in T_1}\overline{A_j}\mid\bigcap\limits_{k \in T_2}\overline{A_k}\right)} + \leq + \frac + {\Pr\left(A_i\mid\bigcap\limits_{k \in T_2} \overline{A_k}\right)} + {\Pr\left(\bigcap\limits_{j \in T_1} \overline{A_j}\mid\bigcap\limits_{k \in T_2} \overline{A_k}\right)}. + \] + + Для оценки числителя заметим, что событие $ A_i $ взаимно независимо с событиями \(\{A_k : k \in T_2\}\). Следовательно, + \( + \Pr\left(A_i\mid\bigcap\limits_{k \in T_2} \overline{A_k}\right) = \Pr(A_i) \leq + x_i \prod\limits_{(i, j) \in E}(1 - x_j). + \) + + Предположим $ T_1 = \{j_1, \ldots, j_r \} $. При $ r = 0 $ неравенство \( + \Pr\left(A_i\mid\bigcap\limits_{j \in T}\overline{A_j}\right) \leq x_i. + \) заведомо выполняется, так как в нашем графе нет ребер, связывающих вершину $ i $ с другими вершинами, а значит, событие $ A_i $ не зависит ни от одного события $ A_j $, где $ j \in T $. + + Для оценки знаменателя применим предположение индукции. В случаях, когда $ r > 0 $, используя формулу умножения вероятностей, получаем + \begin{multline*} + \Pr\left(\bigcap\limits_{j \in T_1}\overline{A_j}\mid\bigcap\limits_{k \in T_2}\overline{A_k}\right) = + \Pr\left(\overline{A_{j_1}}\mid\bigcap\limits_{s = 2}^{r}\overline{A_{j_s}} \cap \bigcap\limits_{k \in T_2}\overline{A_k}\right) + \Pr\left(\overline{A_{j_2}}\mid\bigcap\limits_{s = 3}^{r}\overline{A_{j_s}} \cap \bigcap\limits_{k \in T_2}\overline{A_k}\right) \ldots \\ \ldots \Pr\left(\overline{A_{j_r}}\mid\bigcap\limits_{k \in T_2}\overline{A_k}\right) \geq + (1 - x_{j_1}) \ldots (1 - x_{j_r}) \geq \prod\limits_{(i, j) \in E}(1 - x_j). + \end{multline*} + + Следовательно, + \( + \Pr\left(A_i\mid \bigcap\limits_{j \in T}\overline{A_j}\right) \leq + \frac{x_i\prod\limits_{(i, j) \in E}(1 - x_j)} + {\prod\limits_{(i, j) \in E}(1 - x_j)} = x_i. + \) + + \item + Запишем окончательный результат рассуждений выше с использованием формулы полной вероятности и полученной в первом пункте оценки. + \[ + \Pr\left(\bigcap\limits_{i = 1}^{n} \overline{A_i}\right) = \Pr\left(\overline{A_1}\mid\bigcap\limits_{i = 2}^{n}\overline{A_i}\right) + \Pr\left(\overline{A_2}\mid\bigcap\limits_{i = 3}^{n}\overline{A_i}\right) + \ldots \Pr\left(\overline{A_n}\right) \geq (1 - x_1)(1 - x_2) \ldots (1 - x_n). + \] + \end{enumerate} + +\end{proof} +\begin{exercise} + Сформулируйте и докажите несимметрический случай локальной леммы Ловаса, используя алгебры событий вместо графа зависимости. +\end{exercise} + +Однако на практике гораздо чаще используется более слабая версия леммы. + +\begin{theorem}[Симметричный случай локальной леммы Ловаса] + Пусть \(A_1, A_2, \dots, A_n\)~--- события в произвольном вероятностном пространстве \((\Omega, \Pr)\). Если выполнены следующие условия: + \begin{enumerate} + \item существует \(p \in [0, 1)\) такое, что \(\Pr{A_i} \leq p\) для любого \(1 \leq i \leq n\); + \item каждое событие \(A_i\) взаимно независимо со всеми событиями за исключением не более, чем \(d\) событий; + \item \(ep(d + 1) \leq 1\), + \end{enumerate} + то \[\Pr{\bigcap\limits_{i = 1}^{n}\overline{A_i}} > 0.\] +\end{theorem} +\begin{proof} + Для начала рассмотрим экстремальный случай~--- \(d = 0\). В таком случае все события независимы и утверждение теоремы выполнено. + + Теперь перейдём к общему случаю. Рассмотрим граф зависимости \(D = (V, E)\) для событий \(A_1, A_2, \dots, A_n\), в котором для любого \(i \in \{1, 2, \dots, n\}\) выполнено \(\left|\{j \mid (i, j) \in E\}\right| \leq d\). Далее, для всех \(i\) положим \(x_i = \frac{1}{d + 1}\). Покажем, что в этом случае выполняется требование несимметричного случая локальной леммы Ловаса: + + \[x_i\prod\limits_{(i, j) \in E} (1 - x_j) \geq \frac{1}{d + 1}\left(1 - \frac{1}{d + 1}\right)^{d} \geq \frac{1}{e(d + 1)} \geq p \geq \Pr{A_i}.\] + + Как видно, оно выполняется. Тогда по локальной лемме получаем, что + \[\Pr{\bigcap\limits_{i = 1}^{n}\overline{A_i}} > 0. \qedhere\] +\end{proof} + +\subsection{Задача \textsf{k-SAT}. Теорема Мозеса-Тардоша} +Сейчас мы обсудим так называемую задачу \textsf{k-SAT} и её методы решения, основанные на вероятностном подходе. Но начнём мы с формулировки задачи. + +\begin{definition} + Пусть есть некоторая булева формула \(f(x_1, x_2, \dots, x_n)\). Тогда \emph{\(k\)-КНФ} называют представление этой формулы в виде + \[f(x_1, x_2, \dots, x_n) = \bigwedge\limits_{i = 1}^{m} \left(l_{i1} \lor l_{i2} \lor \dots \lor l_{ik}\right),\] + + где \(l_{ij} \in \{x_1, \dots, x_n\} \cup \{\overline{x_1}, \overline{x_2}, \dots, \overline{x_n}\}\), причём в дизъюнкте все переменные разные (то есть нет повторов). +\end{definition} + +\begin{problem}[\textsf{k-SAT}] + Пусть есть некоторая булева функция \(f(x_1, x_2, \dots, x_n)\), представленная в виде + \(k\)-КНФ. Выполнима ли функция \(f\), то есть существует ли такой набор переменных \(v_1, v_2, \dots, v_n\), что \(f(v_1, v_2, \dots, v_n) = 1\)? +\end{problem} + +Докажем следующее утверждение: +\begin{theorem} + Если \(k\)-КНФ для функции \(f(x_1, x_2, \dots, x_n)\) содержит меньше, чем \(2^k\) дизъюнктов, то \(f\) выполнима. +\end{theorem} +\begin{proof} + Рассмотрим ситуацию, когда переменным равновероятно и независимо присваивается либо 0, либо 1. Тогда \(\Pr{x_i = 0} = \Pr{x_i = 1} = \frac{1}{2}\) для \(i \in \{1, 2, \dots, n\}\). + + Чему равна вероятность того, что дизъюнкт \(l_{i1} \lor l_{i2} \lor \dots \lor l_{ik}\) будет равен 0? Она равна + \[\Pr{l_{i1} = 0, l_{i2} = 0, \dots, l_{ik} = 0} = \Pr{l_{i1} = 0}\Pr{l_{i2} = 0} \dotsc\Pr{l_{ik} = 0} = \frac{1}{2^k}.\] + + Теперь посмотрим вероятность того, что вся КНФ будет равна 0: + \[\begin{aligned} + \Pr{f(x_1, x_2, \dots, x_n) = 0} &= \Pr{\bigcup_{i = 1}^{m} \{l_{i1} \lor l_{i2} \lor \dots \lor l_{ik} = 0\}} \\ + &\leq \sum_{i = 1}^{m}\Pr{l_{i1} \lor l_{i2} \lor \dots \lor l_{ik} = 0} = \frac{m}{2^k} < 1. + \end{aligned}\] + + Отсюда получаем, что вероятность того, что КНФ будет равна 1, больше нуля. А это и означает выполнимость \(f\). +\end{proof} + +Теперь посмотрим на следующий вопрос. Пусть каждая переменная (или её отрицание) лежит не более, чем в \(d\) скобках. При каком \(d\) мы можем гарантировать выполнимость? Ответ на этот вопрос даёт следующая теорема: + +\begin{theorem} + Пусть булева формула \(f(x_1, x_2, \dots, x_n)\) записана в виде \(k\)-КНФ. Также пусть любая переменная или ее отрицание входят в не более, чем \(\frac{2^{k-1}}{ek}\) дизъюнкций. Тогда \(f\) выполнима. +\end{theorem} + +\begin{proof} + Так же, как и в прошлой теореме, рассмотрим ситуацию, когда переменным равновероятно и независимо присваивается либо 0, либо 1. Тогда \(\Pr{x_i = 0} = \Pr{x_i = 1} = \frac{1}{2}\) для \(i \in \{1, 2, \dots, n\}\). + + Рассмотрим событие \(A_i = \{i\)-й дизъюнкт равен \(0\}\). Исходя из того, что каждый дизъюнкт содержит \(k\) литералов, а также того, что все значения переменных равновероятны, мы можем оценить вероятность каждого события следующим образом: + \[\Pr{A_i} = \begin{cases} + 0,&\text{в дизъюнкте одновременно есть }y\text{ и }\overline{y}, \\ + \frac{1}{2^k},&\text{иначе}. + \end{cases}\] + + Отсюда видно, что \(\Pr{A_i} \leq \frac{1}{2^k}\) для всех \(i \in \{1, 2, \dots, m\}\). + + Теперь посмотрим на количество событий, зависимых с \(A_i\). Для этого рассмотрим зависимость на каком-либо примере. Пусть \(i\)-й дизъюнкт равен \(x_1 \lor \overline{x_2} \lor \overline{x_3} \lor \dots \lor \overline{x_k}\). Тогда \(A_i\) будет независимо с теми событиями, соответствующие дизъюнкты которых не содержат элементов из \(\{x_1, x_2, \dots, x_k\} \cup \{\overline{x_1}, \overline{x_2}, \dots, \overline{x_k}\}\). + + Тогда количество событий, зависимых с \(A_i\) равно количеству дизъюнктов, совпадающих хотя бы по одной переменной (с точностью до отрицания). Обозначим его за \(S_i\). Попробуем ограничить его сверху. Выберем произвольную позицию, которая будет общей. Так как переменная в этой позиции входит в не более, чем \(\frac{2^{k-1}}{ek}\) дизъюнкций и переменные должны совпадать с точностью до отрицания, то есть не более, чем \(2k\frac{2^{k - 1}}{ek} = \frac{2^k}{e}\). Однако мы посчитали и сам дизъюнкт. Поэтому + \[|S_i| \leq \frac{2^{k}}{e} - 1 = d.\] + + Теперь покажем, что выполняется и последнее условие симметричного случая локальной леммы Ловаса: \(ep(d + 1) \leq \frac{e}{2^k}\frac{2^k}{e} = 1.\) + + Отсюда по симметричной локальной лемме Ловаса получаем, что \(\Pr{\bigcap_{i = 1}^{n} \overline{A_i}} > 0\). Это означает, что вероятность того, что при заданном наборе переменных функция равна 1 больше нуля, что доказывает выполнимость \(f\). +\end{proof} + +Из общего случая локальной леммы можно вывести следующую оценку для задачи выше. +\[\Pr{\bigcap\limits_{i = 1}^{m}\overline{A_i}} \geq \prod\limits_{i = 1}^{m}(1 - x_i) = \left(\frac{d}{d+1}\right)^{m} = \left(1 - \frac{e}{2^k} \right)^{m} = q.\] + +Теперь можно задаться вполне резонным вопросом: а как все же искать такое выполняющее означивание? Рассмотрим два подхода к решению этой проблемы. +\begin{enumerate} + \item \emph{Наивный подход}: подставляем случайные значения \((x_1, x_2, \dots, x_n )\). Если \(f = 0\), тогда независимо подставим новые значения \((y_1, y_2, \dots, y_n)\). Так будем повторять до победного конца. + + Пусть \(X\)~--- число подстановок новых пар значений переменных (\emph{resampling steps}). Легко понять, что \(X \sim \mathrm{Geom}(q)\) и\footnote{За доказательством этого обращайтесь ко второй задаче 4-го семинара.} + \[\E{X} = \sum_{k = 0}^{\infty} kq(1 - q)^{k} = \frac{1}{q} = \mathcal{O}\left(\left(\frac{2^k}{2^k - e}\right)^{m}\right).\] + + \item \emph{Продвинутый подход}: подставляем случайные значения \((x_1, x_2, \dots, x_n )\). Если \(f = 0\), то смотрим, какие именно дизъюнкты равны 0. Если \(l_{i1} \lor l_{i2} \lor \dots \lor l_{ik} = 0\), то меняем значения переменных \(l_{i1}, l_{i2}, \dots, l_{ik}\) на случайные независимым образом. Данная операция и будет служить \emph{resampling step}. Продолжаем это до тех пор, пока не получим \(f = 1\). +\end{enumerate} + +Алгоритм в продвинутом подходе крепко связан с локальной леммой, ибо это есть ни что иное, как алгоритмическая версия локальной леммы Ловаса. Данный алгоритм называется \emph{алгоритмом Мозера-Тардоша} и для него верна следующая теорема:\footnote{-- А мы не доказываем эту теорему? \ -- Нет. Это тяжело. (Д.А. Шабанов)} + +\begin{theorem} + Пусть \(Y_i\)~--- количество resampling steps для события \(A_i = \{i\)-й дизъюнкт равен \(0\}\) В условиях задачи \textsf{k-SAT} для любых \(1 \leq i \leq m \), где \(m\)~--- это количество дизъюнктов в формуле, \(\E[Y_i] \leq \frac{1}{d} = \frac{e}{2^k - e}\). + + Пусть \(Y = \sum\limits_{i = 1}^{m}Y_i \)~--- общее число resampling steps. Тогда \(\E[Y] \leq \frac{m}{d} = \mathcal{O}(m). \) +\end{theorem} + +\subsection{Геометрические вероятности. Задача о встрече} + +\begin{definition} + Пусть вероятностное пространство \(\Omega \in \R^n \) таково, что у \(\Omega\) определен \(n\)-мерный объем, \(0 < \mu(\Omega) < \infty\). Тогда в геометрических вероятностях для любого \(A \in \Omega\), у которого тоже определен объем \(\mu(A)\), полагаем вероятность \(\Pr(A) = \frac{\mu(A)}{\mu(\Omega)}\). Это естественное обобщение классической модели на непрерывный случай. +\end{definition} +\begin{remark} + Естественно оно по той простой причине, что аналогично дискретно случаю. Да и вообще вполне логично. +\end{remark} + +Для чего вводится такое определение? Бывают ситуации, когда конечным числом элементарных исходов обойтись нельзя. Ярким примером этому служит классическая \emph{задача о встрече} + +\begin{problem}[Задача о встрече] + Два друга договорились встретиться на автобусной остановке между 9-ю и 10-ю часами утра. Они договорились, что встретятся в течение этого часа, но не условились о конкретном времени встречи. При этом, если, прождав 15 минут с момента своего прихода, один из друзей не видит второго, он уходит, а значит встреча не состоялась. Вопрос: с какой вероятностью друзья встретятся? +\end{problem} +\begin{proof}[Решение] + Вообще, то, что конечности вероятностного пространства не хватит, понятно сразу, ведь моменты времени, в которые люди приходят на остановку, конечно же, не дискретны. + Отложим на оси \(x\) и на оси \(y\) по отрезку длины 1, которые будут символизировать час между 9-ю и 10-ю часами, в течение которого на остановку приходит первый и второй человек соответственно. Итак, вероятностное пространство \(\Omega = [9, 10] \times [9, 10].\) + + Событию \(A\), что встреча произойдет, удовлетворяют все точки получившегося квадрата, координаты которых отличатся не более, чем на четверть. То есть, моменты времени прихода друзей отличаются не более, чем на 15 минут. \(A = \{\)встреча произойдет\(\} = \{(x, y) \mid |x - y| \leq \frac{1}{4}\} \). Изобразим это: + + \begin{center} + \begin{tikzpicture} + \fill [white] (0, 0) -- (0, 4) -- (4, 4) -- (4, 0) -- cycle; + \fill [pattern = crosshatch] (1, 0) -- (0, 1) -- (3, 4) -- (4, 3) -- cycle; + \draw [thick, ->] (0, -0.5) -- (0, 4.5) node [anchor = east] {\(y\)}; + \draw [thick, ->] (-0.5, 0) -- (4.5, 0) node [anchor = north] {\(x\)}; + \draw (0, 0) node [anchor = north east] {\(9\)}; + \draw (0, 4) node [anchor = east] {\(10\)}; + \draw (4, 0) node [anchor = north] {\(10\)}; + \draw (0, 0) -- (0, 4) -- (4, 4) -- (4, 0) -- cycle; + \draw (1, 0) -- (0, 1) -- (3, 4) -- (4, 3) -- cycle; + \end{tikzpicture} + \end{center} + + Довольно интуитивно хочется посчитать вероятность $ \Pr(A) $ как отношение площадей закрашенной области (всех удовлетворяющих исходов) ко всей площади квадрата (множество всех исходов). Это и будет геометрическая вероятность. + \[ + \Pr(A) = 1 - \left(\frac{3}{4} \right)^2 = \frac{7}{16}. \qedhere + \] + + +\end{proof} \ No newline at end of file diff --git a/probability-theory/tex/lecture_7_21.10.2016.tex b/probability-theory/tex/lecture_7_21.10.2016.tex new file mode 100644 index 0000000..5aa7acc --- /dev/null +++ b/probability-theory/tex/lecture_7_21.10.2016.tex @@ -0,0 +1,276 @@ +\section{Лекция от 21.10.2016} + +Будем дальше двигаться в сторону непрерывных вероятностей. Наша задача состоит в определении общего вероятностного пространства. + +\subsection{Общее понятие вероятностного пространства} +Совокупность объектов \(\Omega, \mathbf{F}, \Pr \) называется общим вероятностностным пространством, так называемая ``тройка Колмогорова''. +Разберем по отдельности каждый символ из этой ``тройки''. +\begin{itemize} + \item $\mathbf{\Omega}$ --- пространство элементарных событий, множество элементарных исходов. + + Например, если событие --- это выстрел в мишень, то множество элементарных исходов будет задаваться плоскостью, \(\Omega = \R^2. \) + + \item $\F$ --- совокупность подмножеств $\Omega$, называемые событиями. (В дискретном случае $\F = 2^{\Omega}$, то есть множество всех подмножеств $ \Omega $). + + Перед тем, как строго задать тебования к $ \F $, введем несколько определений. + + \begin{definition} + Пусть задано некоторое множество $ \Omega $. Система $ \F $ подмножеств $ \Omega $ называется \emph{алгеброй}, если выполняются следующие требования: + + + \begin{enumerate} + \item \( \Omega \in \F \) + + \item \( \forall A \in \F \implies \overline{A} \in \F \) + + \item \( \forall A, B \in \F \implies A \cap B \in \F, A \cup B \in \F \) + \end{enumerate} + Заметим, что в третьем условии достаточно требовать лишь, чтобы либо \(A \cap B \in \F\), либо \(A \cup B\), поскольку \(A \cup B = \overline {A \cap B}\) и наоборот. + + \textit{Пример:} Конечные объединения мнодеств вида \( (-\infty; a),\ (b; c],\ (d; \infty) \) образуют алгебру. + + \end{definition} + + \begin{definition} + Система $ \F $ подмножеств множества $ \Omega $ называется $ \sigma $-алгеброй, если выполняются следующие требования: + + \begin{enumerate} + \item $ \F $ является алгеброй + + \item если \(A_n \in \F,\ n \in \N \), то выполнено \(\bigcup\limits_{n = 1}^{\infty}A_n \in \F, \ \bigcap\limits_{n = 1}^{\infty}A_n \in \F \) + \end{enumerate} + + \end{definition} + + \begin{lemma} + Пусть $ M $ --- некоторая система подномжеств $ \Omega $. Тогда сущестует минимальная (по включению) $ \sigma $-алгебра, $ \sigma(M) $, содержащая в себе все подмножества из $ M $. + \end{lemma} + + \begin{proof} + На самом деле эта лемма в большей степени является логической. Констуктивного доказательства здесь не подразумевается. Обсудим на уровне идеи. + + Рассмотрим множество всех $\sigma$-алгебр, содержащих $ M $. Такое множество не является пустым, так как \(M \in 2^{\Omega}\). Тогда пересечение данных $ \sigma $-алгебр --- это тоже $ \sigma $-алгебра, содержащая $ M $ и минимальная по построению. + \end{proof} + + Важно, что $ \F $ \emph{должна являться алгеброй}, а для изучения предельных вероятностей $ \F $ должна также быть и \emph{$ \sigma $-алгерой}! + + \begin{definition} + \emph{Борелевской $ \sigma $-алгеброй} на множестве $ \R $ называется минимальная $ sigma $-алгебра, содержащая в себе любыми полуинтервалы \((a; b] \) на прямой: + \[ + \mathcal{B}(\R) = \sigma\left((a; b] : a < b \mid a, b \in \R \right). + \] + \end{definition} + + \begin{exercise} + В определении \(\mathcal{B}(\R)\) полуинтервалы можно заменить на отрезки, интервалы, открытые множества, замкнутые множества, лучи и т.д. + + Любители Теории Вероятностей могут попрактиковаться, доказав, что \(\mathcal{B}(\R) \neq 2^{\R}\). + + \end{exercise} + + \begin{definition} + Пространство $ \Omega $ вместе с $ \sigma $-алгеброй его подмножеств $ \F $ называется \emph{измеримым пространством} и обозначается \((\Omega, \F)\). + \end{definition} + + \item Наконец, мы подошли к рассмотрению последнего члена ``тройки Колмогорова''. + + \begin{definition} + Отображение $ \Pr $ из $ \F $ в [0; 1] \(\left( (\Pr: \F \to [0; 1]) \right)\) называется \emph{вероятностной мерой} на \( (\Omega, \F) \), если оно удовлетворяет следующим двум условиям: + \begin{enumerate} + \item \(\Pr{\Omega} = 1 \) + + \item Свойство счетной аддитивности. То есть \( \forall \{A_n,\ n \in \N \},\ A_n \in \F \) и \(A_n \cap A_n = \emptyset\ \forall n \neq m \), выполняется: \[\Pr{\bigcup\limits_{n = 1}^{\infty}A_n} = \sum\limits_{n = 1}^{\infty}\Pr{A_n}. + \] В дискретных вероятностных пространствах мы это свойство доказывали. Здесь его сразу постулируем. + + \end{enumerate} + \end{definition} + + \begin{lemma}[Свойства вероятности] + Вероятностные меры обладают следующими свойствами: + \begin{enumerate} + \item \(\Pr{\emptyset} = 0 \). + + \item Конечная аддитивность. Если \(A_n \in \F,\ n \in \N \) и \(\bigcup A_n \in \F \), тогда: + \[ + \Pr{\bigcup\limits_{n = 1}^{m}A_n} = \sum\limits_{n = 1}^{m}\Pr{A_n}. + \] + + \item Если \(A, B \in \F, \ A \subset B \), то \(\Pr{A} \leq \Pr{B} \). + + \item \(\Pr(A) + \Pr(\overline{A}) = 1\). + + \item \(\Pr(A \cup B) = \Pr(A) + \Pr(B) - \Pr(A \cap B)\). + \item Для любого набора событий \(A_1, A_2, \ldots, A_n\) \(\Pr\left(\bigcup\limits_{n = 1}^{m} A_n\right) \leq \sum\limits_{n = 1}^{m} \Pr(A_n)\). + \end{enumerate} + \end{lemma} + + \begin{proof} + Докажем только первые два свойства, так как остальные доказываеются ровно так же, как и в дискретном случае. За этими доказательствами можно обратиться к первой лекции. + + \begin{enumerate} + \item \( \forall n,\ A_n = \emptyset\). + \[ + \Pr{\bigcup\limits_{n = 1}^{\infty}A_n} = \sum\limits_{n = 1}^{m}\Pr{A_n} = \sum\limits_{n = 1}^{m}\Pr{\emptyset} \implies \Pr{\emptyset} = 0. + \] + + \item Положим \(A_n = \emptyset \) при \(n > m \). Тогда: + \[ + \Pr{\bigcup\limits_{n = 1}^{\infty}A_n} = \sum\limits_{n = 1}^{\infty}\Pr{A_n} = \sum\limits_{n = 1}^{m}\Pr{A_n}. + \] + \end{enumerate} + \end{proof} + +\end{itemize} + +\begin{theorem}[О непрерывности вероятностной меры] + Пусть $ \Pr $ --- конечно-аддитивная функция на $ \sigma $-алгебре событий $ \F $, \(\Pr: \F \to [0; 1],\ \Pr(\Omega) = 1 \). Тогда следующие четыре условия эквивалентны: + \begin{enumerate}[label = (\alph*)] + \item $ \Pr $ является счетно-аддитивной функцией. + + \item $ \Pr $ непрерывна в ``нуле'', то есть для любых множеств \(A_1, A_2, \ldots \in \F \) таких, что \(A_{n + 1} \subset A_n,\ \bigcup\limits_{n = 1}^{\infty}A_n = \emptyset \), выполняется: + \[ + \lim\limits_{n}\Pr{A_n} = 0. + \] + + \item $ \Pr $ непрерывна сверху, то есть для любых множеств \(A_1, A_2, \ldots \in \F \) таких, что \(A_{n + 1} \subset A_n,\ \bigcup\limits_{n = 1}^{\infty}A_n = A \in \F,\ (A_n \downarrow A) \), выполняется: + \[ + \lim\limits_{n}\Pr{A_n} = \Pr{A}. + \] + + \item $ \Pr $ непрерывна снизу, то есть для любых множеств \(A_1, A_2, \ldots \in \F \) таких, что \(A_{n} \subset A_{n + 1},\ \bigcap\limits_{n = 1}^{\infty}A_n = A \in \F,\ (A_n \uparrow A) \), выполняется: + \[ + \lim\limits_{n}\Pr{A_n} = \Pr{A}. + \] + + \end{enumerate} +\end{theorem} +\begin{proof} + Докажем эквивалентность всех этих утверждений в несколько шагов: + + \begin{itemize} + \item \textbf{a $\Rightarrow$ c} (счётная аддитивность означает непрерывность сверху) + + Заметим, что так как + \[ + \bigcup\limits_{n = 1}^{\infty} A_n = A_1 \cup (A_2\setminus A_1) \cup (A_3\setminus A_2)\ldots, + \] + то + \begin{multline*} + \Pr{\bigcup\limits_{n = 1}^{\infty} A_n} = + \Pr{A_1} + \Pr{A_2\setminus A_1} + \Pr{A_3\setminus A_2}\ldots =\\= + \Pr{A_1} + \Pr{A_2} - \Pr{A_1} + \Pr{A_3} -\Pr{A_2}\ldots = + \lim\limits_{n \to \infty} \Pr{A_n}. + \end{multline*} + + \item \textbf{c $\Rightarrow$ d} (непрерывность сверху означает непрерывность снизу) + + Пусть $n \geq 1$, тогда + + \[ + \Pr{A_n} = \Pr{A_1 \setminus(A_1\setminus A_n)} = \Pr{A_1} - \Pr{A_1\setminus A_n}. + \] + + Тогда, согласно пункту \textbf{б}, + \[ + \lim\limits_{n \to \infty}\Pr{A_1\setminus A_n} = + \Pr{\bigcup\limits_{n=1}^{\infty}(A_1\setminus A_n)}. + \] + + А это означает, что + + \begin{multline*} + \lim\limits_{n \to \infty} \Pr{A_n} = + \Pr{A_1} - \lim\limits_{n \to \infty}\Pr{A_1\setminus A_n} = + \Pr{A_1} - \Pr{\bigcup\limits_{n=1}^{\infty}(A_1\setminus A_n)} =\\= + \Pr{A_1} - \Pr{A_1 \setminus \bigcap\limits_{n=1}^{\infty}(A_n)} = + \Pr{A_1} - \Pr{A_1} + \Pr{\bigcap\limits_{n=1}^{\infty}(A_n)} = + \Pr{\bigcap\limits_{n=1}^{\infty}(A_n)} + \end{multline*} + + \item \textbf{d $\Rightarrow$ b} (непрерывность снизу означает непрерывность в нуле) + + Тривиально. + + \item \textbf{b $\Rightarrow$ a} (непрерывность в нуле означает счётную аддитивность) + + Пусть множества $A_1, \ldots, A_n$ попарно не пересекаются и $\bigsqcup\limits_{n=1}^{\infty}A_n + \in \mathcal{A}$. Тогда можно заметить, что + \[ + \Pr{\bigsqcup\limits_{n=1}^{\infty}A_n} = + \Pr{\bigsqcup\limits_{i=1}^{n}A_i} + + \Pr{\bigsqcup\limits_{i=n+1}^{\infty}A_i}. + \] + + Осталось только заметить, что $n\to\infty \implies \bigsqcup\limits_{i=n+1}^{\infty}A_i + \downarrow \emptyset$ и, пользуясь этим, доказать последний переход: + + \begin{multline*} + \sum\limits_{i = 1}^{\infty}\Pr{A_i} = + \lim\limits_{n\to\infty} \sum\limits_{i = 1}^{n}\Pr{A_i} = + \lim\limits_{n\to\infty} \Pr{\bigsqcup\limits_{i = 1}^{n}A_i} = + \lim\limits_{n\to\infty} \left( + \Pr{\bigsqcup\limits_{i = 1}^{\infty}A_i} - + \Pr{\bigsqcup\limits_{i = n+1}^{\infty}A_i} + \right) =\\= + \Pr{\bigsqcup\limits_{i = 1}^{\infty}A_i} - + \lim\limits_{n\to\infty} \Pr{\bigsqcup\limits_{i = n+1}^{\infty}A_i} = + \Pr{\bigsqcup\limits_{i = 1}^{\infty}A_i} + \end{multline*} + \end{itemize} +\end{proof} + + +\subsection{Вероятностные меры на $\left( \R, \mathcal{B}(\R) \right)$.} + Пусть $\Pr$ --- некоторая вероятностная мера. + + \begin{definition} + \emph{Функцией распределения} вероятностной меры $\Pr$ называют функцию $F: \R \to [0, 1]$ такую, что + $F(x) = \Pr{(\infty, x]}$. + \end{definition} + + \begin{lemma}[Свойства функции распределения] + \ + \begin{enumerate} + \item + $F(x)$ неубывающая; + \item + \(\lim\limits_{x\to +\infty} F(x)= 1;\) + \item + \(\lim\limits_{x\to -\infty} F(x)= 0;\) + \item + $F(x)$ непрерывна справа. + \end{enumerate} + \end{lemma} + \begin{proof} + \ + \begin{enumerate} + \item Если $y > x$, то в силу аддитивности $\Pr$, $F(y) - F(x) = \Pr{(x, y]}$ + \item Пусть $x_n \uparrow +\infty$; тогда $(-\infty, x] \uparrow \R$. Значит, + \( + \lim\limits_{x_n\to +infty} F(x_n) = + \lim\limits_{x_n\to +infty} \Pr{(-\infty, x_n]} = + \Pr{\R} = + 1 + \) + \item Аналогично. + \item Пусть $x_n \downarrow x$; тогда, в силу непрерывности вероятностной меры, $F(x_n) \to + F(x)$. + \end{enumerate} + \end{proof} + + \textbf{Примеры:} + \begin{itemize} + \item $F(x) = \begin{cases} + 1, x\geq c;\\ + 0, x < c + \end{cases}$ + \item $F(x) = \begin{cases} + 1, x > 1;\\ + x, x\in [0, 1];\\ + 0, x < 0 + \end{cases}$ + + Такой функции распределения соответствует вероятностная мера $\Pr$ такая, что $\forall a < b \in + [0, 1],\ \Pr{(a, b]} = b - a$ \footnote{говоря простым языком, вероятность попадания в полуинтервал + пропорциональна его длине.} Такая мера называется \emph{мерой Лебега}. + \end{itemize} diff --git a/probability-theory/tex/main.pdf b/probability-theory/tex/main.pdf new file mode 100644 index 0000000..68db408 Binary files /dev/null and b/probability-theory/tex/main.pdf differ diff --git a/probability-theory/tex/main.tex b/probability-theory/tex/main.tex new file mode 100644 index 0000000..51e4a33 --- /dev/null +++ b/probability-theory/tex/main.tex @@ -0,0 +1,30 @@ +\documentclass[a4paper,12pt]{book} +\usepackage{header} +\usepackage{definitions} +\usepackage{enumitem} + +\begin{document} + \pagestyle{empty} + \titlepage + \tableofcontents + + \chapter{Лекции} + \pagestyle{fancy} + \input{lecture_1_09.09.2016} + \input{lecture_2_16.09.2016} + \input{lecture_3_23.09.2016} + \input{lecture_4_30.09.2016} + \input{lecture_5_07.10.2016} + \input{lecture_6_14.10.2016} + \input{lecture_7_21.10.2016} + + \pagestyle{empty} + \chapter{Семинары} + \pagestyle{fancy} + \input{seminar_1_09.09.2016} + \input{seminar_2_16.09.2016} + \input{seminar_3_23.09.2016} + \input{seminar_4_30.09.2016} + \input{seminar_5_07.10.2016} + \input{seminar_6_21.10.2016} +\end{document} diff --git a/probability-theory/tex/seminar_1_09.09.2016.tex b/probability-theory/tex/seminar_1_09.09.2016.tex new file mode 100644 index 0000000..a1f11ba --- /dev/null +++ b/probability-theory/tex/seminar_1_09.09.2016.tex @@ -0,0 +1,166 @@ +\section{Семинар от 09.09.2016} +Перед тем, как начать решать задачи, кратко опишем вероятностное пространство для броска \(n\)-гранного кубика: \(\Omega = \{\omega_1, \omega_2, \ldots, \omega_n\}, \omega_i = \{\text{выпало число }i\}\), \(P(\omega_i) = \frac{1}{n}\) для всех \(i\). + +\begin{problem} + Пусть бросаются \(n\)-гранный и \(m\)-гранный кубики. Какова вероятность \(\Pr\) того, что выпадет одно чётное и одно нечётное число? +\end{problem} +\begin{proof}[Решение] + В данной задаче есть два случая: + \begin{enumerate} + \item На первом выпало чётное число очков, а на втором~--- нечётное. Количество чётных чисел от 1 до \(n\) равно \(\left\lfloor\frac{n}{2}\right\rfloor\), а нечётных чисел от 1 до \(m\)~--- \(\left\lceil\frac{m}{2}\right\rceil\). Тогда есть \(\left\lceil\frac{m}{2}\right\rceil\left\lfloor\frac{n}{2}\right\rfloor\) успешных исходов. + \item На первом выпало нечётное число очков, на втором~--- чётное. Аналогичными рассуждениями получаем \(\left\lfloor\frac{m}{2}\right\rfloor\left\lceil\frac{n}{2}\right\rceil\) успешных исходов. + \end{enumerate} + Всего же исходов \(mn\). Следовательно, \[\Pr =\frac{\left\lceil\frac{m}{2}\right\rceil\left\lfloor\frac{n}{2}\right\rfloor + \left\lfloor\frac{m}{2}\right\rfloor\left\lceil\frac{n}{2}\right\rceil}{mn}.\qedhere\] +\end{proof} + +\begin{problem} + Пусть бросаются два \(n\)-гранных кубика. Какова вероятность \(\Pr(i)\) того, что суммарно выпадет \(2 \leq i \leq 2n\) очков? +\end{problem} +\begin{proof}[Решение] + В данной задаче есть два случая: + \begin{enumerate} + \item \(i \leq n + 1\). Представим \(i\) в следующем виде: \(i = k + (i - k)\), где \(1 \leq k \leq i - 1\). Такое ограничение сверху на \(k\) объясняется тем, что иначе \(i - k\) будет меньше 1, а при броске кубика не может выпасть меньше 1 очка. Ограничение снизу объясняется аналогично. Тогда есть \(i - 1\) подходящий случай. + \item \(n + 2 \leq i \leq 2n\). Опять же, представим \(i\) в виде \(i = k + (i - k)\). Теперь определим границы для \(k\). Очевидно, что \(k \leq n\). Так как \(i - k \leq n\), то \(k \geq i - n\). Тогда получаем \(i - n \leq k \leq n\). Тогда есть \(n - (i - n) + 1 = 2n - i + 1\) подходящий случай. + \end{enumerate} + Так как всего есть \(n^2\) разных вариантов того, сколько очков выпадет на кубиках, то получаем, что + \[\Pr(i) = \begin{cases} + \frac{i - 1}{n^2} & i \leq n + 1, \\ + \frac{2n - i + 1}{n^2} & n + 2 \leq i \leq 2n. + \end{cases}\qedhere\] +\end{proof} +\begin{remark} + Если нарисовать график функции \(\Pr(i)\), то он будет выглядеть, как треугольник с вершиной в точке \(\left(n + 1, \frac{1}{n}\right)\). Такой график называют \emph{треугольным распределением}. +\end{remark} + +Перейдём от кубиков к монеткам. + +\begin{problem} + Пусть последовательно бросают \(n\) монет (полагается, что \(\Omega = \{\text{О}, \text{Р}\}\)). Какова вероятность \(\Pr\) того, что не выпадет последовательно + \begin{enumerate} + \item орёл и решка? + \item два орла? + \end{enumerate} +\end{problem} +\begin{proof}[Решение] + Как рассказывалось ранее, в такой модели есть \(2^n\) элементарных исходов. Посчитаем количество успешных исходов в каждом случае: + \begin{enumerate} + \item В таком случае легко понять, что будут допустимы только последовательности вида \(\underbrace{\text{P}\text{P}\ldots\text{P}}_{k\text{ раз}}\underbrace{\text{О}\text{О}\ldots\text{О}}_{n - k\text{ раз}}\), где \(0 \leq k \leq n\). Тогда есть \(n + 1\) подходящий исход. + + \item Пусть \(f_n\)~--- количество последовательностей длины \(n\), в которых нет двух орлов подряд. Как посчитать \(f_n\)? Попробуем выразить рекурсивно. Если при последнем броске выпал орёл, то при предпоследнем обязательно выпала решка. То, что идёт до решки, явно угадать невозможно. Но нам известно, что это последовательность размера \(n - 2\) и в ней нет двух орлов подряд. Тогда их \(f_{n - 2}\) вариантов. Если же выпала решка, то есть \(f_{n - 1}\) вариант. Отсюда получаем, что \(f_{n} = f_{n - 1} + f_{n - 2}\). Так как \(f_1 = 2\), а \(f_2 = 3\) (допускаются ОР, РО, РР), то \(f_n = F_{n + 2}\), где \(F_n\)~--- \(n\)-е число Фибоначчи. + \end{enumerate} + \textbf{Ответ:} 1) \(\Pr = \dfrac{n + 1}{2^n}\), 2) \(\Pr = \dfrac{F_{n + 2}}{2^n}\). +\end{proof} + +Перед тем, как идти дальше, сделаем небольшое отступление. Во втором пункте последней задачи нам повезло, что последовательность совпала с последовательностью чисел Фибоначчи. А что делать, если не удаётся угадать последовательность? В таком случае можно воспользоваться общим методом решения. Рассмотрим его на примере из последней задачи: +\[\begin{array}{l} +f_{n} = f_{n - 1} + f_{n - 2} \\ +f_{1} = 2 \\ +f_{2} = 3 +\end{array}\] +Выпишем \emph{характеристическое уравнение} для данного рекуррентного соотношения: \(\lambda^2 - \lambda - 1 = 0\). Находим его корни~--- в данном случае они равны \(\frac{1 \pm \sqrt{5}}{2}\). Тогда для каких-то констант \(a_1\) и \(a_2\) верно, что \[f_{n} = a_1\left(\frac{1 + \sqrt{5}}{2}\right)^n + a_2\left(\frac{1 - \sqrt{5}}{2}\right)^n.\] +Данные константы можно определить по начальным условиям. + +\begin{problem}[Парадокс дней рождения] + В группе \(27\) студентов. Считаем их дни рождения случайными и равновероятными. Какова вероятность \(P\) того, что хотя бы у двух студентов совпадают дни рождения? +\end{problem} +\begin{proof}[Решение] + В данной задаче гораздо проще посчитать вероятность дополнения, то есть вероятность того, что у всех 27 студентов будут разные дни рождения. Так как порядок дней рождения важен, то эта вероятность равна \(\frac{A_{365}^{27}}{365^{27}}\). В итоге получаем, что \[\Pr = 1 - \frac{A_{365}^{27}}{365^{27}}.\] + + Хорошо, ответ получен. Но по нему сложно сказать, много ли это или мало. Попробуем посчитать его приближенно: \(\Pr = 1 - \left(1 - \frac{1}{365}\right)\left(1 - \frac{2}{365}\right)\ldots\left(1 - \frac{27}{365}\right)\). Так как \(1 + x \approx e^x\), то \(\Pr \approx 1 - e^{-\frac{1 + 2 + \ldots + 27}{365}} \approx 1 - e^{-1.04} \approx 0,66\). Как видно, вероятность достаточно велика. +\end{proof} + +Сделаем небольшое теоретическое отступление. Вспомним формулу включений-исклю\-чений: \(\Pr(A \cup B) = \Pr(A) + \Pr(B) - \Pr(A \cap B)\). Попробуем придумать аналогичную формулу для трёх событий: +\[\begin{aligned} +\Pr(A \cup B \cup C) &= \Pr(A \cup B) + \Pr(C) - \Pr((A \cup B) \cap C) \\ +&= \Pr(A \cup B) + \Pr(C) - \Pr((A \cap C) \cup (B \cap C)) \\ +&= \Pr(A) + \Pr(B) + \Pr(C) - \Pr(A \cap B) - \Pr(A \cap C) - \Pr(B \cap C) + \Pr(A \cap B \cap C) +\end{aligned}\] +Уже видна некоторая закономерность. Сформулируем обобщение. +\begin{theorem}[Общая формула включений-исключений] + Пусть \(A_1, A_2, \ldots, A_n\)~--- некоторые события на \(\Omega\), а \(S_k = \sum\limits_{1 \leq i_1 < i_2 < \ldots < i_k \leq n}\Pr(A_{i_1} \cap A_{i_2} \cap \ldots \cap A_{i_k})\). Тогда \[\Pr(A_1 \cup A_2 \cup \ldots \cup A_n) = \sum_{k = 1}^{n}(-1)^{k - 1}S_k.\] +\end{theorem} +\begin{proof} + По индукции. База (\(n = 2\)) была доказана ранее. Теперь предположим, что утверждение верно для какого-то \(n\). Докажем, что из этого следует, что утверждение верно и для \(n + 1\): + \begin{multline*} + \Pr(A_1 \cup A_2 \cup \ldots \cup A_n \cup A_{n + 1}) = \Pr(A_1 \cup A_2 \cup \ldots \cup A_n) + \\ + \Pr(A_{n + 1}) - \Pr((A_1 \cup A_2 \cup \ldots \cup A_n) \cap A_{n + 1}) + \end{multline*} + Так как \((A_1 \cup A_2 \cup \ldots \cup A_n) \cap A_{n + 1} = \bigcup\limits_{i = 1}^{n}(A_i \cap A_{n + 1})\), то, пользуясь предположением индукции и рассуждениями, аналогичными доказательству для трёх множеств, получаем желаемое. +\end{proof} +\begin{remark} + Важное следствие из этой формулы: если \(A_1, A_2, \ldots, A_n\)~--- некоторые события на \(\Omega\), то по закону де Моргана получаем, что \(\Pr\left(\bigcap_{i = 1}^{n}\overline{A_i}\right) = \Pr\left(\overline{\bigcup\limits_{i = 1}^{n} A_i}\right) = 1 - \Pr\left(\bigcup\limits_{i = 1}^{n} A_i\right) = 1 - \sum\limits_{k = 1}^{n}(-1)^{k - 1}S_k\). Если положить \(S_0 = 1\), то эту формулу можно записать в виде \[\Pr\left(\bigcap\limits_{i = 1}^{n}\overline{A_i}\right) = \sum_{k = 0}^{n}(-1)^{k}S_k.\] +\end{remark} + +\begin{problem} + Пусть мы раскидали \(n\) шаров по \(m\) ящикам. Какова вероятность \(\Pr\) того, что ни один ящик не пуст? Рассмотрите случаи, когда шары различимы и неразличимы. +\end{problem} +\begin{proof}[Решение] + Начнём со случая различимых шаров. В данном случае элементарным исходом будет \(\omega = (\omega_1, \omega_2, \ldots, \omega_m)\), где \(\omega_i\)~--- количество шаров в \(i\)-м ящике. В таком случае \(|\Omega| = \binom{n + m - 1}{m - 1}\) (cхема выбора неупорядоченных наборов с возвратом). Теперь посчитаем количество подходящих исходов. Так как ни один ящик не пуст, то в каждом из них есть хотя бы по одному шару. Тогда нужно посчитать количество способов раскидать \(n - m\) шаров по \(m\) ящикам. Это можно сделать \(\binom{n - 1}{m - 1}\) способом. Отсюда получаем, что вероятность равна \[\Pr = \dfrac{\binom{n - 1}{m - 1}}{\binom{n + m - 1}{m - 1}}.\] + + Теперь предположим, что шары неразличимы. Рассмотрим событие \(A_i = \{i\)-й ящик пуст\(\}\). Чему равна вероятность такого события? Для каждого из \(n\) шаров есть \(m - 1\) подходящий ящик. Тогда \(\Pr(A_i) = \frac{(m - 1)^n}{m^n} = \left(1 - \frac{1}{m}\right)^n\). Пересечение \(A_{i_1} \cap A_{i_2} \cap \ldots \cap A_{i_k}\) означает, что \(k\) ящиков с номерами \(i_1, i_2,\ldots, i_k\) пусты. Тогда \(\Pr(A_{i_1} \cap A_{i_2} \cap \ldots \cap A_{i_k}) = \left(1 - \frac{k}{m}\right)^n\). Заметим, что событие ``ни один ящик не пуст'' равно \(\overline{A_{1}} \cap \overline{A_{i_2}} \cap \ldots \cap \overline{A_{m}}\). Пользуясь формулой включений-исключений, получаем, что вероятность равна + \[\Pr = \sum\limits_{k = 0}^{m}(-1)^{k}\binom{m}{k}\left(1 - \frac{k}{m}\right)^{n}.\qedhere\] +\end{proof} + +\begin{problem} + Алиса и Боб случайно подбрасывают \(n\) монет. Какова вероятность \(P\) того, что число орлов у Алисы будет строго больше, чем у Боба? Каков будет ответ на этот вопрос, если Алиса подбросила \(n + 1\) монету? +\end{problem} +\begin{proof}[Решение] + Для начала посмотрим, чему равна вероятность того, что число орлов у Алисы равно числу орлов у Боба. + Если у Алисы выпало \(k\) орлов, что достигается в \(\binom{n}{k}\) случаев, то у Боба тоже должно выпасть \(k\) орлов. Тогда достаточно логично, что число успешных исходов равно \(\sum\limits_{k = 0}^{n} \binom{n}{k}^2\). Как это упростить? Воспользуемся тем, что \(\binom{n}{k} = \binom{n}{n - k}\). Теперь представим себе следующую ситуацию: пусть есть строка, содержащая \(2n\) символов. Из первых \(n\) нужно выбрать \(k\) символов, из вторых \(n\) нужно выбрать \((n - k)\). Это можно сделать \(\binom{n}{k}\binom{n}{n - k}\) способами. Если просуммировать эти числа по \(k\) от 0 до \(n\), то легко заметить, что это то же самое, что и посчитать количество способов выбрать \(n\) символов из \(2n\). Тогда \[\sum\limits_{k = 0}^{n} \binom{n}{k}^2 = \binom{2n}{n}.\] + Всего исходов \(4^n\) (по \(2^n\) на Алису и на Боба). Тогда вероятность равна \(\dfrac{\binom{2n}{n}}{4^n}\). + + Теперь рассмотрим вероятность из условия. Из-за симметричности она равна вероятности того, что у Алисы будет строго меньше орлов, чем у Боба. Тогда получаем, что \(2\Pr + \dfrac{\binom{2n}{n}}{4^n} = 1\). Отсюда \(\Pr = \dfrac{1}{2} - \dfrac{\binom{2n}{n}}{2^{2n + 1}}\). + + Теперь перейдём ко второму пункту. Его мы решим двумя способами~--- стандартным и ``олимпиадным''. Начнём со стандартного. Если у Алисы уже было больше орлов, чем у Боба, то что бы у неё не выпало, то ситуация не изменится. Если же было так, что у нё столько же орлов, сколько у Боба, то ей необходимо, чтобы выпал орёл. Тогда искомая вероятность равна \[\Pr' = \Pr + \dfrac{1}{2}\dfrac{\binom{2n}{n}}{4^n} = \dfrac{1}{2}.\] + + Теперь рассмотрим ``олимпиадный'' способ решения. Заметим, что вероятность того, что у Алисы будет больше орлов, чем у Боба, равна вероятности того, что у неё будет больше решек (из-за симметрии). При этом вероятность того, что у неё будет больше орлов, равна вероятности того, что у неё будет не больше решек, чем у Боба (пусть у неё на одного орла больше, тогда число решек у них совпадает). Отсюда сразу получаем, что \(\Pr' = \frac{1}{2}.\) +\end{proof} + +А сейчас мы посмотрим, почему стоит быть осторожным с азартными играми. +\begin{problem} + Пусть есть 52 карты, и игроку выдают 5 случайных карт. Найдите вероятности получения различных наборов из покера. +\end{problem} +\begin{proof}[Решение] + Начнём с того, что заметим, что выбрать 5 карт из 52 мы можем \(\binom{52}{5}\) способами. Теперь достаточно найти количество подходящих исходов. + \begin{enumerate} + \item Royal Flush~--- туз, король, дама, валет и десятка одной масти. Есть лишь 4 подходящих исхода. + \item Straight Flush~--- пять последовательных по достоинству карт одной масти (начиная не с туза). Так как первую карту можно выбрать 8 способами (от пятёрки до короля), то есть \(9 \cdot 4 = 36\) успешных исходов. + \item Four Of A Kind~--- четыре карты одного достоинства. Выберем достоинство (это можно сделать 13) способами и последнюю карту (это можно сделать 48 способами). Тогда есть \(13 \cdot 48\) подходящих комбинаций. + \item Full House~--- три карты одного достоинства и две карты другого достоинства. Выберем первое достоинство (13 вариантов) и выберем 3 карты из 4 подходящих (\(\binom{4}{3}\) способов). Теперь выберем второе достоинство (12 вариантов) и 2 карты из 4 (\(\binom{4}{2}\) вариантов). Тогда всего есть \(13 \cdot \binom{4}{3} \cdot 12 \cdot \binom{4}{2}\) вариантов. + \item Flush~--- пять карт одной масти. Всего выбрать пять карт одной масти можно \(\binom{13}{5}\) способами. Но в таком случае мы ещё учитываем Straight Flush и Royal Flush. Тогда есть \(4(\binom{13}{5} - 10)\) вариантов. + \item Straight~--- пять последовательных карт (не одной масти). Всего пять последовательных карт можно выбрать \(10 \cdot 4^5\) способами (сначала выбираем старшую карту, после чего масть для каждой). Но в таком случае учитывается Straight Flush и Royal Flush. Тогда есть \(10(4^5 - 4)\) подходящих наборов. + \item Three Of A Kind~--- три карты одного достоинства. Сначала выберем достоинство (13 вариантов), после чего выберем 3 карты из 4 (\(\binom{4}{3}\) вариантов). После чего выберем два разных достоинства (иначе будет Full House), что можно сделать \(\binom{12}{2}\) способами, и масти для двух карт (\(4^2\) способа). Итого~--- \(13 \cdot \binom{4}{3} \cdot \binom{12}{2} \cdot 4^2\) варианта. + \item Two Pair~--- две пары карт одного достоинства. Выберем достоинства и масти для двух пар (\(\binom{13}{2}\) варианта для достоинств, по \(\binom{4}{2}\) для выбора 2-х карт каждого достоинства). Осталось выбрать последнюю карту~--- это можно сделать \(52 - 8 = 44\) способами. Итого \(\binom{13}{2} \binom{4}{2}^2 \cdot 44\) исхода. + \item One Pair~--- одна пара карт одного достоинства. Выберем достоинство и 2 карты из 4 (\(\binom{13}{1} \cdot \binom{4}{2}\) вариантов). Теперь выберем три разных достоинства и масти для карт (\(\binom{12}{3} \cdot 4^3\) варианта). Итого \(\binom{13}{1} \cdot \binom{4}{2} \cdot \binom{12}{3} \cdot 4^3\) исходов. + \item High Card~--- ничего из вышеперечисленного. Выберем пять разных достоинств, не идущих подряд (\(\binom{13}{5} - 10\) вариантов) и выберем масти для каждой карты так, чтобы они не совпадали (\(4^5 - 4\) варианта). Итого \((\binom{13}{5} - 10)(4^5 - 4)\) вариантов. + \end{enumerate} + Теперь приближенно посчитаем вероятность каждого из наборов: + + \begin{center} + \begin{tabular}{|c|c|} + \hline + Тип & Вероятность \\ + \hline + Royal Flush & \(4/2598960 \approx 0,00015\%\) \\ + \hline + Straight Flush & \(36/2598960 \approx 0,0014\%\) \\ + \hline + Four Of A Kind & \(624/2598960 \approx 0,024\%\) \\ + \hline + Full House & \(3744/2598960 \approx 0,15\%\) \\ + \hline + Flush & \(5108/2598960 \approx 0,2\%\) \\ + \hline + Straight & \(10200/2598960 \approx 0,39\%\) \\ + \hline + Three Of A Kind & \(54912/2598960 \approx 2,11\%\) \\ + \hline + Two Pair & \(123552/2598960 \approx 4,75\%\) \\ + \hline + One Pair & \(1098240/2598960 \approx 42,26\%\) \\ + \hline + High Card & \(1302540/2598960 \approx 50,12\%\) \\ + \hline + \end{tabular} + \end{center} + Как видно из таблицы, получить что-то лучше, чем одну пару, уже не так просто. +\end{proof} \ No newline at end of file diff --git a/probability-theory/tex/seminar_2_16.09.2016.tex b/probability-theory/tex/seminar_2_16.09.2016.tex new file mode 100644 index 0000000..52383fa --- /dev/null +++ b/probability-theory/tex/seminar_2_16.09.2016.tex @@ -0,0 +1,168 @@ +\section{Семинар от 16.09.2016} +Начнём с разбора домашнего задания. +\begin{problem} + \(n\) шаров раскладывают по \(N\) ящикам. Найдите вероятность того, что для каждого \(i = 1, 2, \ldots, N\) в \(i\)-м ящике лежит \(n_i\) шаров, где \(n_1 + n_2 + \ldots + n_N = n\), если + \begin{enumerate} + \item шары различимы, + \item шары неразличимы. + \end{enumerate} +\end{problem} +\begin{proof}[Решение] + Начнём со случая различимых шаров. В первый ящик необходимо выбрать \(n_1\) шаров из \(n\), что можно сделать \(\binom{n}{n_1}\) способами. Для второго ящика надо выбрать \(n_2\) шаров из \(n - n_1\), что даёт \(\binom{n - n_1}{n_2}\). Рассуждая аналогично, получаем, что всего есть \(\binom{n}{n_1}\binom{n - n_1}{n_2} \ldots \binom{n - n_1 - \ldots - n_{N - 1}}{n_{N}} = \frac{n!}{n_{1}!(n - 1)!}\frac{(n - n_1)!}{n_2!(n - n_1 - n_2)!}\ldots\frac{(n - n_1 - \ldots - n_{N - 1})!}{n_N!(n - n_1 - \ldots - n_{N - 1} - n_N)!} = \frac{n!}{n_{1}!n_{2}!\ldots n_{N}!}\) успешных исходов. Всего же исходов \(N^{n}\). Тогда искомая вероятность равна \[\Pr = \frac{n!}{N^{n}n_{1}!n_{2}!\ldots n_{N}!}.\] + + Теперь рассмотрим случай, когда шары неразличимы. Заметим, что тогда есть лишь один подходящий случай. Всего же случаев \(\binom{n + N - 1}{N - 1}\). Тогда вероятность равна \[\Pr = \frac{1}{\binom{n + N - 1}{N - 1}}.\qedhere\] +\end{proof} +\begin{remark} + Заметим, что число успешных исходов в случае различимых шаров, равное \(\frac{n!}{n_{1}!n_{2}!\ldots n_{N}!}\), принято называть \emph{мультиномиальным коэффициентом}. Его можно получить, рассматривая полином \((x_1 + x_2 + \ldots + x_N)^{n}\). +\end{remark} + +\begin{problem}\ + \begin{enumerate} + \item[1)] Случайно бросаются три \(N\)-гранных кубика, на гранях которых написаны числа от 1 до \(N\). Найдите вероятность события \(A_i = \{\)сумма чисел, выпавших на кубиках, равна \(i\}, i \leq N + 2\). + \item[2)*] Случайно бросаются три \(N\)-гранных кубика, на гранях которых написаны числа от 1 до \(N\). Найдите вероятность события \(A_i = \{\)сумма чисел, выпавших на кубиках, равна \(i\}, i = 2,\ldots,2N\). + \item[3)**] Случайно бросаются \(k\) различных \(N\)-гранных кубиков, на гранях которых написаны от 1 до \(N\). Найдите вероятность события \(A_i = \{\)сумма чисел, выпавших на кубиках, равна \(i\}, i = k,\ldots,kN\). + \end{enumerate} +\end{problem} +\begin{proof}[Решение пункта (1)] + Пусть \(i = k_1 + k_2 + k_3\), и \(1 \leq k_1, k_2, k_3 \leq N\). Как посчитать число подходящих наборов? Воспользуемся методом точек и перегородок. Пусть есть \(i\) точек и нужно расставить 2 перегородки по \(i - 1\) допустимой позиции. Тогда есть \(\binom{i - 1}{2}\) допустимых набора. Отсюда получаем, что искомая вероятность равна \[\Pr[i] = \frac{(i - 1)(i - 2)}{2N^3}.\qedhere\] +\end{proof} +\begin{remark} + Пункты (2) и (3) на данный момент слишком сложны. Их адекватное решение будет рассказано ближе к концу курса. +\end{remark} + +\begin{problem} + Пусть выбирается произвольная перестановка из \(S_n\). Какова вероятность того, что 1 и 2 будут лежать в одном цикле? +\end{problem} +\begin{proof}[Решение] + Воспользуемся тем фактом, что каждая перестановка однозначно представима в виде композиции циклов. Пусть цикл, содержащий 1 и 2, состоит из \(k + 1\) элемента (\(1 \leq k \leq n - 1\)). Позицию для 2 можно выбрать \(k\) способами. Далее будем заполнять цикл. Есть \((n - 2)(n - 3)\ldots(n - k)\) вариантов его заполнения. Остальное же мы можем заполнять, как хотим. Следовательно, итого есть \(k(n - 2)(n - 3)\ldots(n - k)(n - k - 1)! = k(n - 2)!\) допустимых перестановок с нужным циклом размера \(k\). Тогда, суммируя по \(k\) от \(1\) до \(n - 1\), получаем \(n - 2)!(1 + 2 + \ldots + (n - 1)) = \frac{1}{2}n!\). Но всего перестановок \(n!\). Тогда вероятность равна \(1/2\). +\end{proof} + +\begin{problem} + Пусть в группе 25 студентов. Считаем, что дни рождения равновероятны и случайны. Найдите вероятность того, что найдётся ровно одна пара студентов такая, что + \begin{itemize} + \item дни рождения у них совпадают + \item у всех других студентов дни рождения не совпадают с днём рождения данной пары студентов + \end{itemize} +\end{problem} +\begin{proof} + Для начала посчитаем вероятность дополнения к событию. В данном случае дополнением является событие ``нет такой пары студентов, что их дни рождения совпадают и у остальных они другие''. + + Рассмотрим событие \(A_i = \{\)дни рождения в день \(i\) совпадают только у двух человек\(\}\). Его вероятность равна \(\Pr(A_{i}) = \frac{\binom{25}{2}\cdot 364^{23}}{365^{25}}\). Теперь посчитаем вероятность объединения \(k\) событий \(A_{i_1}, A_{i_2}, \ldots, A_{i_k}\) равна \[\Pr(A_{i_1} \cap A_{i_2} \cap \ldots \cap A_{i_k}) = \frac{\binom{25}{2}\binom{23}{2} \ldots \binom{25 - 2(k - 1)}{2}(365 - k)^{25 - 2k}}{365^{25}}.\] + Теперь посчитаем вероятность дополнения. Она равна \(\Pr\left(\bigcap\limits_{i = 1}^{365} \overline{A_i}\right)\). Её можно посчитать с помощью формулы включений-исключений. Теперь введём функцию \(\alpha(x, y)\), где \(x\)~--- количество студентов, а \(y\)~--- количество дней. Данная функция равна вероятности того, что ``среди \(x\) студентов нет такой пары студентов, что их дни рождения совпадают, и среди других студентов они другие и находятся среди \(y\) выбранных дней''. Она считается аналогично. + + Теперь посчитаем вероятность из условия. Для этого выберем двух человек из 25, выберем им день рождения. После чего посчитаем вероятность дополнения для 23 студентов и 364 дней и умножим на \(364^{23}\). Тогда ответ равен + \[\Pr = \frac{\binom{25}{2} \cdot 365 \cdot \alpha(23, 364) \cdot 364^{23}}{365^{25}}.\qedhere\] +\end{proof} + +Теперь рассмотрим несколько классических задач на условную вероятность. + +\begin{problem}[Парадокс Монти-Холла] + Вы участвуете в игре, в которой надо выбрать одну дверь из трёх. За одной из них автомобиль, а за другими~--- козы. Вы выбрали первую дверь. Ведущий открыл третью дверь, за которой стоит коза. Ведущий предлагает изменить выбор с первой двери на вторую. Стоит ли это делать? +\end{problem} +\begin{proof}[Решение] + Рассмотрим два решения~--- элементарное и через теорему Байеса. Начнём со второго. + + Пусть \(C_{i} = \{\)машина стоит за \(i\)-й дверью\(\}\) Очевидно, что \(\Pr(C_i) = 1/3\). Теперь введём событие \(H = \{\)ведущий открывает третью дверь\(\}\). Так как ведущий не желает открывать дверь с автомобилем, то условные вероятности будут равны + \[\begin{array}{l} + \Pr(H \mid C_1) = 1/2 \\ + \Pr(H \mid C_2) = 1 \\ + \Pr(H \mid C_3) = 0 + \end{array}\] + Теперь посчитаем вероятность \(\Pr(C_2 \mid H)\). По теореме Байеса она равна + \[\Pr(C_2 \mid H) = \frac{\Pr(H \mid C_2)\Pr(H)}{\Pr(H \mid C_1)\Pr(H) + \Pr(H \mid C_2)\Pr(H) + \Pr(H \mid C_3)\Pr(H)} = \frac{1}{1/2 + 1 + 0} = \frac{2}{3}\] + Если же не менять дверь, то вероятность не изменится и будет равна \(1/3\). Поэтому выгоднее изменить выбор двери. + + Теперь рассмотрим элементарное решение. Так как вероятность того, что за дверью будет машина, равна \(1/3\), то на вторую и третью дверь вместе приходится \(2/3\). Так как после открытия третьей двери оказалось, что за ней стояла коза, то вероятность ``переходит'' второй двери. Тогда вероятность того, что за первой дверью будет машина, равна \(1/3\), а за второй~--- \(2/3\). Выбор очевиден. +\end{proof} + +\begin{problem}[Задача о поручике Ржевском] + Поручик Ржевский пришёл в казино и решил поиграть на деньги. Сначала у него есть 8 рублей, и он хочет выйти из казино с 256 рублями. Ему предлагают две тактики: + \begin{itemize} + \item Каждый раз идти ва-банк. + \item Каждый раз играть на 1 рубль. + \end{itemize} + Какую тактику выбрать поручику, если вероятность выигрыша составляет: (a) \(1/4\), (b) \(3/4\)? +\end{problem} +\begin{proof}[Решение] + В случае первой тактики всё просто~--- он не имеет права проиграть. Поэтому вероятность того, что он уйдёт с желаемой суммой, равна \(p^5\). + + Со второй тактикой дела обстоят интереснее. Введём событие \(p_{l} = \{\)поручик получил желаемое, изначально имея \(l\) рублей\(\}\). По формуле полной вероятности получим рекурсивную формулу. Вместе с начальными условиями получаем систему + \[\begin{array}{l} + p_{l} = (1 - p)p_{l - 1} + pp_{l + 1} \\ + p_{0} = 0 \\ + p_{256} = 1 + \end{array}\] + Выпишем характеристическое уравнение: \(p\lambda^2 - \lambda + (1 - p) = 0\). Корни этого уравнения имеют вид \[\frac{1 \pm \sqrt{1 - 4p + 4p^2}}{2p} = \frac{1 \pm (1 - 2p)}{2p} = \left[\begin{array}{l} + 1 \\ \frac{1 - p}{p} + \end{array}\right.\] + Тогда получаем, что \(p_{l} = a_1 + a_2\left(\frac{1 - p}{p}\right)^{l}\). Теперь определим значение констант. Так как \(p_0 = 0\), то \(0 = a_1 + a_2\) и \(a_1 = -a_2 = -a\). Теперь рассмотрим \(p_{256}\): + \[1 = -a + a\left(\frac{1 - p}{p}\right)^{256} \implies a = \frac{1}{\left(\frac{1 - p}{p}\right)^{256} - 1}\] + Отсюда получаем, что Отсюда получаем, что \(p_{l} = \dfrac{\left(\frac{1 - p}{p}\right)^{l} - 1}{\left(\frac{1 - p}{p}\right)^{256} - 1}\) и вероятность успеха второй стратегии равна \(p_8\). + + Теперь осталось посчитать. Сначала посчитаем для \(p = 1/4\): + \[\Pr_{\text{I}} = \left(\frac{1}{4}\right)^5 = \frac{1}{1024}\] + \[\Pr_{\text{II}} = \frac{\left(\frac{1 - 1/4}{1/4}\right)^{8} - 1}{\left(\frac{1 - 1/4}{1/4}\right)^{256} - 1} = \frac{3^8 - 1}{3^{256} - 1} \approx \frac{1}{3^{248}}\] + В таком случае шанс выйти из казино по своей воле выше, если каждый раз играть ва-банк. + + Теперь же посчитаем для \(p = 3/4\): + \[\Pr_{\text{I}} = \left(\frac{3}{4}\right)^5 = \frac{243}{1024}\] + \[\Pr_{\text{II}} = \frac{\left(\frac{1 - 3/4}{3/4}\right)^{8} - 1}{\left(\frac{1 - 3/4}{3/4}\right)^{256} - 1} = \frac{1 - (1/3)^{8}}{1 - (1/3)^{256}} \approx \frac{6560}{6561}\] + В таком же случае гораздо безопаснее каждый раз играть на один рубль. +\end{proof} + +\begin{problem}[Задача о контрольной работе] + Пусть студенты A, B, C пишут контрольную. Студент A решает любую задачу с вероятностью \(3/4\), студент B~--- с вероятностью \(1/2\), а студент C~--- с вероятностью \(1/4\). В контрольной работе 4 задачи. Преподаватель получает анонимную работу, в которой решено 3 задачи. Кому эта работа скорее всего принадлежит? +\end{problem} +\begin{proof}[Решение] + Пусть \(D = \{\)автор решил 3 задачи из 4\(\}\). Теперь введём ещё три события: \(D_A = \{\)автор~--- студент A\(\}\), \(D_B = \{\)автор~--- студент B\(\}\), \(D_C = \{\)автор~--- студент C\(\}\). Очевидно, что \(\Pr(D_A) = \Pr(D_B) = \Pr(D_C) = \frac{1}{3}\). Найдём условную вероятность события \(D\) для разных условий: + \[\begin{array}{l} + \Pr(D \mid D_A) = \left(\frac{3}{4}\right)^{3} \cdot \binom{4}{1} \cdot \frac{1}{4} = \frac{27}{64} \\ + \Pr(D \mid D_B) = \left(\frac{1}{2}\right)^{3} \cdot \binom{4}{1} \cdot \frac{1}{2} = \frac{1}{4} = \frac{16}{64} \\ + \Pr(D \mid D_C) = \left(\frac{1}{4}\right)^{3} \cdot \binom{4}{1} \cdot \frac{3}{4} = \frac{3}{64} + \end{array}\] + Теперь воспользуемся теоремой Байеса: + \[\begin{aligned} + \Pr(D_A \mid D) &= \frac{\Pr(D \mid D_A)\Pr(D_A)}{\Pr(D \mid D_A)\Pr(D_A) + \Pr(D \mid D_B)\Pr(D_B) + \Pr(D \mid D_C)\Pr(D_C)} \\ + &= \frac{\frac{27}{64}}{\frac{27}{64} + \frac{16}{64} + \frac{3}{64}} = \frac{27}{46} + \end{aligned}\] + Аналогично получаем, что \(\Pr(D_B \mid D) = \frac{16}{46}\) и \(\Pr(D_C \mid D) = \frac{3}{46}\). Следовательно, эту работу, скорее всего, сдал студент \(A\). +\end{proof} + +\begin{minipage}{0.5\textwidth} + \begin{flushleft} + \begin{problem} + Пусть пять приборов соединены в схему. Каждый из них пропускает ток с вероятностью \(p\). Какова вероятность того, что схема пропускает ток? Какова вероятность того, что есть ток, но при этом E сломан? + \end{problem} + \end{flushleft} +\end{minipage} +\begin{minipage}{0.4\textwidth} + \begin{flushright} + \begin{circuitikz}[european resistors] + \draw (0, 0) to[short, *-] (1,0); + \draw (1, 0) to[short] (1, 1); + \draw (1, 0) to[short] (1, -1); + \draw (1, 1) to[R, l=A] (3, 1); + \draw (1, -1) to[R, l=B] (3, -1); + \draw (3, 1) to[R, l=E] (3, -1); + \draw (3, 1) to[R, l=D] (5, 1); + \draw (3, -1) to[R, l=C] (5, -1); + \draw (5, 1) to[short] (5, 0); + \draw (5, -1) to[short] (5, 0); + \draw (5, 0) to[short, -*] (6, 0); + \end{circuitikz} + \end{flushright} +\end{minipage} +\begin{proof}[Решение] + Для начал посмотрим, по каким путям может пройти ток: + \begin{itemize} + \item Ток может пойти по \(AD\)~--- тогда вероятность того, что ток будет, равна \(p^2\). + \item Если \(D\) сломан, то ток может пойти по \(AEC\). Вероятность такого случая равна \(p^3(1 - p)\). + \item Если \(A\) сломан, то ток может пойти по \(BC\). Вероятность этого равна \(p^2(1 - p)\). + \item Если же сломаны и \(A\), и \(C\), то ток пойдёт по \(BED\). Вероятность такого равна \(p^3(1 - p)^2\). + \end{itemize} + Тогда итоговая вероятность равна сумме: \[\Pr(\text{в цепи есть ток}) = p^2 + p^3(1 - p) + p^2(1 - p) + p^3(1 - p)^2.\] + + Теперь ответим на второй вопрос. Воспользуемся определением условной вероятности: + \[\Pr(\text{E не проводит ток} \mid \text{в цепи есть ток}) = \frac{\Pr(\text{E не проводит ток и в цепи есть ток})}{\Pr(\text{в цепи есть ток})}\] + Вероятность сверху посчитать несложно~--- достаточно рассмотреть допустимые пути. Тогда ответ равен \[\Pr(\text{E не проводит ток} \mid \text{в цепи есть ток}) = \frac{p^2(1 - p) + p^2(1 - p)^2}{p^2 + p^3(1 - p) + p^2(1 - p) + p^3(1 - p)^2}.\qedhere\] +\end{proof} \ No newline at end of file diff --git a/probability-theory/tex/seminar_3_23.09.2016.tex b/probability-theory/tex/seminar_3_23.09.2016.tex new file mode 100644 index 0000000..3d721dc --- /dev/null +++ b/probability-theory/tex/seminar_3_23.09.2016.tex @@ -0,0 +1,122 @@ +\section{Семинар от 23.09.2016} +Как обычно, начнём с разбора домашнего задания. +\begin{problem} + В ящике \(N\) различимых шаров, из которых ровно \(M\) белых. Последовательно вынимают \(n \leq N\) шаров. Пусть событие \(A_k\) означает, что \(k\)-й по счёту вынутый шар~--- белый, а событие \(B_m\)~--- что всего вынули \(m \leq M\) белых шаров. + + Найдите \(\Pr(A_k \mid B_m)\), если (a) шары вынимаются без возвращения, (б) с возвращением. +\end{problem} +\begin{proof}[Решение] + Начнём со случая, когда нельзя возвращать шары. По определению условной вероятности \(\Pr(A_k \mid B_m) = \dfrac{\Pr(A_k \cap B_m)}{\Pr(B_m)}\). Для начала посчитаем \(\Pr(B_m)\). Как это сделать? Зафиксируем набор из \(n\) шаров, в котором первые \(m\) шаров белые. Какова вероятность того, что выпадет такой набор? Она равна \[\frac{M}{N}\cdot\frac{M - 1}{N - 1}\cdot\ldots\cdot\frac{M - m + 1}{N - m + 1}\cdot\frac{N - M}{N - m}\cdot\frac{N - M - 1}{N - m - 1}\cdot\ldots\cdot\frac{N - M - (n - m) + 1}{N - n + 1}.\] Теперь заметим, что если переставить числители местами, то получится вероятность того, что выпадет какой-то другой набор из \(n\) шаров, среди которых \(m\) белых. Тогда вероятность того, что выпадет хоть какой-то набор, подходящий под это условие, равна \[\Pr(B_m) = \binom{n}{m}\frac{\frac{M!}{(M - m)!}\frac{(N - M)!}{(N - M - (n - m))!}}{\frac{N!}{(N - n)!}} = \frac{\binom{n}{m}\binom{N - n}{M - m}}{\binom{N}{M}}.\] + Теперь перейдём к числителю. Как посчитать \(\Pr(A_k \cap B_m)\)? В принципе, точно так же, как и \(\Pr(B_m)\). Однако, в данном случае зафиксирована \(k\)-я позиция, поэтому нужно лишь выбрать \(m - 1\) позицию из \(n - 1\) для белых шаров. Тогда \[\Pr(A_k \cap B_m) = \frac{\binom{n - 1}{m - 1}\binom{N - n}{M - m}}{\binom{N}{M}}.\] + Отсюда получаем, что \(\Pr(A_k \mid B_m) = \dfrac{\binom{n - 1}{m - 1}}{\binom{n}{m}} = \dfrac{m}{n}\). + + Переходим к случаю (б). Опять же, посчитаем \(\Pr[B_m]\) и \(\Pr[A_k \cap B_m]\). Рассуждения о перестановке так же имеют место, поэтому: + \[\Pr(B_m) = \binom{n}{m}\frac{M^{m}(N - M)^{n - m}}{N^n}\] + \[\Pr(A_k \cap B_m) = \binom{n - 1}{m - 1}\frac{M^{m}(N - M)^{n - m}}{N^n}\] + Подставляя полученные значения в формулу условной вероятности, получаем, что \\ \(\Pr(A_k \mid B_m) = \dfrac{\binom{n - 1}{m - 1}}{\binom{n}{m}} = \dfrac{m}{n}\). + + \textbf{Ответ:} \(\dfrac{m}{n}\) в обоих случаях. +\end{proof} + +\begin{problem} + Ящик содержит \(a\) белых и \(b\) чёрных шаров (все шары различимы). Наудачу извлекается шар. Он возвращается обратно, и, кроме того, добавляется \(c\) шаров одного с ним цвета. Далее, подобная процедура повторяется снова. Пусть событие \(A_k\) означает, что на \(k\)-м шаге извлечён белый шар. Найдите + \begin{enumerate} + \item[(а)] вероятность того, что при первых \(n = n_1 + n_2\) извлечениях попалось \(n_1\) белых и \(n_2\) чёрных шаров; + \item[(б)] вероятность события \(A_k\); + \item[(в)] условную вероятность \(\Pr(A_m \mid A_k)\) при \(m > k\); + \item[(г)] условную вероятность \(\Pr(A_m \mid A_k)\) при \(m > k\); + \end{enumerate} +\end{problem} +\begin{proof}[Решение] + Рассмотрим ситуацию, когда последовательно выпало \(n_1\) белых и \(n_2\) чёрных шаров. Какова вероятность такого события? Она равна \[\frac{a}{a + b}\cdot\frac{a + c}{a + b + c}\cdot\ldots\cdot\frac{a + (n_1 - 1)c}{a + b + (n_1 - 1)c}\cdot\frac{b}{a + b + n_1c}\cdot\frac{b + c}{a + b + (n_1 + 1)c}\cdot\ldots\cdot\frac{b + (n_2 - 1)c}{a + b + (n - 1)c}.\] + Теперь переставим числители так, чтобы числители вида \(a + x\) и \(b + x\) были отсортированы по возрастанию. Тогда эта вероятность будет соответствовать какому-то другому набору из \(n_1\) белых и \(n_2\) чёрных. Пусть \(\Pr(a, b, n_1, n_2)\)~--- вероятность того, что из \(a\) белых и \(b\) чёрных при первых \(n = n_1 + n_2\) извлечениях попалось \(n_1\) белых и \(n_2\) чёрных шаров. Тогда + \[\Pr(a, b, n_1, n_2) = \binom{n}{n_1}\frac{a(a + c)\ldots(a + (n_1 - 1)c)b(b + c)\ldots(b + (n_2 - 1)c)}{(a + b)(a + b + c)\ldots(a + b + (n - 1)c)}.\] + + Теперь посчитаем \(\Pr(A_k)\). Пусть \(C_{ki} = \{\)до \(k\)-ой процедуры вытащили ровно \(i\) белых шаров\(\}\). Очевидно, что эти события образуют разбиение вероятностного пространства. Тогда по формуле полной вероятности \(\Pr(A_k) = \sum\limits_{i = 0}^{k - 1} \Pr(A_k \cap C_{ki})\). Заметим, что \(\Pr(A_k \cap C_{ki})\) совпадает с \(\Pr(a, b, i + 1, k - i - 1)\) с тем лишь отличием, что в данном случае нужно выбрать \(i\) позиций из \(k - 1\): \[\Pr[A_k \cap C_{ki}] = \binom{k - 1}{i}\frac{a(a + c)\ldots(a + ic)b(b + c)\ldots(b + (k - i)c)}{(a + b)(a + b + c)\ldots(a + b + (n - 1)c)}.\] Тогда \[\Pr(A_k) = \frac{a}{a + b} \sum_{i = 0}^{k - 1} \binom{k - 1}{i}\frac{(a + c)\ldots(a + ic)b(b + c)\ldots(b + (k - i)c)}{(a + b + c)\ldots(a + b + (n - 1)c)}.\] + Теперь заметим, что элемент суммы есть ни что иное, как \(\Pr(a + c, b, i, k - i - 1)\). Но \[\sum\limits_{i = 0}^{k - 1} \Pr(a + c, b, i, k - i - 1) = 1,\] так как эта сумма соответствует вероятности вытащить любой набор. Отсюда следует, что \[\Pr(A_k) = \dfrac{a}{a + b}.\] + + Перейдём к третьему (да и четвёртому тоже) пункту. По определению условной вероятности: \(\Pr(A_k \mid A_m) = \dfrac{\Pr(A_k \cap A_m)}{\Pr(A_m)}\). Как посчитать числитель? Точно так же, как и во втором случае. Пропустив аналогичные выкладки, выпишем ответ: \[\Pr(A_k \cap A_m) = \frac{a(a + c)}{(a + b)(a + b + c)}.\] + Тогда получаем, что \(\Pr(A_k \mid A_m) = \dfrac{a + c}{a + b + c}.\) +\end{proof} + +\begin{problem} + Пусть \(A, B, C\)~--- попарно независимые равновероятные события, причём \(A \cap B \cap C = \emptyset\). Найти максимально возможное значение \(\Pr(A)\). +\end{problem} +\begin{proof}[Решение] + Начнём с того, что заметим следующее: \(\Pr(A) \geq \Pr(A \cap (B \cup C)) = \Pr((A \cap B) \cup (A \cap C))\). Так как \(A \cap B \cap C = \emptyset\), то \((A \cap B) \cap (A \cap C) = \emptyset\). Следовательно, \(\Pr[A] \geq \Pr[A \cap B] + \Pr[A \cap C] = 2(\Pr[A])^2\) и \(\Pr(A) \leq 1/2\). + + Приведём пример, когда выполняется условие, причём \(\Pr(A) = 1/2\). Рассмотрим классическую модель \(\Omega = \{1, 2, 3, 4\}\) и события: \(A = \{1, 2\}\), \(B = \{2, 3\}\), \(C = \{3, 4\}\). Легко понять, что данные события удовлетворяют условию и \(\Pr(A) = 1/2\). +\end{proof} + +\begin{problem} + Игроки \(A\) и \(B\) играют в теннис. При розыгрыше на подаче \(A\) игрок \(A\) выигрывает с вероятностью \(p_1\), а при розыгрыше на подаче \(B\)~--- с вероятностью \(p_2\), все розыгрыши независимы. Игрок \(A\) подаёт первым, а выигрывает тот, кто первым наберёт \(n\) очков. Существует два варианта правил перехода подачи: + \begin{itemize} + \item[(а)] поочерёдная; + \item[(б)] игрок подаёт до тех пор, пока не проиграет розыгрыш. + \end{itemize} + Покажите, что вероятность выигрыша \(A\) не зависит от правил перехода подачи, и вычислите её. +\end{problem} +\begin{proof}[Решение] + Будем считать, что всего было проведено \(2n - 1\) розыгрышей. При таком количестве один игрок гарантированно наберёт не менее \(n\) очков, а второй~--- гарантированно меньше. Теперь опишем вероятностное пространство. Элементарные исходы будут иметь вид \(\omega = (a_1, a_2, \ldots, a_{2n - 1})\), где \(a_i \in \{0, 1\}\) (0 соответствует проигрышу, 1~--- победе). Согласно этой схеме исход будет подходящим, если в наборе будет не меньше \(n\) единиц. + + Начнём с пункта (а). + + Поймём, как посчитать вероятность какого-либо элементарного случая. Пусть \(n = 4\) и мы хотим найти вероятность элементарного исхода \(0110110\). Она равна \((1 - p_1)p_2p_1(1 - p_2)p_1p_2(1 - p_1) = p_{1}^{2}p_{2}^{2}(1 - p_{1})^{2}(1 - p_2)^{1}\). Отсюда получаем закономерность: вероятность элементарного исхода \(a_{1}a_{2}\ldots a_{2n - 1}\) равна \[p_{1}^{\sum\limits_{i = 0}^{n - 1} a_{2i + 1}}p_{2}^{\sum\limits_{i = 1}^{n - 1} a_{2i}}(1 - p_{1})^{n - \sum\limits_{i = 0}^{n - 1} a_{2i + 1}}(1 - p_{2})^{n - 1 - \sum\limits_{i = 1}^{n - 1} a_{2i}}.\] + Пусть \(k_{1} = \sum\limits_{i = 0}^{n - 1} a_{2i + 1}\)~--- количество единиц на нечётных местах, а \(k_{2} = \sum\limits_{i = 1}^{n - 1} a_{2i}\)~--- на чётных. Тогда вероятность того, что \(A\) выиграл, будет равна + \[\Pr = \sum\limits_{\substack{k_1, k_2 \\ k_1 + k_2 \geq n \\ k_1, k_2 \leq n}}\binom{n}{k_1}\binom{n - 1}{k_2}p_{1}^{k_1}p_{2}^{k_2}(1 - p_{1})^{n - k_1}(1 - p_{2})^{n - 1 - k_2}.\] + + Теперь перейдём к пункту (б). + + Докажем следующее: между данными методами подачи есть биекция, т.е. игре с поочерёдной подачей можно сопоставить игру с подачей до проигрыша. Рассмотрим частный случай: поочерёдно вышел исход \(0110110\). Тогда можно ``раскидать'' партии так: + \begin{center} + \begin{tabular}{ll} + Подаёт первый: &0110 \\ + Подаёт второй: &101 + \end{tabular} + \end{center} + Биекция будет иметь вид \(0101101\). Как её построить? Разбиваем исход на подачи первого и второго игрока, тем самым получая строки длиной \(n\) и \(n - 1\). После этого строим по ним новую строку по следующему алгоритму: + \begin{algorithm}[H] + \caption{Построение исхода в случае подачи до проигрыша по исходу в случае поочерёдной подачи} + \begin{algorithmic}[1] + \State Начинаем со строки длины \(n\) (строки для первого игрока); + \State Копируем строку посимвольно до тех пор, пока не попадём на 0; + \State Переходим на другую строку; + \State Повторяем два предыдущих шага до тех пор, пока не перенесём все символы. + \end{algorithmic} + \end{algorithm} + Алгоритм построения исхода при поочерёдной подаче по исходу при подаче до проигрыша будет почти аналогичен. +\end{proof} + +Перейдём к задачам на тему математического ожидания и дисперсии. +\begin{problem} + Бросили два \(N\)-гранных кубика. Пусть \(\xi\)~--- сумма выпавших очков. Найдите \(\E[\xi]\) и \(\D[\xi]\). +\end{problem} +\begin{proof}[Решение] + Пусть \(\E[\xi_1]\)~--- матожидание количество очков, выпавших на первом кубике. Посчитать его несложно: + \(\E[\xi_1] = \sum\limits_{i = 1}^{N}\dfrac{i}{N} = \dfrac{N + 1}{2}\). Заметим, что \(\E[\xi] = \E[\xi_1 + \xi_2] = \E[\xi_1] + \E[\xi_2]\). Тогда \[\E[\xi] = \frac{N + 1}{2} + \frac{N + 1}{2} = N + 1.\] + + Дисперсию будем считать по сделующей формуле: \(\D[\xi_1] = \E[\xi_1^2] - (\E[\xi_1])^2\). + Посчитаем первый член: \[\E[\xi_1^2] = \sum_{i = 1}^{N}\frac{i^2}{N} = \frac{N(2N + 1)(N + 1)}{6N} = \frac{(2N + 1)(N + 1)}{6}.\] + Отсюда получаем, что + \[\D[\xi_1] = \frac{N + 1}{2}\left(\frac{2N + 1}{3} - \frac{N + 1}{2}\right) = \frac{(N + 1)(N - 1)}{12} = \frac{N^2 - 1}{12}.\] + Заметим, что \(\xi_1\) и \(\xi_2\) независимы (ведь кубики тоже независимы). Тогда \(\D[\xi] = \D[\xi_1] + \D[\xi_2]\) и \[\D[\xi] = \dfrac{N^2 - 1}{6}.\qedhere\] +\end{proof} + +\begin{problem} + Пусть выбрана случайная перестановка \(\sigma \in S_n\). Введём случайную величину \(\xi\), равная количеству стационарных точек (чисел \(i\) таких, что \(\sigma(i) = i\)). Найдите \(\E[\xi]\) и \(\D[\xi]\). +\end{problem} +\begin{proof}[Решение] + Введём событие \(A_i = \{\sigma(i) = i\}\). Тогда \(\xi = \sum\limits_{i = 1}^{n} I_{A_i}\). + По свойству линейности: + \[\E[\xi] = \E\left[\sum_{i = 1}^{n} I_{A_i}\right] = \sum_{i = 1}^{n} \E[I_{A_i}] = \sum_{i = 1}^{n} \Pr(A_i)\] + Так как \(\Pr(A_i) = \frac{(n - 1)!}{n!} = \frac{1}{n}\), то \(\E[\xi] = 1\). + + Теперь перейдём к подсчёту дисперсии. Распишем дисперсию через ковариации: + \[\D[\xi] = \cov(\xi, \xi) = \cov\left(\sum_{i = 1}^{n} I_{A_i}, \sum_{i = 1}^{n} I_{A_i}\right) = \sum_{i = 1}^{n} \sum_{j = 1}^{n} \cov(I_{A_i}, I_{A_i}).\] + Посчитаем \(\cov(I_{A_i}, I_{A_i})\). По свойству ковариации она равна \[\E[I_{A_i}I_{A_j}] - \E[I_{A_i}]\E[I_{A_j}] = \E[I_{A_i \cap A_j}] - \E[I_{A_i}]\E[I_{A_j}] = \Pr[A_i \cap A_j] - \Pr[A_i]\Pr[A_j].\] Возникают два случая: + \begin{itemize} + \item[(a)] \(i = j\). Тогда \(\cov(I_{A_i}, I_{A_j}) = \frac{1}{n} - \frac{1}{n^2}\). + \item[(б)] \(i \neq j\). Тогда \(\Pr[A_i \cap A_j] = \frac{(n - 2)!}{n!} = \frac{1}{n(n - 1)}\) и \(\cov(I_{A_i}, I_{A_j}) = \frac{1}{n^2(n - 1)}\). + \end{itemize} + Отсюда получаем, что \[\D[\xi] = \frac{n(n - 1)}{2}\frac{1}{n^2(n - 1)} + n\left(\frac{1}{n} - \frac{1}{n^2}\right) = 1.\qedhere\] +\end{proof} \ No newline at end of file diff --git a/probability-theory/tex/seminar_4_30.09.2016.tex b/probability-theory/tex/seminar_4_30.09.2016.tex new file mode 100644 index 0000000..a1291cc --- /dev/null +++ b/probability-theory/tex/seminar_4_30.09.2016.tex @@ -0,0 +1,195 @@ +\section{Семинар от 30.09.2016} +Как обычно, начнём с разбора домашнего задания. +\begin{problem} + Пусть \(\xi\)~--- некоторая случайная величина. При каком \(a \in \R\) достигается + минимальное значение функции \(f(a) = \E[(\xi - a)^2]\)? +\end{problem} +\begin{proof}[Решение] + Раскроем матожидание по линейности: \(\E[(\xi - a)^2] = \E[\xi^2] - 2a\E[\xi] + a^2\). Теперь добавим и вычтем \((\E[\xi])^2\). Тогда \(f(a) = (a - \E[\xi])^2 + \E[\xi^2] - (\E[\xi])^2 = (a - \E[\xi])^2 + \D[\xi]\). Так как \(\D[\xi]\) не зависит от \(a\), то минимум достигается при \((a - \E[\xi])^2 = 0 \iff a = \E[\xi]\). +\end{proof} + +\begin{problem} + Найдите \(\E[\xi]\), \(\D[\xi]\) и \(\E[3^{\xi}]\), если \(\xi\)~--- это а) пуассоновская случайная величина с параметром \(\lambda > 0\), б) геометрическая случайная величина с параметром \(p \in (0, 1)\). +\end{problem} +\begin{proof}[Решение] + Начнём с пуассоновской величины. Как известно, множество её значений равно \(\N\), а \(\Pr(\xi = k) = \frac{\lambda^k}{k!}e^{-\lambda}\) для любого \(k \in \N\). Тогда матожидание \(\xi\) равно + \[\E[\xi] = \sum_{k = 1}^{\infty} k\frac{\lambda^k}{k!}e^{-\lambda} = \frac{\lambda}{e^{\lambda}} \sum_{k = 1}^{\infty} \frac{\lambda^{k - 1}}{(k - 1)!} = \frac{\lambda}{e^{\lambda}}e^{\lambda} = \lambda.\] + + Перейдём к подсчёту дисперсии: + \[\D[\xi] = \E[\xi^2] - (\E[\xi])^2 = \sum_{k = 1}^{\infty} k^2\frac{\lambda^k}{k!}e^{-\lambda} - \lambda^2 = \frac{1}{e^{\lambda}}\sum_{k = 1}^{\infty} \frac{k\lambda^k}{(k - 1)!} - \lambda^2.\] + + Поменяем индекс суммирования, уменьшив его на 1. Тогда дисперсия равна + \[\frac{1}{e^{\lambda}}\sum_{k = 0}^{\infty} \frac{(k + 1)\lambda^{k + 1}}{k!} - \lambda^2 = \frac{\lambda^2}{e^{\lambda}}\sum_{k = 1}^{\infty} \frac{\lambda^{k - 1}}{(k - 1)!} + \frac{\lambda}{e^{\lambda}}\sum_{k = 0}^{\infty} \frac{\lambda^{k}}{k!} - \lambda^2 = \lambda.\] + + Теперь перейдём к подсчёту математического ожидания случайной величины \(3^{\xi}\): + \[\E[3^{\xi}] = \sum_{k = 1}^{\infty} 3^k\frac{\lambda^k}{k!}e^{-\lambda} = e^{-\lambda}\sum_{k = 1}^{\infty}\frac{(3\lambda)^k}{k!} = e^{2\lambda}.\] + + Перейдём к геометрическому распределению. Напомню, что множество её значений равно \(\N\), а \(\Pr(\xi = k) = p(1 - p)^{k - 1}\) для любого \(k \in \N\). Тогда матожидание равно + \[\E[\xi] = \sum_{k = 1}^{\infty} kp(1 - p)^{k - 1} = p\sum_{k = 1}^{\infty} k(1 - p)^{k - 1}.\] + + Как посчитать этот ряд? Возьмём производную от функции \(f(x) = \sum\limits_{k = 1}^{\infty} x^{k}, |x| < 1\). Легко увидеть, что она совпадает с этим рядом. Тогда + \[\sum_{k = 1}^{\infty} kx^{k - 1} = \left(\frac{1}{1 - x}\right)' = \frac{1}{(1 - x)^2}.\] + + Отсюда сразу получаем, что \(\E[\xi] = \dfrac{1}{p}\). + + Перейдём к дисперсии: \(\D[\xi] = \E[\xi^2] - (\E[\xi])^2 = \E[\xi^2] - \frac{1}{p^2}\). Рассмотрим \(\E[\xi^2]\) отдельно: + \[\E[\xi^2] = p\sum_{k = 1}^{\infty} k^2(1 - p)^{k - 1}.\] + + С таким рядом простой метод не пройдёт. Но можно добавить и вычесть \(\E[\xi]\). Тогда + \[\E[\xi^2] = p\sum_{k = 1}^{\infty} k(k - 1)(1 - p)^{k - 1} +\E[\xi] = p(1 - p)\sum_{k = 1}^{\infty} k(k - 1)(1 - p)^{k - 2} + \frac{1}{p}.\] + + Заметим, что ряд равен \(\left.\left(\dfrac{1}{1 - x}\right)''\right|_{x = 1 - p} = \left.\dfrac{2}{(1 - x)^3}\right|_{x = 1 - p} = \dfrac{2}{p^3}\). Тогда \[\D[\xi] = \dfrac{2(1 - p)}{p^2} + \frac{1}{p} - \frac{1}{p^2} = \frac{1 - p}{p^2}.\] + + Перейдём к \(\E[3^{\xi}]\): + \[\E[3^{\xi}] = 3p\sum_{k = 1}^{\infty} 3^{k - 1}(1 - p)^{k - 1}.\] + + В данном случае внутри ряда геомертическая прогрессия с знаменателем \(3(1 - p)\). Для сходимости ряда необходимо, чтобы \(3(1 - p) < 1 \implies p > 2/3\). Если это не так, то \(\E[3^{\xi}] = +\infty\). Иначе же \[\E[3^{\xi}] = \frac{3p}{1 - 3(1 - p)}.\qedhere\] +\end{proof} + +\begin{problem} + На скамейке сидят \(n\) человек. Каждый из них независимо бросает игральную шестигранную кость. Случайная величина \(X\) равна количеству людей, у которых у хотя бы одного соседа выпало то же число, что и у него самого. Найдите \(\E[X]\) и \(\D[X]\). +\end{problem} +\begin{proof}[Решение] + Введём событие \(A_i = \{\)у \(i\)-го человека на скамейке число совпало хотя бы с одним из соседей\(\}\). Легко понять, что \(X = \sum\limits_{i = 1}^{n} I_{A_i}\). Тогда \(\E[X] = \sum\limits_{i = 1}^{n} \Pr(A_i)\). Чему равно \(\Pr(A_i)\)? Если \(i = 1\) или \(i = n\), то число у человека должно совпасть с числом единственного соседа и вероятность равна \(1/6\). Если же \(1 < i < n\), то покажем, что вероятность равна \(11/36\). Пусть мы зафиксировали число у человека посередине. Тогда либо у человека слева совпадает, а у человека справа нет (что даёт 5 вариантов), либо симметрично (ещё 5), либо у обоих сразу (ещё 1). Всего исходов же 36. Отсюда получаем, что \[\E[X] = \dfrac{11(n - 2)}{36} + \dfrac{1}{3} = \dfrac{11n - 10}{36}.\] + + Приступим к подсчёту дисперсии.\footnote{Готовьтесь, будет больно.} Распишем дисперсию через сумму ковариаций: + \[\D[X] = \cov(X, X) = \sum_{i, j = 1}^{n} \cov(I_{A_i}, I_{A_j}) = \sum_{i, j = 1}^{n} \left(\Pr(A_i \cap A_j) - \Pr(A)\Pr(B)\right).\] + + Есть 4 случая: + \begin{enumerate} + \item \(i = j\). Тогда \(\cov(I_{A_i}, I_{A_j}) = \frac{11}{6^2} - \frac{11 \cdot 11}{6^4} = \frac{11 \cdot 25}{6^4}\) для \(1 < i < n\) и \(\frac{1}{6} - \frac{1}{36} = \frac{5}{36}\) для \(i = 1\) или \(i = n\). + \item \(|i - j| = 1\). Тогда подойдут ситуации \(aabb\) и \(baac\) (\(a, b, c\)~--- выпавшие числа). Отсюда получаем, что \(\Pr(A_i \cap A_j) - \Pr(A)\Pr(B) = \frac{1}{6} + \frac{6 \cdot 5}{6^4} - \frac{11^2}{36}\) для \(1 < i,j < n\). Если, например, \(i = 1\), то подойдёт только ситуация \(aac\). Тогда \(\Pr(A_i \cap A_j) - \Pr(A)\Pr(B) = \frac{1}{36} - \frac{11}{6^3}\). + \item \(|i - j| = 2\). Тогда подходят ситуации \(baaac\) или \(bbcaa\). Тогда \(\Pr(A_i \cap A_j) = \frac{1}{6^3} + \frac{5 \cdot 4}{6^4}\). В случае \(i = 1\) допустимы лишь ситуация \(aaac\) или \(aabb\). Отсюда получаем, что \(\Pr(A_i \cap A_j) = \frac{1}{6^3} + \frac{30}{6^4}\). + \item \(|i - j| > 2\). Тогда они никак не влияют на друга и \(\cov(I_{A_i}, I_{A_j}) = 0\). + \end{enumerate} + + Просуммировав всё это, получаем значение дисперсии. +\end{proof} + +\begin{problem} + Случайный граф \(G(n, p)\) получается случайным и независимым удалением ребер из полного графа на \(n\) вершинах \(K_n\): любое ребро остается в \(G(n, p)\) независимо от других с с вероятностью \(p\). Пусть \(X_n\)~--- число треугольников в \(G(n, p)\). Вычислите \(\E[X_n]\) и \(\D[X_n]\). +\end{problem} +\begin{proof} + Заметим, что всего треугольников в графе на \(n\) вершинах можно составить \(\binom{n}{3}\). При этом вероятность того, что какие-то три фиксированных ребра будут в графе, равна \(p^3\). Отсюда сразу получаем, что \(\E[X_n] = \binom{n}{3}p^3\). + + Перейдём к подсчёту дисперсии. Введём событие \(A_i = \{i\)-й треугольник вошёл в случайный граф\(\}\) (для этого каким-либо образом пронумеруем все треугольники). Тогда выразим дисперсию через сумму ковариаций индикаторов: + \[\D[X_n] = \sum_{i, j = 1}^{\binom{n}{3}}\cov(I_{A_i}, I_{A_j}).\] + Есть три случая: + \begin{itemize} + \item \(\bigtriangleup_i\) и \(\bigtriangleup_j\) не имеют общих рёбер. Тогда события \(A_i\) и \(A_j\) независимы и \(\cov(I_{A_i}, I_{A_j}) = 0\). + \item \(\bigtriangleup_i\) и \(\bigtriangleup_j\) имеют одно общее ребро. Тогда \(\cov(I_{A_i}, I_{A_j}) = \Pr(A_i \cap A_j) - \Pr(A_i)\Pr(A_j) = p^5 - p^6\). + \item \(\bigtriangleup_i\) и \(\bigtriangleup_j\) имеют два общих ребра. Тогда эти треугольники совпадают и \(\cov(I_{A_i}, I_{A_j}) = \Pr(A_i \cap A_j) - \Pr(A_i)\Pr(A_j) = p^3 - p^6\) + \end{itemize} + Теперь посчитаем число вторых и третьих случаев. Очевидно, что выбрать 4 вершины из \(n\) можно \(\binom{n}{4}\) способами. Но при этом эти 4 вершины будут задавать два разных варианта таких треугольников (в зависимости от положения общего ребра). Тогда + \[\D[X_n] = 2\binom{n}{4}(p^5 - p^6) + \binom{n}{3}(p^3 - p^6).\] +\end{proof} + +Порой в некоторых задачах нужно доказать, что вероятность того, что случайная величина будет равна нулю, стремится к 0 или к 1. Для упрощения жизни можно доказать два простых и полезных правила: + +\textbf{Метод первого момента:} пусть \(\{x_n\}_{n = 1}^{\infty}\)~--- последовательность случайных величин с значеними в \(\Z_+\). Тогда \[\Pr(x_n > 0) = \Pr(x_n \geq 1) \leq \{\text{по неравенству Маркова}\} \leq \E[x_n].\] + +Если \(\E[x_n] \to 0\) при \(n \to \infty\), то \(\Pr(x_n = 0) \to 1\). + +\textbf{Метод второго момента:} пусть \(\{x_n\}_{n = 1}^{\infty}\)~--- последовательность случайных величин. Тогда +\[\Pr(x_n = 0) \leq \Pr(x_n \geq 0) = \Pr(|x_n - \E[x_n]| \geq \E[x_n]) \leq \{\textrm{по неравенству Чебышёва}\} \leq \frac{\D[x_n]}{(\E[x_n])^2}.\] + +Если \(\D[x_n] = o((\E[x_n])^2)\), то \(\Pr(x_n = 0) \to 0\) при \(n \to \infty\). +\begin{problem} + Случайный граф \(G(n, p)\) получается случайным и независимым удалением ребер из полного графа на \(n\) вершинах \(K_n\): любое ребро остается в \(G(n, p)\) независимо от других с с вероятностью \(p\). Пусть \(x_n\)~--- число треугольников в \(G(n, p)\). Докажите, что + \[\Pr(x_n = 0) \to \begin{cases} + 1, &\text{если } np(n) \to 0, \\ + 0, &\text{если } np(n) \to \infty. + \end{cases}\] +\end{problem} +\begin{proof} + Воспользуемся результатами задачи 4. Тогда \(\E[x_n] = \frac{1}{6}(np)((n - 1)p)((n - 2)p)\). Пусть \(np(n) \to 0\). Тогда \(\E[x_n] \to 0\). Следовательно, по правилу первого момента \(\Pr(x_n = 0) \to 1\). + + Теперь предположим, что \(np(n) \to \infty\). Тогда \(\D[x_n] = O(n^4p^6)\), а \((\E[x_n])^2 = O(n^6p^6)\). Тогда \(\D[x_n] = o((\E[x_n])^2)\) и по правилу второго момента \(\Pr(x_n = 0) \to 0\) при \(n \to \infty\). +\end{proof} + +\begin{remark} + Теперь предположим, что \(np(n) \to c, c > 0\). Тогда легко понять, что \(\E[x_n] \to \frac{c^3}{6}\). Вообще, при достаточно больших \(n\) \(x_n\) будет иметь распределение, близкое к пуассоновскому: + \[\E[x_n^k] \to \E[\xi^k], \xi \sim \mathrm{Pois}\left(\frac{c^3}{6}\right).\] +\end{remark} + +Введём несколько различных определений, которые будут полезны в дальнейшем. +\begin{definition} + \emph{Моментом порядка \(k\)} для случайной величины \(\xi\) называют \(\E[\xi^k]\). +\end{definition} + +\begin{definition} + \emph{Центральным моментом порядка \(k\)} для случайной величины \(\xi\) называют \(\E[(\xi - \E[\xi])^k]\). +\end{definition} + +\begin{definition} + \emph{Факториальным моментом порядка \(k\)} для случайной величины \(\xi\) называют \(\E[\xi(\xi - 1)\ldots(\xi - k + 1)]\). +\end{definition} + +\begin{remark} + Обычный и факториальный моменты первого порядка совпадают с матожиданием, центральный момент первого порядка всегда равен 0, а второй центральный момент совпадает с дисперсией. +\end{remark} + +\begin{problem} + Пусть \(\xi_1\) и \(\xi_2\)~--- независимые случайные величины, причём \(\xi_i \sim \mathrm{Bin}(n_i, p)\). Какое распределение у случайной величины \(\xi_1 + \xi_2\)? +\end{problem} +\begin{proof}[Решение] + Из определения биномиального распределения получаем, что + \[\begin{aligned} + \Pr(\xi_1 = k) =& \binom{n_1}{k}p^{k}(1 - p)^{n_1 - k}, \\ + \Pr(\xi_2 = n - k) =& \binom{n_2}{n - k}p^{n - k}(1 - p)^{n_2 - n + k}. + \end{aligned}\] + + Посчитаем \(\Pr(\xi_1 + \xi_2 = n)\). Представим \(n\) в виде \(k + (n - k)\). Теперь поставим ограничения на \(k\): + \[ + \begin{cases} + 0 \leq k \leq n_1 \\ + 0 \leq n - k \leq n_2 + \end{cases} + \implies + \begin{cases} + 0 \leq k \leq n_1 \\ + n - n_2 \leq k \leq n + \end{cases} + \] + + Тогда + \[\begin{aligned} + \Pr(\xi_1 + \xi_2 = n) &= \sum_{k = \max(0, n - n_2)}^{\min(n, n_1)} \Pr(\xi_1 = k, \xi_2 = n - k) \\ + &= \sum_{k = \max(0, n - n_2)}^{\min(n, n_1)} \Pr(\xi_1 = k)\Pr(\xi_2 = n - k) \\ + &= \sum_{k = \max(0, n - n_2)}^{\min(n, n_1)} \binom{n_1}{k}\binom{n_2}{n - k}p^{n}(1 - p)^{n_1 + n_2 - n} \\ + &= p^{n}(1 - p)^{n_1 + n_2 - n}\sum_{k = \max(0, n - n_2)}^{\min(n, n_1)} \binom{n_1}{k}\binom{n_2}{n - k} + \end{aligned}\] + Теперь заметим, что \(\sum\limits_{k = \max(0, n - n_2)}^{\min(n, n_1)} \binom{n_1}{k}\binom{n_2}{n - k} = \binom{n_1 + n_2}{n}\). Рассуждения для доказательства точно те же, что и для \(\sum\limits_{k = 0}^{n} \binom{n}{k}^2 = \binom{2n}{n}\). Тогда + \[\Pr(\xi_1 + \xi_2 = n) = \binom{n_1 + n_2}{n}p^{n}(1 - p)^{n_1 + n_2 - n} \implies \xi_1 + \xi_2 \sim \mathrm{Bin}(n_1 + n_2, p).\qedhere\] +\end{proof} + +\begin{remark} + Предположим, что у нас есть \(n\) случайных величин, подчиняющихся бернуллиевскому распределению с параметром \(p\). Тогда их сумма будет иметь биномиальное распределение с параметрами \(n\) и \(p\). Это ещё раз доказывает, что в случае броска \(n\) монет сумма количества выпавших орлов будет подчиняться биномиальному распределению. +\end{remark} + +\begin{problem} + Пусть \(\xi_1\) и \(\xi_2\)~--- независимые случайные величины, причём \(\xi_i \sim \mathrm{Pois}(\lambda_i)\). Какое распределение у случайной величины \(\xi_1 + \xi_2\)? +\end{problem} +\begin{proof}[Решение] + По определению пуассоновского распределения + \[ + \Pr(\xi_1 = k) = \frac{\lambda_1^k}{k!}e^{-\lambda_1},\quad + \Pr(\xi_2 = n - k) = \frac{\lambda_2^{n - k}}{(n - k)!}e^{-\lambda_2}. + \] + Тогда + \[\begin{aligned} + \Pr(\xi_1 + \xi_2 = n) &= \sum_{k = 0}^{n} \Pr(\xi_1 = k, \xi_2 = n - k) = \sum_{k = 0}^{n} \Pr(\xi_1 = k)\Pr(\xi_2 = n - k) \\ + &= \sum_{k = 0}^{n} \frac{\lambda_1^k}{k!}e^{-\lambda_1}\frac{\lambda_2^{n - k}}{(n - k)!}e^{-\lambda_2} = \frac{e^{-(\lambda_1 + \lambda_2)}}{n!} \sum_{k = 0}^{n} \binom{n}{k}\lambda_1^{k}\lambda_2^{n - k} \\ + &= \frac{(\lambda_1 + \lambda_2)^n}{n!}e^{-(\lambda_1 + \lambda_2)}. + \end{aligned}\] + Тогда \(\xi_1 + \xi_2 \sim \mathrm{Pois}(\lambda_1 + \lambda_2)\). +\end{proof} + +\begin{problem} + Пусть есть \(n\) случайных независимых величин \(\xi_1, \xi_2, \ldots, \xi_n\), причём \(\xi_i \sim \mathrm{Geom}(p)\). Какое распределение у \(\xi_1 + \xi_2 + \ldots + \xi_n\)? +\end{problem} +\begin{proof}[Решение] + Напомню, что для геометрического распределения \(\Pr(\xi_i = k_i) = p(1 - p)^{k_i}\). Тогда + \[\Pr(\xi_1 + \xi_2 + \ldots + \xi_n = k) = \sum_{k_1 + k_2 + \ldots + k_n = k}p^{n}(1 - p)^{k} = \binom{n + k - 1}{n}p^{n}(1 - p)^{k}.\] + Данное распределение называется \emph{отрицательным биномиальным}. +\end{proof} \ No newline at end of file diff --git a/probability-theory/tex/seminar_5_07.10.2016.tex b/probability-theory/tex/seminar_5_07.10.2016.tex new file mode 100644 index 0000000..c87b32a --- /dev/null +++ b/probability-theory/tex/seminar_5_07.10.2016.tex @@ -0,0 +1,172 @@ +\section{Семинар от 07.10.2016} +Как обычно, начинаем с разбора домашнего задания. +\begin{problem} + Пусть случайные величины \(\xi_1, \ldots, \xi_n, \eta_1, \ldots, \eta_m\) независимы в совокупности. Докажите, что для любых функций \(f : \R^n \to \R\) и \(g : \R^m \to \R\) случайные величины \(f(\xi_1, \ldots, \xi_n)\) и \(g(\eta_1, \ldots, \eta_n)\) тоже независимы. +\end{problem} +\begin{proof} + Вообще, утверждение данной задачи почти что очевидно на интуитивном уровне. Но интуиция может подводить, так что докажем формально. + + Рассмотрим \(\Pr(f(\xi_1, \ldots, \xi_n) = a, g(\eta_1, \ldots, \eta_n) = b)\). Заметим, что это равно следующей сумме: + + \[\sum_{\substack{a_1, \ldots, a_n, b_1, \ldots, b_m: \\ f(a_1, a_2, \ldots, a_n) = a \\ g(b_1, b_2, \ldots, b_m) = b}} \Pr(\underbrace{\xi_1 = a_1, \ldots, \xi_n = a_n, \eta_1 = b_1, \ldots, \eta_m = b_m}_{\text{независимы по условию}}).\] + + Тогда \(\Pr(\xi_1 = a_1, \ldots, \xi_n = a_n, \eta_1 = b_1, \ldots, \eta_m = b_m) = \Pr(\xi_1 = a_1) \cdot \ldots \cdot \Pr(\xi_n = a_n) \cdot \Pr(\eta_1 = b_1) \cdot \ldots \cdot \Pr(\eta_m = b_m)\) и, распределяя слагаемые, получим, что эта сумма равна + + \[\left(\sum_{\substack{a_1, \ldots, a_n: \\ f(a_1, a_2, \ldots, a_n) = a}} \Pr(\xi_1 = a_1) \cdot \ldots \cdot \Pr(\xi_n = a_n) \right)\left(\sum_{\substack{b_1, \ldots, b_m: \\ g(b_1, b_2, \ldots, b_m) = b}} \Pr(\eta_1 = b_1) \cdot \ldots \cdot \Pr(\eta_m = b_m)\right).\] + + Но это есть ни что иное, как \(\Pr(f(\xi_1, \ldots, \xi_n) = a)\Pr(g(\eta_1, \ldots, \eta_n) = b)\). Отсюда получаем независимость \(f(\xi_1, \ldots, \xi_n)\) и \(g(\eta_1, \ldots, \eta_n)\), что и требовалось доказать. +\end{proof} + +\begin{problem} + Случайные величины \(X, Y, Z, W\) независимы в совокупности и одинаково распределены: каждая равновероятно принимает значения \(1\) и \(-1\). Являются ли независимыми в совокупности следующие наборы случайных величин: + + \begin{enumerate} + \item \(XYZ\), \(XYW\), \(XW\); + \item \(XY\), \(XYW\), \(XW\), \(XZW\); + \item \(XYZ\), \(XYW\), \(XW\), \(XZW\)? + \end{enumerate} + +\end{problem} +\begin{proof} + Для начала заметим следующее. Пусть у нас есть дву случайных независимые величины \(\xi\) и \(\eta\), равновероятно принимающие значения из \(\{-1, 1\}\). Тогда случайная величина \(\xi\eta\) тоже равновероятно принимает значения из \(\{-1, 1\}\). Покажем это: + \[\Pr{\xi\eta = 1} = \Pr{\xi = 1, \eta = 1} + \Pr{\xi = -1, \eta = -1} = \frac{1}{2}.\] + + Это доказывает, что любое произведение \(X\), \(Y\), \(Z\), \(W\), в котором каждая случайная величина участвует не более одного раза, равновероятно принимает значение из \(\{-1, 1\}\). Теперь посмотрим на наборы переменных из условия. + \begin{enumerate} + \item В данном случае нам надо показать, что для любого набора \((a_1, a_2, a_3), a_i \in \{-1, 1\}\) выполнено + \[\Pr{XYZ = a_1, XYW = a_2, XW = a_3} = \frac{1}{8} = \Pr{XYZ = a_1}\Pr{XYW = a_2}\Pr{XW = a_3}.\] + + Разложим вероятность слева по формуле полной вероятности для событий \(Z = 0\) и \(Z = 1\). В первом случае необходимо определить, какие значения \(X\), \(Y\) и \(W\) должны иметь для выполнения условия \(XY = a_1, XYW = a_2, XW = a_3, Z = 1\). Легко проверить, что из этого следует, что \(X = \frac{a_1a_3}{a_2}\), \(Y = \frac{a_2}{a_3}\), \(Z = 1\), \(W = \frac{a_2}{a_1}\). Тогда + \[\Pr{XY = a_1, XYW = a_2, XW = a_3 \given Z = 1} = \frac{1}{16}.\] + + Во втором же случае она считается практически аналогично и равна + \[\Pr{X = -\frac{a_1a_3}{a_2}, Y = \frac{a_2}{a_3}, Z = -1, W = -\frac{a_2}{a_1}} = \frac{1}{16}.\] + + Суммируя их, получаем, что \(\Pr{XYZ = a_1, XYW = a_2, XW = a_3} = \frac{1}{8}.\) Тогда случайные величины \(XYZ\), \(XYW\), \(XW\) независимы. + + \item Решим систему уравнений: + \[\begin{cases} + XY = a_1 \\ XYW = a_2 \\ XW = a_3 \\ XZW = a_4 + \end{cases} + \implies + \begin{cases} + X = \frac{a_1 a_3}{a_2} \\ Y = \frac{a_2}{a_3} \\ Z = \frac{a_4}{a_3} \\ W = \frac{a_2}{a_1} + \end{cases} + \] + + Отсюда следует, что \(\Pr{XY = a_1, XYW = a_2, XW = a_3, XZW = a_4} = \frac{1}{16}\). Отсюда следует независимость. + + \item Опять же, решим систему уравнений: + \[ + \begin{cases} + XYZ = a_1 \\ XYW = a_2 \\ XW = a_3 \\ XZW = a_4 + \end{cases} + \implies + \begin{cases} + X = \frac{a_1a_3^2}{a_2a_4} \\ Y = \frac{a_2}{a_3} \\ Z = \frac{a_4}{a_3} \\ W = \frac{a_2a_4}{a_1a_3} + \end{cases} + \] + + Тем самым снова получаем независимость. + \end{enumerate} +\end{proof} + +\begin{problem} + Докажите, что если последовательность случайных величин \(\{\xi_n\}_{n = 1}^{\infty}\) сходится по вероятности к двум случайным величинам \(\xi\), \(\eta\), \(\xi_n \prto \xi\), \(\xi_n \prto \eta\), то \(\Pr(\xi = \eta) = 1\). +\end{problem} +\begin{proof} + Суть у данной задачи следующая: сходимость по вероятности даёт настоящий предел, который единственен. + + Из определения сходимости по вероятности следует, что для любого \(\varepsilon > 0\) + \[ + \begin{aligned} + \Pr{|\xi_n - \xi| > \frac{\varepsilon}{2}} \to 0, \\ + \Pr{|\xi_n - \eta| > \frac{\varepsilon}{2}} \to 0. \\ + \end{aligned} + \] + + Тогда рассмотрим \(\Pr{|\xi - \eta| > \varepsilon}\): + \[\begin{aligned} + \Pr{|\xi - \eta| > \varepsilon} &= \Pr{|\xi - \xi_n + \xi_n - \eta| > \varepsilon} \\ + &\leq \Pr{|\xi_n - \xi| + |\xi_n - \eta| > \varepsilon} \\ + &\leq \Pr{\left\{|\xi_n - \xi| > \frac{\varepsilon}{2}\right\} \cup \left\{|\xi_n - \eta| > \frac{\varepsilon}{2}\right\}} \\ + &\leq \Pr{|\xi_n - \xi| > \frac{\varepsilon}{2}} + \Pr{|\xi_n - \eta| > \frac{\varepsilon}{2}} \to 0. + \end{aligned}\] + Второе неравенство легко понять, если представить его графически. Изобразим первую четверть координатной плоскости с координатами \(x = |\xi_n - \xi|\) и \(y = |\xi_n - \eta|\). Тогда для выражения справа недопустимая область будет иметь вид прямоугольного треугольника с координатами вершин \((0, 0)\), \((0, 1)\) и \((1, 0)\). Для выражения справа недопустимая область~--- это квадрат с координатами \((0,0)\), \((0, 1/2)\), \((1/2, 1/2)\) и \((1/2, 0)\). Но данный квадрат полностью включается в треугольник. +\end{proof} + +\begin{problem} + Случайные величины \(\{\xi_n\}_{n = 1}^{\infty}\) независимы в совокупности. Обозначим \(S_n = \xi_1 + \xi_2 + \ldots + \xi_n\). Пусть случайная величина \(\xi_n\) + + \begin{enumerate} + \item принимает три значения \(\{-n, 0, n\}\) с вероятностями \(\left(\frac{1}{2n^2}, 1 - \frac{1}{n^2}, \frac{1}{2n^2}\right)\); + \item принимает три значения \(\{-2^n, 0, 2^n\}\) с вероятностями \(\left(2^{-n - 1}, 1 - 2^{-n}, 2^{-n - 1}\right)\). + \end{enumerate} + + Выясните, в каком случае выполнен закон больших чисел: \(\frac{S_{n}}{n} \prto 0\) при \(n\to \infty\)? +\end{problem} +\begin{proof} + Для начала заметим, что и в первом, и во втором случае матожидание \(\xi_n\) равно 0. Тогда \(\E{S_n} = 0\) и можно применить неравенство Чебышёва: + \[\Pr{\left|\frac{S_n}{n}\right| \geq \alpha} \leq \frac{\D{S_n}}{\alpha n^2}.\] + + Теперь посчитаем \(\D{\xi_n}\): + \begin{enumerate} + \item \(\D{\xi_n} = \frac{1}{2n^2}n^2 + \frac{1}{2n^2}n^2 = 1\), + \item \(\D{\xi_n} = \frac{1}{2^{n + 1}}2^{2n} + \frac{1}{2^{n + 1}}2^{2n} = 2^n\). + \end{enumerate} + + Отсюда видно, что в первом случае закон больших чисел точно выполняется. Однако про второй мы ничего сказать не можем. Как быть? + + Зафиксируем некоторое \(\omega \in \Omega\) и рассмотрим последовательность \(\{\xi_n(\omega)\}_{n = 1}^{\infty}\). Утверждается следующее: в данной последовательности, начиная с некоторого номера \(N\), будут лишь нули. Докажем это. Зафиксируем некоторое натуральное число \(m\) и рассмотрим следующую вероятность: + \[\Pr{\exists n \geq m : \xi_{n} \neq 0} = \Pr{\sum_{n = m}^{\infty} \{\xi_n \neq 0\}} \leq \sum_{n = m}^{\infty} \Pr{\xi_n \neq 0} = \sum_{n = m}^{\infty} \frac{1}{2^n} = \frac{1}{2^{m - 1}} \xrightarrow{m \to \infty} 0.\] + + Теперь посчитаем вероятность того, что последовательность \(\{\xi_n(\omega)\}_{n = 1}^{\infty}\) не финитна (то есть содержит бесконечное число ненулевых элементов). Она равна + \[\Pr{\forall m \in \N\ \exists n \geq m : \xi_{n}(\omega) \neq 0} = \lim\limits_{m \to \infty} \Pr{\exists n \geq m : \xi_{n} \neq 0} = 0.\] + + Это и доказывает финитность \(\{\xi_n(\omega)\}_{n = 1}^{\infty}\). Тогда для любого \(\omega \in \Omega\) выполнено + \[\lim\limits_{n \to \infty} \frac{\sum\limits_{i = 1}^{n} \xi_i(\omega)}{n} = 0 \implies \frac{S_n}{n} \prto 0.\] + + Это доказывает то, что и для второго случая тоже выполнен закон больших чисел. +\end{proof} + +Теперь обсудим применения вероятностного метода к решению задач. + +Рассмотрим полный граф на \(n\) вершинах. Покрасим его ребра в два цвета. Тогда имеет место следующая теорема: +\begin{theorem}[Рамсей] + В достаточно большом полном графе с произвольной раскраской рёбер в белый и чёрный цвета найдётся черный полный подграф размера \(r\) и белый полный подграф размера \(s\) для наперёд заданных \(r\) и \(s\). +\end{theorem} + +\begin{definition} + Пусть \(m, n \in \N\). Число Рамсея \(\operatorname{R}(m, n)\)~--- это наименьшее из таких чисел \(x \in \N\), что при любой раскраске ребер полного графа на \(x\) вершинах в два цвета найдется клика на \(n\) вершинах с ребром цвета 1 или клика на \(m\) вершинах с ребром цвета 2. +\end{definition} + +\begin{problem}[Спенсер, 1974] + Докажите, что \[\operatorname{R}(k, k) \geq \frac{\sqrt{2}}{e}k2^{k/2}(1 + o(1)).\] +\end{problem} +\begin{proof} + Положим, что у нас есть полный граф на \(n\) вершинах, раскрашенный в два цвета произвольным образом. + + Пусть \(S\)~--- это некоторый подграф на \(k\) вершинах. Тогда введём событие \(A_{S} = \{\)все рёбра в \(S\) одного цвета\(\}\). Легко понять, что \(\Pr{A_S} = 2^{1 - \binom{k}{2}}\). Заметим, что если для двух подграфов \(S\) и \(T\) размера \(k\) выполнено \(|S \cap T| \leq 1\), то события \(A_{S}\) и \(A_{T}\) независимы (так как эти подграфы не содержат общих рёбер). Тогда событие \(A_{S}\) зависит от \(d\) событий, где + \[d = \left|\{T : |T| = k, |S \cap T| > 1\}\right| = \binom{k}{2}\binom{n - 2}{k - 2}.\] + + Эту оценку можно получить достаточно просто: достаточно выбрать какие-либо две вершины в \(S\) и сказать, что эти вершины принадлежат \(T\), после чего добавить \(k - 2\) каких-либо вершин в \(T\). + + Осталось лишь найти \(n\) такие, что выполняется требование локальной леммы: + + \[ep(d + 1) \leq 1 \iff e2^{1 - \binom{k}{2}}\left(\binom{k}{2}\binom{n - 2}{k - 2} + 1\right) \leq 1.\] + + Преобразуем это неравенство, пользуясь следствием из формулы Стирлинга: \(\binom{n}{k} \leq \left(\frac{en}{k}\right)^{k}\) + + \[\begin{aligned} + \binom{k}{2}\binom{n - 2}{k - 2} &\leq \frac{2^{\binom{k}{2}}}{2e} - 1 \\ + \left(\frac{en}{k}\right)^{k - 2} &\leq \frac{2^{\binom{k}{2}}}{ek(k - 1)} - \frac{1}{k(k - 1)} \\ + \left(\frac{en}{k}\right)^{k - 2} &\leq 2^{\binom{k}{2}}\left(\frac{1}{ek(k - 1)} + o(1)\right) \\ + \left(\frac{en}{k}\right)^{k - 2} &\leq 2^{\binom{k}{2}}\left(1 + o(1)\right) \\ + n &\leq \frac{1}{e}k2^{\frac{k}{2} + \frac{k}{2(k - 2)}}(1 + o(1)) \\ + n &\leq \frac{\sqrt{2}}{e}k2^{\frac{k}{2}}(1 + o(1)) + \end{aligned}\] + + Отсюда получаем, что \(\operatorname{R}(k, k) \geq \frac{\sqrt{2}}{e}k2^{k/2}(1 + o(1))\). + + % TODO: дописать доказательство нормальным образом +\end{proof} \ No newline at end of file diff --git a/probability-theory/tex/seminar_6_21.10.2016.tex b/probability-theory/tex/seminar_6_21.10.2016.tex new file mode 100644 index 0000000..b01e177 --- /dev/null +++ b/probability-theory/tex/seminar_6_21.10.2016.tex @@ -0,0 +1,185 @@ +\section{Семинар от 21.10.2016} +Так как на прошлом семинаре была контрольная работа, то начнём с её разбора. +\begin{problem} + В колоде содержится 52 карты четырёх мастей. Каждому из четырёх игроков раздают по шесть карт. Найдите вероятность того, что хотя бы у одного игрока будут карты одной масти. +\end{problem} +\begin{proof} + Введём событие \(A_i = \{\)у \(i\)-го игрока все карты одной масти\(\}\). Тогда вероятность из условия равна \(\Pr{A_1 \cup A_2 \cup A_3 \cup A_4}\). Пользуясь формулой включений-исклю\-чений, получаем, что + \[\begin{aligned} + \Pr{A_1 \cup A_2 \cup A_3 \cup A_4} &= \Pr{A_1} + \dotsb + \Pr{A_4} - \Pr{A_1 \cap A_2} - \dotsb - \Pr{A_3 \cap A_4} \\ &+ \Pr{A_1 \cap A_2 \cap A_3} + \dotsb + \Pr{A_2 \cap A_3 \cap A_4} - \Pr{A_1 \cap A_2 \cap A_3 \cap A_4}. + \end{aligned}\] + + Осталось посчитать эти вероятности: + + \[\Pr{A_i} = \frac{4 \cdot \binom{13}{6}}{\binom{52}{6}},\qquad \Pr{A_i \cap A_j} = \frac{4 \cdot \binom{13}{6}\binom{7}{6}}{\binom{52}{6}\binom{46}{6}} + \frac{4 \cdot 3 \cdot \binom{13}{6}^2}{\binom{52}{6}\binom{46}{6}},\] + + \[\Pr{A_i \cap A_j \cap A_k} = \frac{4 \cdot 3 \cdot \binom{3}{2}\binom{13}{6}^2\binom{7}{6}}{\binom{52}{6}\binom{46}{6}\binom{40}{6}} + \frac{4 \cdot 3 \cdot 2 \cdot \binom{13}{6}^3}{\binom{52}{6}\binom{46}{6}\binom{40}{6}},\] + + \[\Pr{A_1 \cap A_2 \cap A_3 \cap A_4} = \frac{4!\cdot \binom{13}{6}^4 + 4 \cdot 3 \cdot \binom{4}{2}\binom{13}{6}^2\binom{7}{6}^2 + 4 \cdot 3 \cdot 2 \cdot \binom{4}{2}\binom{13}{6}^3\binom{7}{6}}{\binom{52}{6}\binom{46}{6}\binom{40}{6}\binom{34}{6}}.\qedhere\] +\end{proof} + +\begin{problem} + Два ящика содержат красные и чёрные шары. Ящик \(A\) содержит 2 красных и 1 чёрный шар. Ящик \(B\)~--- 101 красный и 100 черных шаров. Вам предлагается сыграть в следующую игру. В тайне от вас равновероятно выбирается один из ящиков. Ваша задача~--- угадать, какой ящик был выбран. Для этого из ящика последовательно вынимается два шара. После вытаскивания первого шара и определения его цвета вы решаете, вернуть ли в ящик этот шар перед вторым вытаскиванием или нет. Какой должна быть ваша стратегия, чтобы максимизировать вероятность выигрыша? +\end{problem} +\begin{proof} + Рассмотим вероятности вытащить определённый набор в зависимости от того, какой ящик выбран: + + \begin{center} + \begin{tabular}{|c|c|c|c|c|} + \hline \diaghead{Шарыящик}{Шары}{Ящик} & I(возврат) & II(возврат) & I(без возврата) & II(без возврата) \\ + \hline&&&&\\[-10pt] + КК & \(\dfrac{4}{9}\) & \(\dfrac{101^2}{201^2}\) & \(\dfrac{1}{3}\) & \(\dfrac{101 \cdot 100}{201 \cdot 200}\) \\[10pt] + \hline&&&&\\[-10pt] + КЧ/ЧК & \(\dfrac{2}{9}\) & \(\dfrac{101 \cdot 100}{201^2}\) & \(\dfrac{1}{3}\) & \(\dfrac{101 \cdot 100}{201 \cdot 200}\) \\[10pt] + \hline&&&&\\[-10pt] + ЧЧ & \(\dfrac{1}{9}\) & \(\dfrac{100^2}{201^2}\) & \(0\) & \(\dfrac{100 \cdot 99}{201 \cdot 200}\) \\[10pt] + \hline + \end{tabular} + \end{center} + + Теперь можно составить таблицу вероятностей того, какой ящик выбран, в зависимости от того, какой набор был вытащен: + + \begin{center} + \begin{tabular}{|c|c|c|c|c|} + \hline \diaghead{Шарыящик}{Шары}{Ящик} & I(возврат) & II(возврат) & I(без возврата) & II(без возврата) \\ + \hline&&&&\\[-10pt] + КК & \(\dfrac{17956}{28157} \approx 0.638\) & \(\dfrac{10201}{28157}\approx 0.362\) & \(\dfrac{13400}{23500} \approx 0.57\) & \(\dfrac{10100}{23500} \approx 0.43\) \\[10pt] + \hline&&&&\\[-10pt] + КЧ/ЧК & \(\dfrac{8978}{19078} \approx 0.471\) & \(\dfrac{10100}{19078} \approx 0.529\) & \(\dfrac{13400}{23500} \approx 0.57\) & \(\dfrac{10100}{23500} \approx 0.43\) \\[10pt] + \hline&&&&\\[-10pt] + ЧЧ & \(\dfrac{4489}{14489} \approx 0.31\) & \(\dfrac{10000}{14489} \approx 0.69\) & \(0\) & \(1\) \\[10pt] + \hline + \end{tabular} + \end{center} + + Допустим, что на первом вытаскивании нам попался красный шар. Что выгоднее: оставить его или же вернуть назад? Если мы оставим шар, то максимальный шанс выигрыша равен \(0.57\). Если же мы вернём его назад, то минимальный шанс выигрыша будет равен \(0.638\). Тогда выгоднее вернуть красный шар. Если же мы вынимаем чёрный, то его лучше оставить. При этом указывать на первый ящик стоит только тогда, когда выпало два красных шара или чёрный, а затем красный. +\end{proof} + +\begin{problem} + Случайные величины \(\{\xi_n\}_{n = 1}^{\infty}\) независимы в совокупности и принимают значения \(3\) и \(-2\) с вероятностью \(p\) и \(1 - p\) соответственно. Обозначим \(S_n = \xi_1 + \dots + \xi_n\). Найдите условную вероятность + \[\Pr{S_n = x \given S_k = y, S_m = z}\text{ при } m < n < k, x, y, z \in \Z.\] +\end{problem} +\begin{proof} + По определению условной вероятности + \[\Pr{S_n = x \given S_k = y, S_m = z} = \frac{\Pr{S_k = y, S_n = x, S_m = z}}{\Pr{S_k = y, S_m = z}}.\] + + Преобразуем числитель и знаменатель: + \[\begin{aligned} + \Pr{S_k = y, S_n = x, S_m = z} &= \Pr(\underbrace{S_k - S_n = y - x, S_n - S_m = x - z, S_m = z}_{\text{независимы}}) \\ &= \Pr{S_k - S_n = y - x}\Pr{S_n - S_m = x - z}\Pr{S_m = z}, \\ + \Pr{S_k = y, S_m = z} &= \Pr{S_k - S_m = y - z}\Pr{S_m = z}. + \end{aligned}\] + + Отсюда получаем, что + \[\Pr{S_n = x \given S_k = y, S_m = z} = \frac{\Pr{S_k - S_n = y - x}\Pr{S_n - S_m = x - z}}{\Pr{S_k - S_m = y - z}}.\] + + Осталось посчитать какую-либо из вероятностей. Остальные считаются абсолютно аналогично. Допустим, посчитаем \(\Pr{S_k - S_n = y - x}\). Для этого необходимо, чтобы в сумме было \(l\) случайных величин, равных \(3\), и \(k - n - l\) случайных величин, равных \(-2\). Тогда + \[y - x = 3l - 2n + 2k + 2l \implies l = \frac{y - x + 2n - 2k}{5}\] + + Отсюда получаем необходимые условия на то, что данная вероятность не равна 0: \(y - x + 2n - 2k\) должно быть больше 0 и делиться на 5. Тогда + \[\Pr{S_k - S_n = y - x} = \binom{k - n}{l}p^{l}(1 - p)^{k - n - l}.\] + + Посчитав две остальных вероятности и сократив, мы получим ответ. Что самое интересное, он не зависит от \(p\). +\end{proof} + +\begin{problem} + Каждую целочисленную точку числовой оси независимо от других назвоём белой с вероятностью \(p\) или чёрной с вероятностью \(1 - p\). Пусть \(S\)~--- множество всех таких целочисленных точек \(x\), что расстояние от \(x\) до ближайшей черной точки (включая \(x\), если \(x\)~--- чёрная точка) не меньше расстояния от \(x\) до начала координат. Найдите математическое ожидание и дисперсию числа элементов в \(S\). +\end{problem} +\begin{proof} + Введём событие \(A_i = \{i \in S\}\). Тогда легко понять, что + \[\Pr{A_i} = \begin{cases} + 1& i = 0, \\ + p^{2|i| - 1}& i \neq 0. + \end{cases}\] + + Отсюда получаем, что + + \[\E{S} = 2\sum_{i = 1}^{\infty} p^{2i - 1} + 1 = \frac{2p}{1 - p^2} + 1.\] + + Теперь посчитаем дисперсию. Выразим её через сумму ковариаций: + \[\D{S} = \sum_{i, j \in \Z} \cov(I_{A_i}, I_{A_j}) = \sum_{i \in \Z} \cov(I_{A_i}, I_{A_i}) + 2\sum_{\substack{i, j \in \Z \\ i > j}} \cov(I_{A_i}, I_{A_j}).\] + + Так как \(\cov(I_{A_i}, I_{A_j}) = \Pr{A_i \cap A_j} - \Pr{A_i}\Pr{A_j}\) и \(\cov(I_{A_i}, I_{A_j}) = 0\) при \(ij \leq 0\), то дисперсию можно записать в виде + \[\D{S} = 2\sum_{i = 1}^{\infty}\left(p^{2i - 1} - p^{4i - 2}\right) + 1 + 2\sum_{i = 1}^{\infty}\sum_{j = i + 1}^{\infty}\left(p^{2j - 1} - p^{2(i + j) - 2}\right).\qedhere\] +\end{proof} + +Теперь вернёмся к традиции разбирать домашнее задание на семинаре. + +\begin{problem} + Задача без условия на ЛЛЛ +\end{problem} +\begin{proof} + содержимое... +\end{proof} + +\begin{problem} + Что-то там про депутатов +\end{problem} +\begin{proof} + содержимое... +\end{proof} + +Теперь обсудим задачи на тему общего понятия вероятности события. + +\begin{problem} + Палочку разламывают в двух произвольных местах. Найдите вероятность того, что из полученных кусков можно сложить треугольник. +\end{problem} +\begin{proof}[Решение] + Без ограничения общности положим длину палочки, равную 1. + + Пусть палочку разломали в точках \(x\) и \(y\), \(x < y\). При каких условиях на \(x\) и \(y\) можно сложить треугольник? Очевидно, если для всех трёх сторон выполнено неравенство треугольника: длина стороны не превосходит суммы длин двух других сторон. Так как стороны равны \(x\), \(y - x\) и \(1 - y\), то + \[\begin{cases} + x < y - x + 1 - y \\ + y - x < x + 1 - y \\ + 1 - y < x + y - x + \end{cases} + \implies + \begin{cases} + x < \frac{1}{2} \\ + y < \frac{1}{2} + x \\ + y > \frac{1}{2} + \end{cases} + \] + Изобразим решение этих неравенств и все возможные значения \(x\) и \(y\) (подходящие значения \((x, y)\) выделены серым): + \begin{center} + \begin{tikzpicture} + \fill [pattern = north west lines] (0, 0) -- (2, 0) -- (2, 2) -- (0, 2) -- cycle; + \fill [gray] (1, 1) -- (1, 2) -- (0, 1) -- cycle; + \fill [gray] (1, 1) -- (1, 0) -- (2, 1) -- cycle; + \draw [thick, ->] (0, -0.5) -- (0, 2.5) node [anchor = east] {\(y\)}; + \draw [thick, ->] (-0.5, 0) -- (2.5, 0) node [anchor = north] {\(x\)}; + \draw (0, 0) node [anchor = north east] {\(0\)}; + \draw (0, 2) node [anchor = east] {\(1\)}; + \draw (2, 0) node [anchor = north] {\(1\)}; + \draw (0, 0) -- (2, 0) -- (2, 2) -- (0, 2) -- cycle; + \draw (1, 1) -- (1, 0) -- (2, 1) -- cycle; + \draw (1, 1) -- (1, 2) -- (0, 1) -- cycle; + \end{tikzpicture} + \end{center} + + Отсюда получаем, что вероятность этого события равна \(\frac{1}{4}\). +\end{proof} + +Немного усложним задачу. +\begin{problem} + Пусть палочку длины 1 ломают следующим образом: сначала её ломают в произвольном месте, затем более длинный кусок ломают в произвольном месте. Найдите вероятность того, что из полученных кусков можно сложить треугольник. +\end{problem} +\begin{proof}[Решение] + На первый взгляд может показаться, что эта задача ничем не отличается от предыдущей. Но нет. В данной задаче отличается множество допустимых пар \((x, y)\). Изобразим это графически, заштриховав допустимые значения: + \begin{center} + \begin{tikzpicture} + \fill [pattern = north west lines] (0, 0) -- (2, 0) -- (2, 2) -- (0, 2) -- cycle; + \fill [white] (1, 1) -- (1, 2) -- (2, 2) -- cycle; + \fill [white] (1, 1) -- (1, 0) -- (0, 0) -- cycle; + \draw [thick, ->] (0, -0.5) -- (0, 2.5) node [anchor = east] {\(y\)}; + \draw [thick, ->] (-0.5, 0) -- (2.5, 0) node [anchor = north] {\(x\)}; + \draw (0, 0) node [anchor = north east] {\(0\)}; + \draw (0, 2) node [anchor = east] {\(1\)}; + \draw (2, 0) node [anchor = north] {\(1\)}; + \draw (0, 0) -- (2, 0) -- (2, 2) -- (0, 2) -- cycle; + \draw (1, 1) -- (1, 2) -- (2, 2) -- cycle; + \draw (1, 1) -- (1, 0) -- (0, 0) -- cycle; + \end{tikzpicture} + \end{center} + + При этом подходящие пары \((x, y)\) те же, что и раньше. Отсюда получаем, что вероятность этого события равна \(\frac{1}{3}\). +\end{proof} \ No newline at end of file