1

私は自分の研究論文にある種のアルゴリズムを実装しようとしています(プログラミングは私の主要な研究分野ではありません)。助けが必要です。次の種類のデータ構造(aとbなど)を検討してください。線形タイムラインがあり、オブジェクトはこの時間軸上に互いに一定の距離を置いて配置されています(実際、これらのオブジェクトは、パケットの送信に必要な時間に等しい幅のデータパケットを表します) )。それらを右側に揃えて、基準点(時間t = 0)にしてから、これら2つのリスト(aとb)をマージします(リストと呼べる場合)。cに示すように結果のリストを取得します。重なり合うオブジェクトはシフトされて単一のリストを作成し、それに応じてこれらのオブジェクト間のギャップが変化します。どのように進めればよいのでしょうか?リンクリスト?(Pythonに存在する場合)。1つのリストにマージされるリストは3つ以上ある場合があります。前もって感謝します

       ____          _____            ____
    __| a3 |________| a2  |__________| a1 |  (a)

       ____             _____         ____
    __| b3 |___________| b2  |_______| b1 |  (b)


            ____  ____     ______  _____   ____  ____
    _______| a3 || b3 |___| a2   || b2  |_| a1 || b1 |  (c)
4

1 に答える 1

-1

たとえば、データ項目のdictとデータシーケンスのリスト:

データ1:

[{'start':0、't':10、'dtype':'a'}、{'start':30、't':20、'dtype':'a'}、{'start': 50、't':30、'dtype':'a'}]

データ2:

[{'start':15、't':10、'dtype':'b'}、{'start':40、't':20、'dtype':'b'}、{'start': 50、't':30、'dtype':'b'}]

およびマージされたリスト(開始時間でソート):

sorted(data1+data2, key=lambda x:x['start'])

結果:

[{'start':0、't':10、'dtype':'a'}、{'start':15、't':10、'dtype':'b'}、{'start': 30、't':20、'dtype':'a'}、{'start':40、't':20、'dtype':'b'}、{'start':50、't': 30、'dtype':'a'}、{'start':50、't':30、'dtype':'b'}]

バックオーダーの場合は、ソートされた関数でパラメーター'reverse=True'を使用します。重複する要素を見つけるには、リストの反復中にitem ['start'] + item ['t']> nextitem ['start'] ===>項目が重複しているかどうかを確認し、アルゴリズムに従ってnextitemの開始位置を調整する必要があります。

于 2013-01-30T16:49:27.410 に答える