今、自明でない下限を示すことができると思います。そのようなプログラムは、比較分岐プログラムのファミリで実装するという考え方です。「読み取り専用」の仮定は、分岐プログラムのファミリーがほとんど、つまりスペースを使用しないことを意味します。次に、ボロディンらによって証明された下限S T = Ω (n 2)を適用します。「気づかないマシンでソートするための時間と空間のトレードオフ」。これにより、時間のn 2 / log nの下限が得られます。O(logn)ST=Ω(n2)n2/logn
もう少し詳しく:上記の操作5は不要です。大まかに言って、2つのリストのヘッドを既に比較してリストのヘッドを印刷できる場合、特定のレジスタでリストのヘッドを分離する必要はありません。これを仮定すると、マシンのすべてのレジスターは入力の最終部分文字列のみを保存することがわかります。
レジスタプログラムに行のコードとk個のレジスタX 1、… 、X kがあるとします。ℓkX1,…,Xk
修正します。次のように、長さnの文字列に対して比較分岐プログラムを構築します。各タプルのノードの作成(I 、D 1、... 、D K)1 ≤ I ≤ ℓ と0 ≤ D 1、... 、D K ≤ N。考え方は、レジスタマシンでの計算は分岐プログラムのパスに対応し、ノード(i 、d 1、… 、dnn(i,d1,…,dk)1≤i≤ℓ0≤d1,…,dk≤nレジスタマシンの行 iにあり、 X iに格納されている文字列の長さが d iである場合。次に、分岐プログラムの有向エッジを定義する必要があります(i,d1,…,dk)私バツ私d私
行が次の形式の場合私
場合はi 1に移動し、そうでない場合はi 2に移動しますバツあなたは< Xv私1私2
次に、すべての、ノード(i 、d 1、… 、d k)は、入力のd u番目とd v番目の要素を比較し、「true」エッジを(i 1、d 1、… 、d kd1、… 、dk(i 、d1、… 、dk)dあなたはdv、および( false)エッジから(i 2、d 1、… 、d k(私1、d1、… 、dk)。(私2、d1、… 、dk)
行が次の形式の場合私
、ライン後藤 I 'バツ1← t a i l (X2)私′
次に、任意のノードから(i ′(i 、d1、… 、dk)。(私′、d2− 1 、… 、dk)
行が次の形式の場合私
、後藤ライン I 'p r i n t (h e a d(Xあなたは))私′
次に、任意のノードから(i ′、d 1(i 、d1、… 、dk)、入力の d u番目のノードによってラベル付けされています。(私′、d1、… 、dk)dあなたは
これらの例が、分岐プログラムをどのように構築するつもりであるかを明確にしたいです。すべての作業を完了すると、この分岐プログラムは、最大でありℓ ⋅ n個kが持つように、ノードの空間O (ログn )