[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:01319] Re: conflict detection



  From:       Yoshinari Nomura <nom@xxxxxxxxxxxxxxxxxxx>
  Subject:    [mhc:01318] Re: conflict detection
  Date:       Tue, 3 Apr 2001 20:01:17 +0900
  Message-Id: <20010403200117P.nom@xxxxxxxxxxxxxxxxxxx>

  | えっと、多分そんな感じでいいと思います。
  | 後でちょっと落ち着いて考えてみます。

いろいろかんがえたのですが、
endがnilのときの判定を追加してはどうでしょう。

Index: mhc-summary.el
===================================================================
RCS file: /cvsroot/mhc/emacs/mhc-summary.el,v
retrieving revision 1.25
diff -p -u -b -B -r1.25 mhc-summary.el
--- mhc-summary.el	2001/01/31 11:26:37	1.25
+++ mhc-summary.el	2001/04/04 06:15:43
@@ -485,6 +485,8 @@ If optional argument FOR-DRAFT is non-ni
 					(car (cdr schedules))))
 			mhc-tmp-conflict (or (and mhc-tmp-end next-begin
 						  (< next-begin mhc-tmp-end))
+                                             (and (null mhc-tmp-end) mhc-tmp-begin next-begin
+						  (= next-begin mhc-tmp-begin))
 					     (and mhc-tmp-begin time-max 
 						  (< mhc-tmp-begin time-max))))
 		  (if mhc-tmp-end (setq time-max (max mhc-tmp-end time-max)))

  | > 区間木というデータ構造をつかうと
  | > 全conflictを検出できますがコストはO(n log n)になります。
  | 
  | ありがとうございます。
  | 間違ってるかもしれませんが、二色木とかは、
  | 挿入とか削除をすることが前提で、そのときの効率まで考えるから
  | こうなるんですよね。

いや、区間木に1個の区間データを蓄積するのにO(log n)の時間が必要なので
n個の区間データを蓄積するのにはO(n log n)ですが、それとは別に
n個の区間データを蓄積されているときに、区間を入力してそれが
蓄積データと衝突しているかどうかの判定がO(n log n)ということです。

  | mhc は、summary を作るときに、時間順にソートして、
  | それぞれを順番になめて、表示する必要があるので、
  | その中に conflict の判定も入れられるのが一番いいです。

そのとおりですね。
あらためてよくできているとおもいました。

--
KOIE Hidetaka 鯉江英隆 <hide@xxxxxxxx>