noshi91のメモ

データ構造のある風景

区間を 2 次元平面にプロットする

概要

区間  \lbrack l , r ) l, r のそれぞれを軸とする  2 次元平面にプロットするという方法を紹介します。

f:id:noshi91:20210505141442j:plain:w500

まず、 1 つの区間を置いた図がこれです。 赤い点がプロットされた区間であり、斜めの対角線を  \lbrack 0 , n ) と思うと  \lbrace で示した部分がその区間に該当します。 点線によって領域が  6 つに分けられており、区間と他の区間との位置関係が  6 通りあることがすぐに分かります。 別の区間 (青) を置いてみると以下のようになります。

f:id:noshi91:20210505142051j:plain:w500

この場合、青の区間と赤の区間は overlap しており、青が左側にあります。 他の領域はそれぞれ包含や非交に対応しています。 この図示によって、例えば  2 つの区間の位置関係を判定したいときにどのような条件式を書けばよいかなどを素早く確実に導出することができます。 また、区間が関わる動的計画法などのイメージにも便利です。*1

*1:効果には個人差があります