171 lines
7.7 KiB
TeX
171 lines
7.7 KiB
TeX
\section{问题一:有界误差交会定位与覆盖圆}
|
||
\subsection{前向角域的半平面模型}
|
||
给定检测点 $s_i=(s_{ix},s_{iy})$ 与读数 $\theta_i$,
|
||
误差约束意味着真实方位位于
|
||
$[\theta_i-\delta,\theta_i+\delta]$ 内。因此可行位置属于前向角域
|
||
\begin{equation}
|
||
W_i=\left\{g:
|
||
\begin{aligned}\relax
|
||
[u(\theta_i-\delta),g-s_i]&\ge0,\\
|
||
[u(\theta_i+\delta),g-s_i]&\le0,\\
|
||
u(\theta_i)\cdot(g-s_i)&\ge0
|
||
\end{aligned}\right\}.
|
||
\label{eq:wedge}
|
||
\end{equation}
|
||
三条不等式均可写为 $a x+b y\le c$,其法向依次为
|
||
\begin{equation}
|
||
\begin{aligned}
|
||
&(\sin(\theta_i-\delta),-\cos(\theta_i-\delta)),\\
|
||
&(-\sin(\theta_i+\delta),\cos(\theta_i+\delta)),\\
|
||
&(-\cos\theta_i,-\sin\theta_i),
|
||
\end{aligned}
|
||
\end{equation}
|
||
右端为相应法向与 $s_i$ 的内积。在 $0<\delta<90^\circ$ 时,
|
||
前两条已限定前向窄角域;第三条显式保留方向性,
|
||
并使零误差退化情形对应射线而非整条直线。
|
||
采用正弦、余弦表示可自动处理 $0^\circ/360^\circ$ 跨界。
|
||
|
||
问题一的多边形定位区域定义为
|
||
\begin{equation}
|
||
P=\bigcap_{i=1}^{n}W_i=\{g:Ag\le b\}.
|
||
\label{eq:q1set}
|
||
\end{equation}
|
||
这是纯角域交会模型。后续问题加入 $\Omega$ 与接收距离先验后会形成更紧的集合,
|
||
但不能将这些附加约束混入问题一的直径结果。
|
||
半平面交是闭凸集,可能为空、单点、线段、有界多边形或无界集。
|
||
|
||
\subsection{区域构造、空集及无界情形}
|
||
令约束数 $k=3n$。对任意两条不平行边界
|
||
$a x+b y=c$、$d x+e y=f$,候选交点为
|
||
\begin{equation}
|
||
x=\frac{ce-bf}{ae-bd},\qquad y=\frac{af-cd}{ae-bd}.
|
||
\end{equation}
|
||
仅保留满足全部不等式的交点,再经去重和单调链凸包构造得到顶点集合。
|
||
实现先平移与缩放坐标,以降低千米尺度坐标造成的数值误差;
|
||
近平行边界仍参与求交,因为其远端交点可能决定细长区域的直径。
|
||
|
||
不能以任意大矩形裁剪后得到的有限直径代替无界性判断。
|
||
对非空集合定义衰退锥
|
||
\begin{equation}
|
||
\mathcal R=\{d:Ad\le0\}.
|
||
\end{equation}
|
||
若 $\mathcal R$ 含非零向量,则 $g+td\in P$ 对所有 $t\ge0$ 成立,
|
||
区域无界,直径为 $+\infty$。二维多面锥只需检查约束边界的两个切向
|
||
$(b,-a)$ 与 $(-b,a)$ 是否满足全部齐次不等式。
|
||
本题至少一个前向窄角域会排除直线性,故非空交集存在极点;
|
||
在此特定输入族中,没有可行边界交点可以判为空集。
|
||
无观测输入单独返回整个平面,不按空集处理。
|
||
|
||
有界非空区域中,一个顶点对应单点,两个顶点对应线段,其余为凸多边形。
|
||
空集没有本文定义的有效直径与覆盖圆,程序以显式状态报告观测不相容,
|
||
便于检查频道、误差界或输入数据。
|
||
|
||
\subsection{直径与直径圆的判定}
|
||
\begin{proposition}[顶点直径]
|
||
设 $P=\operatorname{conv}\{v_1,\ldots,v_m\}$ 非空有界,则
|
||
\begin{equation}
|
||
D(P)=\max_{i,j}\norm{v_i-v_j}.
|
||
\label{eq:diameter}
|
||
\end{equation}
|
||
\end{proposition}
|
||
\begin{proof}
|
||
任意 $x,y\in P$ 可表示为凸组合
|
||
$x=\sum_i\lambda_i v_i$、$y=\sum_j\mu_jv_j$。
|
||
由于系数非负且各自和为 $1$,
|
||
\[
|
||
\norm{x-y}
|
||
=\left\|\sum_{i,j}\lambda_i\mu_j(v_i-v_j)\right\|
|
||
\le\sum_{i,j}\lambda_i\mu_j\norm{v_i-v_j}
|
||
\le\max_{i,j}\norm{v_i-v_j}.
|
||
\]
|
||
最远顶点对本身属于 $P$,故上界可达。
|
||
\end{proof}
|
||
因此无需在整个区域内部搜索,只需枚举顶点对,计算量为 $O(m^2)$。
|
||
|
||
\begin{proposition}[直径圆覆盖的充要条件]
|
||
取最远顶点对 $a,b$,令 $D=\norm{a-b}$、$o=(a+b)/2$。
|
||
存在直径等于 $D$ 的圆盘覆盖 $P$,当且仅当
|
||
\begin{equation}
|
||
\max_{v\in V(P)}\norm{v-o}\le D/2.
|
||
\label{eq:diametercircle}
|
||
\end{equation}
|
||
\end{proposition}
|
||
\begin{proof}
|
||
若半径 $D/2$ 的圆盘中心为 $z$ 且包含 $a,b$,则
|
||
$D\le\norm{a-z}+\norm{z-b}\le D$。
|
||
等号迫使 $z=o$。反之,圆盘为凸集,包含全部顶点即包含它们的凸包。
|
||
\end{proof}
|
||
若条件不成立,输出圆外顶点及超出量
|
||
$e=\max_v\norm{v-o}-D/2$,即得到可独立检查的否定证据。
|
||
不能仅以直径端点在圆周上判断整个区域被覆盖。
|
||
|
||
\subsection{反例与可清除半径}
|
||
构造等边三角形
|
||
\begin{equation}
|
||
A=(0,0),\qquad B=(40,0),\qquad C=(20,20\sqrt3).
|
||
\end{equation}
|
||
其直径为 $40$ m。以 $AB$ 为直径的圆心为 $(20,0)$,半径为 $20$ m,
|
||
但 $C$ 到圆心的距离为 $20\sqrt3$ m,位于圆外。
|
||
其最小包围圆圆心为 $(20,20/\sqrt3)$,半径
|
||
$40/\sqrt3\approx23.094$ m,同样大于清除半径。
|
||
图~\ref{fig:triangle} 展示两类圆的差别。
|
||
|
||
\begin{figure}[htbp]
|
||
\centering
|
||
\begin{tikzpicture}[x=0.095cm,y=0.095cm,font=\small]
|
||
\fill[inkblue!10] (0,0)--(40,0)--(20,34.641)--cycle;
|
||
\draw[thick] (0,0)--(40,0)--(20,34.641)--cycle;
|
||
\draw[warmgray,dashed,thick] (20,0) circle (20);
|
||
\draw[inkblue,thick] (20,11.547) circle (23.094);
|
||
\fill (0,0) circle (0.6) node[below left] {$A$};
|
||
\fill (40,0) circle (0.6) node[below right] {$B$};
|
||
\fill (20,34.641) circle (0.6) node[above] {$C$};
|
||
\fill[warmgray] (20,0) circle (0.6) node[below] {$o$};
|
||
\fill[inkblue] (20,11.547) circle (0.6) node[right] {$m$};
|
||
\draw[->,warmgray] (49,-14)--(35,-13);
|
||
\node[anchor=west,warmgray] at (49,-14) {直径圆:$r=20$};
|
||
\draw[->,inkblue] (49,24)--(41,22);
|
||
\node[anchor=west,inkblue] at (49,24) {最小包围圆:$\rho=40/\sqrt3$};
|
||
\node at (20,-26) {$AB=BC=CA=40$ m};
|
||
\end{tikzpicture}
|
||
\caption{直径圆不能覆盖等边三角形。此图为解析反例,不是模拟器观测。}
|
||
\label{fig:triangle}
|
||
\end{figure}
|
||
|
||
该形状可由题设的 $\pm1^\circ$ 角域构造出来。例如检测点
|
||
$(-1000,0)$、$(540,-500\sqrt3)$、$(520,520\sqrt3)$,
|
||
对应示向度为 $1^\circ$、$121^\circ$、$241^\circ$。
|
||
各角域的一侧边界给出三角形的三条支撑线,另一侧边界包含整个三角形,
|
||
故交集恰为上述三角形。这一构造只用于证明一般性命题,并不作为实验成绩。
|
||
|
||
对一般候选区域,定义最小包围圆
|
||
\begin{equation}
|
||
\rho(P)=\min_{z\in\mathbb R^2}\max_{g\in P}\norm{g-z},\qquad
|
||
m\in\arg\min_z\max_{g\in P}\norm{g-z}.
|
||
\label{eq:mec}
|
||
\end{equation}
|
||
其边界由至多三个支撑点确定,可用 Welzl 随机增量算法计算\cite{welzl}。
|
||
实现采用固定随机种子及显式栈,并在输出前检查全部顶点的包含关系。
|
||
在精确模型中,若 $\rho(P)\le20$,于 $m$ 清除即可覆盖所有可能真源;
|
||
考虑浮点计算后采用 $\rho(P)+\eta_{\mathrm{num}}\le20$ 的充分判据。
|
||
$D(P)\le40$ 是必要条件,但并非充分条件。
|
||
|
||
\subsection{算法一及复杂度}
|
||
\begin{algorithmblock}{算法1:有界测向角域交会与覆盖圆判定(对应 algo-1)}
|
||
\textbf{输入:}同一频道的检测点、示向度和误差半角。\\
|
||
\textbf{输出:}区域状态、顶点、直径、直径圆判定与最小包围圆。
|
||
\begin{enumerate}[leftmargin=2em,itemsep=1pt,topsep=4pt]
|
||
\item 若观测为空,返回无界;否则归一化坐标,生成 $3n$ 条半平面。
|
||
\item 枚举非平行边界交点,仅保留满足全部约束的点。
|
||
\item 无可行点时返回空集;存在非零衰退切向时返回无界及无穷直径。
|
||
\item 对可行交点去重、求凸包,并区分单点、线段和二维多边形。
|
||
\item 枚举最远顶点对,计算 $D$、中点 $o$,检查全部顶点距 $o$ 是否不超过 $D/2$。
|
||
\item 求最小包围圆,复核包含性和数值余量,输出清除证书。
|
||
\end{enumerate}
|
||
\end{algorithmblock}
|
||
边界交点枚举需 $O(k^2)$ 次,每点校验 $k$ 条约束,主计算量为 $O(k^3)$;
|
||
凸包最坏需 $O(k^2\log k)$,直径枚举需 $O(m^2)$。
|
||
Welzl 算法在随机排列下具有期望线性时间,
|
||
固定种子实现不宣称最坏时间线性。该可审计方案适合少量观测,
|
||
当前入口限制最多 $100$ 个检测点;更大规模可替换半平面交算法。
|