first commit
All checks were successful
build pdf / build (push) Successful in 9s

This commit is contained in:
2025-07-29 00:57:36 +08:00
commit e3a09664bc
8 changed files with 1068 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
name: build pdf
on: [push,watch]
jobs:
build:
runs-on: macos # use label
steps:
- name: Check out the repository
uses: actions/checkout@v4
- name: Compile LaTeX using local TeX Live
# These commands run directly in your machine's shell
run: |
echo "Compiling document..."
latexmk -pdf main.tex
- name: List files in the workspace
run: ls -l
- uses: akkuman/gitea-release-action@v1
with:
body: ''
prerelease: true
name: PDF
token: ${{ secrets.RELEASE_TOKEN }}
tag_name: latest
files: |-
./*.pdf

312
.gitignore vendored Normal file
View File

@@ -0,0 +1,312 @@
.vscode/
*.sage.py
/*.pdf
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bbl-SAVE-ERROR
*.bcf
*.bcf-SAVE-ERROR
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
*.rubbercache
rubber.cache
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
*.lzo
*.lzs
*.slg
*.slo
*.sls
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist
# gnuplot
*.gnuplot
*.table
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.glog
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hypdoc
*.hd
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files
# *.tikz
*-tikzDictionary
# listings
*.lol
# luatexja-ruby
*.ltjruby
# makeidx
*.idx
*.ilg
*.ind
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# newpax
*.newpax
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# svg
svg-inkscape/
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# titletoc
*.ptc
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices and outlines
*.xyc
*.xyd
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# gummi
.*.swp
# KBibTeX
*~[0-9]*
# TeXnicCenter
*.tps
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
# Makeindex log files
*.lpz
# xwatermark package
*.xwm
# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib
# option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored.
#*Notes.bib

12
algo.sty Normal file
View File

@@ -0,0 +1,12 @@
% copied from one of UIUC courses by Chandra Chekuri. I can't find the exact link now...https://courses.grainger.illinois.edu/cs598cci/sp2020/
\def\begin@lg{\begin{minipage}{1in}\begin{tabbing}
\quad\=\qquad\=\qquad\=\qquad\=\qquad\=\qquad\=\qquad\=\kill}
\def\end@lg{\end{tabbing}\end{minipage}}
\newenvironment{algorithm}
{\begin{tabular}{|l|}\hline\begin@lg}
{\end@lg\\\hline\end{tabular}}
\newenvironment{algo}
{\begin{center}\begin{algorithm}}
{\end{algorithm}\end{center}}

532
chao.sty Normal file
View File

@@ -0,0 +1,532 @@
% ========================-*- LaTeX -*-=========================
%
% chao.sty -- modified from jeffe.sty
% jeffe.sty can be found at http://web.engr.illinois.edu/~jeffe/pubs/latex.html
%
% ==========================================================
\ProvidesPackage{chao}
% remarkable size
\newif\ifchao@remarkable
\DeclareOption{remarkable}{\chao@remarkabletrue}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{naturalnames}{hyperref}
\ProcessOptions
\RequirePackage{latexsym,amsmath}
\RequirePackage[dvipsnames]{xcolor}
\RequirePackage[colorlinks=true,urlcolor=Blue,citecolor=Green,linkcolor=BrickRed,unicode]{hyperref}
\RequirePackage[hyperref]{ntheorem} % theorem numbering
\RequirePackage{aliascnt}
\RequirePackage{xspace}
% st mary fonts
\RequirePackage{stmaryrd} % comment out if unavailable
\SetSymbolFont{stmry}{bold}{U}{stmry}{m}{n}
\RequirePackage{wasysym}
% nagging
\RequirePackage[l2tabu, orthodox]{nag}
\RequirePackage[all,warning]{onlyamsmath}
\RequirePackage{graphicx} % essentials
\RequirePackage{microtype}
\RequirePackage[mathletters]{ucs} % allow Unicode in .tex file
\RequirePackage[utf8]{inputenc}
\RequirePackage[charter]{mathdesign} % change fonts
\RequirePackage{berasans, beramono}
\RequirePackage{eucal}
\RequirePackage[nocompress]{cite} % other convenient stuff
\RequirePackage{enumerate}
%\usepackage{pgf,tikz}
\RequirePackage{wrapfig}
\RequirePackage[medium,compact]{titlesec}
\RequirePackage{verbatim}
\usepackage{CJKutf8}
\newtheorem{theorem}{Theorem}[section]
\newaliascnt{lemma}{theorem}
\newaliascnt{corollary}{theorem}
\newaliascnt{conjecture}{theorem}
\newaliascnt{proposition}{theorem}
\newtheorem{lemma}{Lemma}[section]
\newtheorem{corollary}{Corollary}[section]
\newtheorem{conjecture}{Conjecture}[section]
\newtheorem{proposition}{Proposition}[section]
\newtheorem{problem}{Problem}
\newcommand{\lemmaautorefname}{Lemma}
\newcommand{\corollaryautorefname}{Corollary}
\newcommand{\conjectureautorefname}{Conjecture}
\newcommand{\propositionautorefname}{Proposition}
\newcommand{\problemautorefname}{Problem}
\newenvironment{definition}[1][Definition]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}}
\newenvironment{example}[1][Example]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}]}{\end{trivliST}}
\newenvironment{remark}[1][Remark]{\begin{trivlist}
\item[\hskip \labelsep {\bfseries #1}]}{\end{trivlist}}
\widowpenalty 5000
\clubpenalty 5000
% line numbers (be nice to the referee)
\RequirePackage[mathlines, pagewise]{lineno}
%\linenumbers
\nolinenumbers
\renewcommand\linenumberfont{\normalfont\tiny\sffamily\color{gray}}
\setlength\linenumbersep{2em}
\numberwithin{figure}{section}
\ifchao@remarkable
\RequirePackage[paperheight=209.6mm, paperwidth=157.2mm, top=0.2in,bottom=0.2in,right=0.2in,left=0.2in]{geometry}
\tolerance=10000
\else
\RequirePackage[margin=1in]{geometry}
\fi
%\setlength{\topmargin}{-0.5in} \setlength{\textwidth}{6.5in}
%\setlength{\oddsidemargin}{0.0in} \setlength{\textheight}{9.1in}
%\pagestyle{empty}
%\newlength{\pagewidth}
%\setlength{\pagewidth}{6.5in} %\pagestyle{empty}
\pagenumbering{arabic}
\urlstyle{same} % dammit
\hyphenation{co-or-din-ate co-or-din-ates half-plane half-space stereo-iso-mers stereo-iso-mer Round-table homol-ogous homol-ogy poly-hedron poly-hedra homeo-morphic homeo-morph-ism}
\pdfstringdefDisableCommands{\let\boldmath\relax} % allow \boldmath in section titles
\let\subsectionautorefname\sectionautorefname
\let\subsubsectionautorefname\sectionautorefname
% Chao addition
\def\email#1{\href{mailto:#1}{#1}}
% chinese
\def\zh#1{\begin{CJK}{UTF8}{gbsn}#1\end{CJK}}
% ----------------------------------------------------------------------
% Common Latin abbreviations, only one of which is actually kosher
% ----------------------------------------------------------------------
\def\etal{\emph{et~al.}} % and others
%\def\ie{\emph{i.e.}} % that is
\def\ie{\textcolor{red}{that is}}
%\def\eg{\emph{e.g.}} % for example
\def\eg{\textcolor{red}{for example}}
% -----------------------
% Common Names
% -----------------------
\def\Mobius{M\"obius\xspace}
% -----------------------
% useful shortcuts
% -----------------------
\def\cost{\cent}
% ----------------------------------------------------------------------
% Simple math stuff
% ----------------------------------------------------------------------
\renewcommand{\subset}{\subseteq}
% ---- SYMBOLS ----
\let\e\varepsilon % a ``real'' epsilon — better yet, just use Unicode ε.
%
% I give up. These are in the wrong font, but my kludged versions
% LOOK like kludges, especially \Z, \Q, and \C.
%
\def\Real{\mathbb{R}}
\def\Proj{\mathbb{P}}
\def\Hyper{\mathbb{H}}
\def\Integer{\mathbb{Z}}
\def\Natural{\mathbb{N}}
\def\Complex{\mathbb{C}}
\def\Rational{\mathbb{Q}}
\let\N\Natural
\let\Q\Rational
\let\R\Real
\let\Z\Integer
\def\Rd{\Real^d}
\def\RP{\Real\Proj}
\def\CP{\Complex\Proj}
% ---- OPERATORS (requires amsmath) ----
\def\aff{\operatorname{aff}}
\def\area{\operatorname{area}}
\def\argmax{\operatornamewithlimits{arg\,max}}
\def\argmin{\operatornamewithlimits{arg\,min}}
\def\Aut{\operatorname{Aut}} % Automorphism group
\def\card{\operatorname{card}} % cardinality, deprecated for \abs
\def\conv{\operatorname{conv}}
\def\E{\operatorname{E}} % Expectation: $\E[X]$ (like \Pr)
\def\EE{\operatornamewithlimits{E}}
\def\Hom{\operatorname{Hom}} % Homomorphism group
\def\id{\operatorname{id}} % identity
\def\im{\operatorname{im}} % image
\def\lcm{\operatorname{lcm}}
\def\lfs{\operatorname{lfs}} % local feature size
\def\poly{\operatorname{poly}}
\def\polylog{\operatorname{polylog}}
\def\rank{\operatorname{rank}}
\def\rel{\operatorname{rel\,}} % relative (interior, boundary, etc.)
\def\sgn{\operatorname{sgn}}
\def\vol{\operatorname{vol}} % volume
\def\fp#1{^{\underline{#1}}} % falling powers: $n\fp{d}$
\def\rp#1{^{\overline{#1}}} % rising powers: $n\rp{d}$
\def\setsymdiff{\operatorname{\triangle}}
% --- Darts and fences ---
% less nice replacements for stmaryrd characters
\@ifundefined{shortrightarrow}{\let\shortrightarrow\rightarrow}{}
\@ifundefined{shortleftarrow}{\let\shortleftarrow\leftarrow}{}
\@ifundefined{shortuparrow}{\let\shortuparrow\uparrow}{}
\@ifundefined{shortdownarrow}{\let\shortdownarrow\downarrow}{}
\def\arcto{\mathord\shortrightarrow}
\def\arcfrom{\mathord\shortleftarrow}
\def\arc#1#2{#1\arcto#2}
\def\cra#1#2{#1\mathord\shortleftarrow#2}
\def\fence#1#2{#1\mathord\shortuparrow#2}
\def\ecnef#1#2{#1\mathord\shortdownarrow#2}
% --- Cheap displaystyle operators ---
\def\Frac#1#2{{\displaystyle\frac{#1}{#2}}}
\def\Sum{\sum\limits}
\def\Prod{\prod\limits}
\def\Union{\bigcup\limits}
\def\Inter{\bigcap\limits}
\def\Lor{\bigvee\limits}
\def\Land{\bigwedge\limits}
\def\Lim{\lim\limits}
\def\Max{\max\limits}
\def\Min{\min\limits}
% ---- RELATORS ----
\def\deq{\stackrel{\scriptscriptstyle\triangle}{=}} % Use := instead.
\def\into{\DOTSB\hookrightarrow} % = one-to-one
\def\onto{\DOTSB\twoheadrightarrow}
\def\inonto{\DOTSB\lhook\joinrel\twoheadrightarrow}
\def\from{\leftarrow}
\def\tofrom{\leftrightarrow}
\def\mapsfrom{\mathrel{\reflectbox{$\mapsto$}}}
\def\longmapsfrom{\mathrel{\reflectbox{$\longmapsto$}}}
% ---- DELIMITER PAIRS ----
% --- always self-scaling delmiter pairs ---
\def\set#1{\left\{ #1 \right\}}
\def\floor#1{\left\lfloor #1 \right\rfloor}
\def\ceil#1{\left\lceil #1 \right\rceil}
\def\seq#1{\left\langle #1 \right\rangle}
\def\abs#1{\left| #1 \right|}
\def\norm#1{\left\| #1 \right\|}
\def\paren#1{\left( #1 \right)} % need better macro name!
\def\brack#1{\left[ #1 \right]} % need better macro name!
\def\indic#1{\left[ #1 \right]} % indicator variable; Iverson notation
%
% Macros to typeset sets like {foo|bar} with all three delimiters
% correctly scaled to fit. What I *really* want is a \middle macro
% that acts just like \left and \right. Grumble.
%
% Set version is handled by package braket.
\def\Bigbar#1{\mathrel{\left|\vphantom{#1}\right.\n@space}}
\def\Seqbar#1#2{\Seq{#1 \Bigbar{#1 #2} #2}}
\def\Brackbar#1#2{\Brack{#1 \Bigbar{#1 #2} #2}}
% Math mode fbox
\def\mfbox#1{\mathchoice{{\fbox{\ensuremath{\displaystyle #1}}}}
{{\fbox{\ensuremath{\textstyle #1}}}}
{{\fbox{\ensuremath{\scriptstyle #1}}}}
{{\fbox{\ensuremath{\scriptscriptstyle #1}}}}}
% ---- ``ACCENTS'' ----
% NB: Commands equivalent to \lrarrowfill and \overlrarrow are
% already defined in amstex!
\def\lrarrowfill{$\m@th\mathord\leftarrow\mkern-6mu%
\cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
\mkern-6mu\mathord\rightarrow$}
\def\overlrarrow#1{\vbox{\ialign{##\crcr
\lrarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
$\hfil\displaystyle{#1}\hfil$\crcr}}}
\def\Line#1{\!\overlrarrow{\vphantom{t}\smash{\,#1\,}}\!}
\def\Ray#1{\overrightarrow{\vphantom{t}#1\,}\!}
\def\Seg#1{\overline{\vphantom{t}#1}}
% ---- TEXT STYLES ----
\def\mathsc#1{\text{\textsc{#1}}}
\def\mathbs#1{\text{\boldmath\ensuremath{#1}}}
\def\EMPH#1{\textbf{\emph{\boldmath #1}}}
% ----------------------------------------------------------------------
% \begin{bigabstract}...\end{bigabstract}
% For use in documents with title pages. Use normal-sized text in
% the abstract!
% ----------------------------------------------------------------------
\newenvironment{bigabstract}%
{\begin{center}\large\textbf{\abstractname}\end{center}\begin{quotation}}%
{\end{quotation}}
% ----------------------------------------------------------------------
% Make captions smaller than the text, make their titles bold.
% Arguments: #1 == figure name: "Figure 5"
% #2 == caption: "Papers by \Erdos, 1900--2000 (projected)"
% Less space after floats and before caption, since captions are smaller
% ----------------------------------------------------------------------
\@ifundefined{abovecaptionskip}{\newlength\abovecaptionskip}
\long\def\@makecaption#1#2{
\vskip \abovecaptionskip
\setbox\@tempboxa\hbox{{\sffamily\footnotesize \textbf{#1.} #2}}
\ifdim \wd\@tempboxa >\hsize % if more than one line,
{\sffamily\footnotesize \textbf{#1.} #2\par} % typeset normally
\else % else
\hbox to\hsize{\hfil\box\@tempboxa\hfil} % center
\fi}
\dbltextfloatsep 18pt plus 2pt minus 4pt % was 20pt plus 2pt minus 4pt
\textfloatsep 18pt plus 2pt minus 4pt % was 20pt plus 2pt minus 4pt
\abovecaptionskip 6pt % was 10pt
% ----------------------------------------------------------------------
% Revised theorem environment:
% Add a period after the theorem number, and make theorems slanted
% instead of italic to help distinguish text from math. Use
% \boldmath in theorem label in case it includes math.
% ----------------------------------------------------------------------
\def\@opargbegintheorem#1#2#3{\trivlist
\item[\hskip\labelsep{\bfseries\boldmath #1\ #2\ (#3).}]\slshape}
\def\@begintheorem#1#2{\trivlist
\item[\hskip\labelsep{\bfseries\boldmath #1\ #2.}]\slshape}
% ----------------------------------------------------------------------
% \newproof{type}{text}(style)[post]:
% Define a new type of unnumbered ``theorem'' environment. The last
% two arguments are optional; most environments will not use them.
%
% To change label style, put new style command in label:
% \newproof{comment}{\textsf{Comment}}
% ----------------------------------------------------------------------
\def\newproof#1#2{\@ifnextchar({\@snproof{#1}{#2}}{\@snproof{#1}{#2}()}}
\def\@snproof#1#2(#3){\@ifnextchar[{\@xnproof{#1}{#2}{#3}}
{\@xnproof{#1}{#2}{#3}[]}}
\def\@xnproof#1#2#3[#4]{%\expandafter\@ifdefinable\csname #1\endcsname
{\global\@namedef{#1}{\@prf{#2}{#3}}\global\@namedef{end#1}{\@endprf{#4}}}}
\def\@prf#1#2{\@ifnextchar[{\@xprf{#1}{#2}}{\@yprf{#1}{#2}}}
\def\@xprf#1#2[#3]{\@yprf{#1\ (#3)}{#2}}
\def\@yprf#1#2{\begin{trivlist}\item[\hskip\labelsep{\bfseries\boldmath #1:}]#2}
\def\@endprf#1{#1\end{trivlist}}
%
% Standard proof envrionment: last line has a halmos at the right margin.
% Insert \qed to override default halmos placement.
% Incompatible with amsprf package!
%
\newif\ifneedqed
\global\needqedfalse
\@ifundefined{square}{\let\square\Box}{} % grumble latex2e
\def\QED{\ensuremath{{\square}}}
\def\markatright#1{\leavevmode\unskip\nobreak\quad\hspace*{\fill}{#1}}
\def\qed{\ifneedqed\markatright{\QED}\global\needqedfalse\else\null\fi}
\newproof{proof}{Proof\global\needqedtrue}[\qed]
\newproof{sketch}{Proof Sketch\global\needqedtrue}[\qed]
%
% 'Fake' proof environment, for use with wrapfig and similar packages
%
\newenvironment{rawproof}%
{\begin{trivlist}\item[\hskip\labelsep\textbf{Proof:}\global\needqedtrue]}%
{\qed\end{trivlist}}
%
% If the proof ends with a displayed equation, use \aftermath just
% before \end{proof} to put the halmos in the ``right'' place.
% Doesn't work worth a damn.
%
\def\aftermath{\par\vspace{-\belowdisplayskip}\vspace{-\parskip}\vspace{-\baselineskip}}
% ----------------------------------------------------------------------
% One-shot theoremish environment. For named things like ``Zorn's
% Lemma'' or ``The Death Leap Principle'' or ``The Zone Theorem''.
% To get one-shot proofish environment, put \normalfont inside.
% New improved version stolen from Erik Demaine.
% ----------------------------------------------------------------------
\newenvironment{oneshot}[1]{\@begintheorem{#1}{\unskip}}{\@endtheorem}
% Meh.
\def\Comment#1{\textsf{\textsl{$\langle\!\langle$#1\/$\rangle\!\rangle$}}}
\def\beginc@de{\noindent\begin{center}\begin{minipage}{1in}\tt
\begin{tabbing}~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=~~~~\=\kill}
\def\endc@de{\end{tabbing}\end{minipage}\end{center}}
\newenvironment{code}{\beginc@de}{\endc@de}
%
% These only work with <1 line of text. Use sparingly!!
%
\def\textul#1{\underline{\smash{#1}\vphantom{.}}}
\def\strike#1{\ensuremath{\overline{\text{\smash{#1}\vphantom{.}}}}}
% ----------------------------------------------------------------------
% Include a file verbatim. Searches the TEXINPUTS path for the file,
% even though that's probably not what you really want. Stolen from
% ``verbatimfiles.sty'' by Chris Rowley and others. [Don't use their
% \vertbatimlisting macro; it has some bizarre side-effects!]
% ----------------------------------------------------------------------
\def\verbinput#1{
\begingroup\@verbatim\frenchspacing\@vobeyspaces\input#1\endgroup
}
% ----------------------------------------------------------------------
% \now -- Current time in h:mm AM/PM format
% \mdyy -- Today's date in m/d/yy format. Forget Y2K; this is for humans!
% ----------------------------------------------------------------------
\newcount\timehh\timehh=\time
\divide\timehh by 60
\newcount\timemm\timemm=\time
\count255=\timehh
\multiply\count255 by -60
\advance\timemm by \count255
\newif\iftimePM
\ifnum\timehh>11 \timePMtrue\else\timePMfalse\fi
\ifnum\timehh<1 \advance\timehh by 12\fi
\ifnum\timehh>12 \advance\timehh by -12\fi
\def\now{\number\timehh:\ifnum\timemm<10 0\fi\number\timemm
\iftimePM pm\else am\fi}
\newcount\mdYY\mdYY=\year
\count255=\year
\divide\count255 by 100
\multiply\count255 by 100
\advance\mdYY by -\count255
\def\mdyy{\number\month/\number\day/\ifnum\mdYY<10 0\fi\number\mdYY}
% ----------------------------------------------------------------------
% Notes to myself. The margin flags are broken, thanks to an
% incompatibility with the geometry package.
% ----------------------------------------------------------------------
\def\n@te#1{\textsf{\boldmath \textbf{$\langle\!\langle$#1$\rangle\!\rangle$}}\leavevmode}
\def\n@tew@rn{\GenericWarning{}{AUTHOR WARNING: Unresolved \protect\note}}
\def\n@ten@te#1{\marginpar
[\hfill\llap{\textcolor{red}{{#1}$\!\Longrightarrow$}}]
{\rlap{\textcolor{red}{$\Longleftarrow\!${#1}}}}}
% Warning: The textcomp and mathdesign packages are incompatible!
%\def\n@tedingb@t{\@ifundefined{textmusicalnote}
% {$\maltese$} % if you don't have textcomp
% {\textmusicalnote}} % if you do have textcomp
\def\n@tedingb@t{\textcircled{$\maltese$}}
\def\note#1{\textcolor{red}{\n@tew@rn\n@te{\n@ten@te{\n@tedingb@t}#1}}}
\def\sidenote#1{\marginpar{\tiny\textsf{#1}}}
\setlength{\marginparsep}{0.1in}
\setlength{\marginparwidth}{\paperwidth}
\addtolength{\marginparwidth}{-\oddsidemargin}
\addtolength{\marginparwidth}{-\textwidth}
\addtolength{\marginparwidth}{-1.0\marginparsep}
\addtolength{\marginparwidth}{-1.0in}
%----------------------------------------------------------------------
% TODO sets enclosed text in a gray rectangle with a red border
% with small sans-serif text.
%----------------------------------------------------------------------
\definecolor{TODOcolor}{cmyk}{0.05,0,0,0}
\definecolor{TODOtxtcolor}{cmyk}{0,1,1,0}
\newenvironment{TODO}
{\fboxrule1.5pt\begin{lrbox}{\@tempboxa}
\begin{minipage}{0.9\columnwidth}\small\sffamily\color{TODOtxtcolor}}
{\end{minipage}
\end{lrbox}
\medskip\centerline{\fcolorbox{TODOtxtcolor}{TODOcolor}{\usebox{\@tempboxa}}}
\sidenote{\LARGE\color{Red}$\bigstar\bigstar\bigstar$}\medskip}
%----------------------------------------------------------------------
% Bibliography aliases, so I can use mnemonic citation keys and
% geom.bib at the same time. \bibalias{foo}{bar} makes \cite{foo}
% act (almost) exactly like \cite{bar}. I dont actually use this.
%----------------------------------------------------------------------
\def\bibalias#1#2{%
\global\@namedef{b@#1}{%
{\@ifundefined{b@#2}{\textsf{?}}{}\csname b@#2\endcsname}}}
% ----------------------------------------------------------------------
% Draft notice. Put \DRAFT on the title page, in place of \date.
% ----------------------------------------------------------------------
\def\draftnotice{Preliminary draft --- \mdyy\ --- Not for distribution}
\def\DRAFT{
\date{\fbox{\textsf{\textbf{\draftnotice}}}}
\def\@oddfoot{\footnotesize\hss\fbox{\textbf{\textsf{\draftnotice}}}\hss}
\let\@evenfoot\@oddfoot
}
%----------------------------------------------------------------------
% 'cramped' list style, stolen from Jeff Vitter. Doesn't always work.
%----------------------------------------------------------------------
\def\cramped
{\parskip\@outerparskip\@topsep\parskip\@topsepadd2pt\itemsep0pt
}
%----------------------------------------------------------------------
% More footnote symbols, please.
%----------------------------------------------------------------------
\def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
\mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger
\or \ddagger\ddagger \or \mathsection\mathsection \or
\mathparagraph\mathparagraph \else\@ctrerr\fi}}
%----------------------------------------------------------------------
% TeXbook style quotations -- I should really use the right font, tho.
%----------------------------------------------------------------------
\newenvironment{rightquote}[1]
{\flushright\begin{minipage}{#1\textwidth}
\parskip0pt\footnotesize\sffamily\slshape}
{\end{minipage}\par\bigskip}
\def\quotee#1{\par\vspace{0.5ex}\begin{flushright}\unskip\textup{--- #1}\end{flushright}\unskip}
%----------------------------------------------------------------------
% Creative Commons license
%----------------------------------------------------------------------
\def\CCLicense#1{\vfill\vbox to 0pt{\centering\tiny\sffamily \textcopyright\ Copyright \number\year\ Chao Xu.\\ This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (\url{http://creativecommons.org/licenses/by-nc-sa/4.0/}).\\ Free distribution is strongly encouraged; commercial distribution is expressly forbidden.\quad See {#1} for the most recent revision.\vss}}

BIN
image/grid.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
image/mail.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

130
main.tex Normal file
View File

@@ -0,0 +1,130 @@
\documentclass[12pt,a4paper]{article}
\usepackage{chao}
\usepackage{algo}
\title{Zarankiewicz problem / Finding colored $K_{2,\ell}$}
\author{congyu}
\date{\today}
\begin{document}
\maketitle
\begin{problem}[Zarankiewicz problem, algorithmic version...]\label{prob1}
Given a groundset $U$ and a collection $\mathcal S=\{S_1,\dots,S_n\}$ of $n$ subsets of $U$. Let $m=\sum_{i\in [n]} |S_i|$. Check if there exist $k$ subsets which have exactly $\ell$ elements in common.
\end{problem}
$\alpha(G)$ is the arboricity of $G$. $\deg(v)$ is the degree of vertex $v$. $N=|U|$.
An equivalent formulation of \autoref{prob1} on graph is the following,
\begin{problem}[colored $K_{k,\ell}$]
Given a bipartite graph $G=(V_1\sqcup V_2,E)$ where $V_1,V_2$ and $E$ represent elements in $U$, sets in $\mathcal S$ and element membership respectively. Color vertices in $V_1$ red and vertices in $V_2$ blue. Check if there is an induced $K_{k,\ell}$ with $k$ blue vertices and $\ell$ red vertices.
\end{problem}
\section{Existing algorithms}
\subsection{subcubic combinatorial alg for detecting induced $C_4$}
A recent paper \url{https://arxiv.org/pdf/2507.18845v1}.
\section{Finding $K_{2,\ell}$}
This has already been described in \url{https://chaoxu.prof/posts/2019-01-21-high-degree-low-degree-technique.html}.
\begin{theorem}[\cite{chiba_arboricity_1985} section 4]\label{alg:malpha}
There exists an algorithm which finds all $K_{2,\ell}$ in $G$ with time complexity $O(m\alpha(G))$.
\end{theorem}
\begin{proof}
The algorithm is described in \autoref{figalg:malpha},
\begin{figure}[!ht]
\begin{algo}
sort vertices in $G$ in such that $\deg(v_1)\geq \dots \geq \deg(v_n)$\\
for $i\in[n]$:\\
\quad for each vertex $u\in N(v_i)$:\\
\quad \quad let $U[v]=\emptyset$ for all $v$.\\
\quad \quad for each vertex $w\in N(u)$ that is not $v_i$:\\
\quad \quad \quad add $u$ to $U[w]$.\\
\quad for all vertex $w\in V$ that is not $v_i$:\\
\quad \quad if $|U[w]|= \ell$:\\ \quad
\quad \quad {output} tuple $(v_i,w,U[w])$\\
\quad $G=G-v_i$
\end{algo}
\caption{An $O(m\alpha(G))$ algorithm for finding all colored $K_{2,\ell}$}
\label{figalg:malpha}
\end{figure}
This algorithm outputs all possible pairs $(v,w)$ such that $v$ and $w$ have exactly $\ell$ common neighbors. The total number of vertices this algorithm visits is $\sum_v [\deg(v)+\sum_{u\in N(v)} (\deg(u)-1)]=2\sum_{(u,v)\in E} \min\{\deg(u),\deg(v)\}\leq 4\alpha(G)m$. Thus this algorithm has running time $O(m\alpha(G))$.
\end{proof}
\begin{theorem}\label{alg:n2l}
There exists an algorithm which solves \autoref{prob1} and has complexity in $O(n^2\ell)$ when $k=2$.
\end{theorem}
\begin{proof}
There is an algorithm for finding axis-parallel rectangles in $O(m^{3/2})$ described in \cite{van_kreveld_finding_1990}. Now we show that this algorithm also finds colored $K_{2,\ell}$ in bipartite graphs and has complexity $O(m+n^2)$ with better analysis.
\begin{figure}[!ht]
\begin{algo}
for $i\in [n]$:\\
\quad for $S_k\in \mathcal S$:\\
\quad \quad $C[S_k]\gets 0$\\
\quad for $u\in S_i$:\\
\quad \quad for all $S_j$ s.t. $j<i$ and $u\in S_j$:\\
\quad \quad \quad $C[S_j]\gets C[S_j]+1$\\
\quad \quad \quad if $C[S_j]\geq \ell$:\\
\quad \quad \quad \quad {output} exist $K_{2,\ell}$\\
{output} no $K_{2,\ell}$
\end{algo}
\caption{An $O(n^2\ell)$ algorithm for checking existence of a $K_{2,\ell}$}
\label{figalg:n2l}
\end{figure}
We need to construct a data structure for the algorithm in \autoref{figalg:n2l}. We use a linked list to stored all elements in each $S_i$. This takes $O(M)$ times. For finding all $S_j$ such that $j<i$ and $u\in S_j$, we store a linked list starting from each $u$ and link $u$ with the element representing $u$ in $S_k$'s linked list, where $k$ is the largest value smaller than $i$ that $S_k$ contains $u$. These links can be built using bucket sort in $O(M)$ time.
For the complexity we notice that for each $S_i$ we visit at most $O(n\ell)$ times since each counter $C[S_i]$ is at most $\ell$. Thus the total running time is $O(M+n^2\ell)=O(n^2\ell)$.
\end{proof}
There is actually a much simpler algorithm for the more general problem...
\begin{theorem}\label{alg:nkl}
There exist an algorithm which solves \autoref{prob1} in $O(\ell n^k)$.
\end{theorem}
\begin{proof}
Create a array $A$ of length $\binom{n}{k}$, originally all zero. Note that the length of the array is $O(n^k)$. Each element in the array corresponds to a combination of $k$ sets out of $\mathcal S$. We iterate over all elements in $U$ and find for each element $e$ the set of positions in $A$ for which the corresponding set contains $e$. We add 1 to these positions. The process stops when there is some $A[i]\geq \ell$. We visit every position in $A$ at most $\ell$ times. Thus the running time is $O(\ell n^k)$.
\end{proof}
\begin{theorem}[\cite{furedi_new_1996}]
There exist a constant $c$ such that each $n$ vertex graph with more than $c\ell^{1/2}n^{3/2}$ must contain $K_{2,\ell}$.
\end{theorem}
Now we compose these algorithms to get a better running time for testing if a given bipartite graph contains a colored $K_{2,\ell}$.
\begin{lemma}\label{lem:densesubgraph}
If $\alpha(G)> t$, then there is a subgraph $H\subset G$ such that $\min\{\deg(v): v\in V(H)\}\geq t$.
\end{lemma}
\begin{proof}
$H$ can be found through repeatedly removing the vertex with minimum degree in $G$. Once the minimum degree is at least $t$, the subgraph induced by the remaining vertices has the minimum degree at least $t$. Now we need to show that $H$ is nonempty given that $\alpha(G)>t$. First observe that for any vertex $v\in G$ if $\alpha(G-v)>\deg_G(v)$, then $\alpha(G)=\alpha(G-v)$. Thus if $H$ is empty we would have $\alpha(G)\leq \min \deg(v)\leq t$, a contradiction.
\end{proof}
\begin{theorem}\label{thm:k2l}
There is an algorithm which finds $K_{2,\ell}$ in time $O(l^{1/3}m^{4/3})$.
\end{theorem}
\begin{proof}
We compose previous algorithm using low-degree high-degree technique.
% If $\alpha(G)\leq t$, use the $O(mt)$ algorithm \autoref{figalg:malpha}. If $\alpha(G)>t$, then by \autoref{lem:densesubgraph}, we can find a subgraph $H\subset G$ with minimum degree at least $t$.
\begin{figure}[h!]
\begin{algo}
\textsc{CheckExistance$K_{2,\ell}(G)$}\\
if $t\geq \alpha(G)$\\
\quad use Algorithm\ref{figalg:malpha}\\
else\\
\quad find a subgraph $H\subset G$ with min degree at least $t$\\
\quad if $c|V(H)|^{3/2}\leq |E[H]|$\\
\quad \quad there exists $K_{2,\ell}\in H$, return True\\
\quad else\\
\quad \quad run Algorithm\ref{alg:n2l} on $H$
\end{algo}
\caption{An $O(l^{1/3}m^{4/3})$ algorithm for checking existence of a $K_{2,\ell}$}
\label{figalg:k2lfinal}
\end{figure}
Note that while finding $H$ we repeatedly delete the vertex with min degree. Meanwhile we can check the existence of $K_{2,\ell}$ which is not contained in $H$.
\end{proof}
\bibliographystyle{plain}
\bibliography{ref}
\end{document}

53
ref.bib Normal file
View File

@@ -0,0 +1,53 @@
@article{chiba_arboricity_1985,
title = {Arboricity and {Subgraph} {Listing} {Algorithms}},
volume = {14},
issn = {0097-5397},
url = {https://epubs.siam.org/doi/10.1137/0214017},
doi = {10.1137/0214017},
abstract = {We show an algorithm that finds cliques of size (log n/log log n)2 whenever a graph has a clique of size at least n/(log n)b for an arbitrary constant b. This leads to an algorithm that approximates max clique within a factor of O(n(log log n)2/(log n)3), which matches the best approximation ratio known for the chromatic number. The previously best approximation ratio known for max clique was O(n/(log n)2).},
number = {1},
urldate = {2024-11-07},
journal = {SIAM Journal on Computing},
author = {Chiba, Norishige and Nishizeki, Takao},
month = feb,
year = {1985},
note = {Publisher: Society for Industrial and Applied Mathematics},
pages = {210--223},
file = {J053.pdf:/Users/congyu/Zotero/storage/65H5VVYS/J053.pdf:application/pdf},
}
@inproceedings{van_kreveld_finding_1990,
address = {Berlin, Heidelberg},
title = {Finding squares and rectangles in sets of points},
isbn = {978-3-540-46950-6},
doi = {10.1007/3-540-52292-1_25},
abstract = {The following problem is studied: Given a set S of n points in the plane, does it contain a subset of four points that form the vertices of a square or rectangle. Both the axis-parallel case and the arbitrarily oriented case are studied. We also investigate extensions to the d-dimensional case. Algorithms are obtained that run in O(n1+1/dlog n) time for axis-parallel squares and O(n21/d) time for axis-parallel rectangles. For arbitrarily oriented squares the time bounds are O(n2log n), O n3) and O(nd1/2β(n)) for d=2, d=3 and d≥4, respectively (where β(n) is related to the inverse of Ackermann's function), whereas the algorithm for arbitrarily oriented rectangles takes time O(ndlogn). Furthermore, it is shown that recognizing axisparallel rectangles is equivalent to recognizing a K2,2-subgraph in a bipartite graph, resulting in a O(‖E‖ √‖E‖) time and O(‖V‖ + ‖E‖) space solution to this problem. Also, combinatorial results on the maximal number of squares and rectangles any point set can contain are given.},
language = {en},
booktitle = {Graph-{Theoretic} {Concepts} in {Computer} {Science}},
publisher = {Springer},
author = {van Kreveld, Marc J. and de Berg, Mark T.},
editor = {Nagl, Manfred},
year = {1990},
keywords = {Bipartite Graph, Edge Length, Large Subset, Pointer Structure, Small Subset},
pages = {341--355},
file = {Full Text PDF:/Users/congyu/Zotero/storage/WA5PCFYP/van Kreveld and de Berg - 1990 - Finding squares and rectangles in sets of points.pdf:application/pdf},
}
@article{furedi_new_1996,
title = {New {Asymptotics} for {Bipartite} {Turán} {Numbers}},
volume = {75},
copyright = {https://www.elsevier.com/tdm/userlicense/1.0/},
issn = {00973165},
url = {https://linkinghub.elsevier.com/retrieve/pii/S0097316596900679},
doi = {10.1006/jcta.1996.0067},
language = {en},
number = {1},
urldate = {2024-11-14},
journal = {Journal of Combinatorial Theory, Series A},
author = {Füredi, Zoltán},
month = jul,
year = {1996},
pages = {141--144},
file = {PDF:/Users/congyu/Zotero/storage/STCZUQN4/Füredi - 1996 - New Asymptotics for Bipartite Turán Numbers.pdf:application/pdf},
}