fix: inclusao-de-subintervalos solutions
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
\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}
|
||||
Reference in New Issue
Block a user