回答
關閉我的頭頂部,按極角排序弦的終點(這是O(n log n)部分)。然後通讀排序列表(即O(n)) - 如果兩個相鄰的端點屬於同一和絃,則它沒有交集。在列表中的兩個相鄰條目屬於不同的和絃的情況下,取決於這兩個和絃的其他端點位於哪裏可能存在交叉 - 例如,如果和絃A具有以其排序順序的終點A1和A2,並且類似於和絃B具有B1和B2,則在列表中找到B2-A1不是交集,因爲B1在前,A2在後。但是,B1-A2將是一個十字路口。
另請參閱biziclop對另一個更精心構建的解決方案的評論。
這會找到一些交叉點,但不是所有的 - 相交的和絃不會必須有相鄰的端點。 – interjay 2012-07-18 16:41:31
我的部分措辭不佳。我是想表明的是,如果一個特定的弦的端點都在有序它們之間的任何其他終端,有可能的交集(儘管如果第二絃的兩個端點是第一端點之間,這不是一個交點)。我想我沒有考慮這種情況,其中包括A1-B1-C1-D1-A2這樣的情況,在這種情況下,B,C和D全部三條相交A. – twalberg 2012-07-18 16:56:57
但是,你無法在' O(n)'的時間,通過排序列表。在'O(nlogn)'時間內,你甚至不能找到所有的交叉點,因爲可能有'O(n^2)'交叉點。你需要一個數據結構,可以讓你一次計算多個交點。 – interjay 2012-07-18 17:03:19
存在一個在O(nlogn)中執行作業的通用線段交集算法。
這可以用於你的情況,因爲兩個和絃不能在圓的外部相交。
以下鏈接包含算法:
http://www.cs.princeton.edu/~chazelle/pubs/IntersectLineSegments.pdf
附:
它需要知識的基本計算幾何(線掃描,距離樹)。
希望這會有所幫助。
- 1. 計算正弦和餘弦
- 2. 計算餘弦相似度
- 3. 如何計算和絃的點數
- 4. 計算mahout中的餘弦相似度
- 5. 計算餘弦值和正弦序列的正弦
- 6. 用加數求和來計算餘弦
- 7. 如何計算PySpark中兩個向量的餘弦相似度?
- 8. 如何計算兩個張量之間的餘弦相似度?
- 9. 使用Python計算餘弦相似度
- 10. 計算餘弦算法
- 11. 計算相對累積和
- 12. 如何計算多類型數據的餘弦相似度?
- 13. 不在圓上相交和絃
- 14. C++正弦/餘弦計算器
- 15. 如何在Python中快速計算大量向量的餘弦相似度?
- 16. 計算餘弦積分和Ci(x)
- 17. 增量計數和計算
- 18. 計算相鄰奇數的數量
- 19. 計算餘弦相似度,如果數據包含NA值
- 20. 相交計算地球上
- 21. 餘弦函數計算方案
- 22. 計算相鄰框的數量
- 23. 提交和計算
- 24. 如何計算兩列之間的餘弦相似度? - Python的
- 25. 快速計算R中的> 10^6餘弦向量相似度
- 26. 計算數組中相同元素的唯一相鄰對的數量
- 27. 計算列表中相鄰餘弦值之間的差異
- 28. 計算SAS/IML中的餘弦相似度
- 29. 計算偶數和奇數的數量
- 30. 3D相對角度總和計算
缺少功課標籤? – BoBTFish 2012-07-18 15:01:55
Google-fu:http://ripcrixalis.blog.com/2011/02/08/clrs-14-1-dynamic-order-statistics/ – biziclop 2012-07-18 15:04:48