python计算四元素组合算法_python – 算法,列表元素之间的最近点
這種方法是一種強力方法,但使用類似于Dijkstra算法的消除方法,這導致了更少的情況(使得算法最有可能快幾個數量級,特別是對于大型列表或大量列表).告訴我你是否理解它,我可以澄清一下.可以在此處找到實現:https://github.com/nerryoob/closestPoint
你正在做的是列出不同的數字組合(即答案)?一開始最好(索引0),最后最差,反之亦然,看看效果最好.您將僅為第一個輸入列表創建結果列表,完全忽略其他列表.當然,對于一個列表,所有項目都是解決方案 – 它們的總差異為0.所以只需將第一個輸入列表復制到結果列表中
接下來,可能使用while循環,請遵循此算法.取最上面的項目并從結果列表中彈出它.存儲它的價值.轉到下一個輸入列表,對于下一個輸入列表中的每個項目,復制剛剛彈出的頂部項目,該項目還包含下一個輸入列表的項目.找到新的整體差異,并將基于此的新項目插入到列表中.重復,直到頂級解決方案中包含所有列表.這意味著您保證您擁有最佳解決方案(至少是第一個),同時在組合上花費的時間少得多,這顯然不是解決方案
>示例(
括號中的數字是總差異)
[14,48]
[14,13,72]
[1,24]
結果列表為[14(0),22(0),36(0),48(0)]
>看看14.插入新數字[14和14(0),
48(0),14和23(9),14和30(16),14和72(58)]
>看看14& 14.插入新數字[22(0),48(0),14和
14和18(8),14和14和24(20),14
和14和1(26),14和72(58)]
>查看22.插入新數字[36(0),22和23(1),14
和14和18(8),22和14(8),22和30(8),14和30
(16),14和14和1(26),22和72(50),14
和72(58)]
繼續重復,你最終得到22,24.因為它包含所有n個列表,所以您可以停止并回復答案
要優化它:
>刪除重復項
>也許以某種方式利用有序列表
>考慮一下您在哪里放置具有相同總差異的項目,也許首先有更多數字的項目
編輯:
算法復雜度為O(n ^ 2)
總結
以上是生活随笔為你收集整理的python计算四元素组合算法_python – 算法,列表元素之间的最近点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 伏尔加河上的线是谁画的啊?
- 下一篇: 试管婴儿胎停有什么症状