Files
problemas-para-competicao-p…/inclusao-de-subintervalos/inclusao-de-subintervalos-tutorial.tex

50 lines
1.5 KiB
TeX

\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsthm,amssymb}
\usepackage{fullpage}
\usepackage{url}
\pagenumbering{gobble}
\usepackage{hyperref}
\usepackage{graphicx}
\input{statement/preamble.tex}
\title{ Tutorial: Inclusão de Subintervalos}
\author{}
\date{}
\begin{document}
\maketitle
Nesse problema, devemos ordenar os intervalos $(a_i, b_i)$:
\begin{itemize}
\item Em ordem crescente de $a_i$.
\item Em caso de empate, em ordem decrescente de $b_i$.
\end{itemize}
Em seguida, devemos iterar sobre os intervalos ordenados, mantendo o maior valor de $b_i$
visto até o momento. Se encontrarmos um intervalo $(a_i, b_i)$ tal que $b_i$ seja menor ou
igual ao maior valor de $b_i$ visto até o momento, então esse intervalo é coberto por um
intervalo anterior e podemos descartá-lo. Caso contrário, atualizamos o maior valor de
$b_i$ visto até o momento.
O algoritmo abaixo implementa essa lógica.
\begin{algoritmo}
\caption{\Call{interval-cover}{$I$}}
\KwIn{Lista de intervalos $I[0,n-1]$}
\KwOut{Lista de intervalos $I'$ não cobertos por nenhum outro intervalo}
$I' \gets \emptyset$\;
\Call{sort}{$I$} \tcp{Ordena os intervalos com critérios especificados}
$\max_b \gets -\infty$\;
\ForEach{$(a_i, b_i) \in I$}{
\If{$b_i > \max_b$}{
$I'.\Call{append}{(a_i,b_i)}$\;
$\max_b \gets b_i$\;
}
}
\Return{$I'$}\;
\end{algoritmo}
\section*{Análise}
O passo de ordenação tem complexidade $\Theta(n \lg n)$ e domina o custo do algoritmo.\end{document}