3SUM

مشكلة لم تُحل في علوم الحاسوب
هل توجد خوارزمية لحل مسألة 3SUM في وقت زمني يا(ن2-ϵ){\displaystyle O(n^{2-\epsilon })}بالنسبة للبعضϵ>0{\displaystyle \epsilon >0}؟

في نظرية التعقيد الحسابي ، تسأل مسألة 3SUM عما إذا كانت مجموعة معينة منن{\displaystyle n}الأعداد الحقيقية تتكون من ثلاثة عناصر مجموعها يساوي صفرًا. صيغة معممة،ك{\displaystyle k}-SUM، يطرح نفس السؤال علىك{\displaystyle k}يمكن حل مسألة 3SUM بسهولة باستخدام عدد من العناصر، وليس فقط 3.يا(ن2){\displaystyle O(n^{2})}الوقت، والمطابقةΩ(نك/2){\displaystyle \Omega (n^{\lceil k/2\rceil })}تُعرف الحدود الدنيا في بعض النماذج المتخصصة للحساب ( إريكسون 1999 ) .

وقد تم التكهن بأن أي خوارزمية حتمية لمسألة 3SUM تتطلبΩ(ن2){\displaystyle \Omega (n^{2})}في عام 2014، تم دحض فرضية 3SUM الأصلية من قبل آلان غرونلوند وسيث بيتي، اللذين قدما خوارزمية حتمية لحل 3SUM فييا(ن2/(سجلن/سجلسجلن)2/3){\displaystyle O(n^{2}/({\log n}/{\log \log n})^{2/3})}الوقت. [ 1 ] بالإضافة إلى ذلك، أظهر غرونلوند وبيتيه أن تعقيد شجرة القرار الخطي 4 لـ 3SUM هويا(ن3/2سجلن){\displaystyle O(n^{3/2}{\sqrt {\log n}})}تم تحسين هذه الحدود لاحقًا. [ 2 ] [ 3 ] [ 4 ] أفضل خوارزمية معروفة حاليًا لحساب مجموع 3SUM تعمل فييا(ن2(سجلسجلن)يا(1)/سجل2ن){\displaystyle O(n^{2}(\log \log n)^{O(1)}/{\log ^{2}n})}[ 4 ] أظهر كل من كين ولوفيت وموران أن تعقيد شجرة القرار الخطية السداسية لـ 3SUM هويا(نسجل2ن){\displaystyle O(n{\log ^{2}n})}[ 5 ] الحد الأخير دقيق (حتى عامل لوغاريتمي). ولا يزال يُعتقد أن مسألة 3SUM غير قابلة للحل فييا(ن2-Ω(1)){\displaystyle O(n^{2-\أوميغا (1)})}الوقت المتوقع. [ 6 ]

عندما تكون العناصر أعدادًا صحيحة في النطاق[-شمال،...،شمال]{\displaystyle [-N,\dots ,N]}يمكن حل مسألة 3SUM فييا(ن+شمالسجلشمال){\displaystyle O(n+N\log N)}الوقت من خلال تمثيل مجموعة المدخلاتS{\displaystyle S}كمجموعة متجهات ثنائية ، حساب المجموعةS+S{\displaystyle S+S}لجميع المجاميع الزوجية كملفة منفصلة باستخدام تحويل فورييه السريع ، وأخيرًا مقارنة هذه المجموعة بـS{\displaystyle S}[ 7 ]

خوارزمية تربيعية

لنفترض أن مصفوفة الإدخال هيS[0..ن-1]{\displaystyle S[0..n-1]}في نماذج الحوسبة ذات الأعداد الصحيحة ( ذاكرة الوصول العشوائي للكلمات )، يمكن حل مسألة 3SUM فييا(ن2){\displaystyle O(n^{2})}الوقت في المتوسط ​​عن طريق إدخال كل رقمS[أنا]{\displaystyle S[i]}في جدول تجزئة ، ثم، لكل فهرسأنا{\displaystyle i}وج{\displaystyle j}، التحقق مما إذا كان جدول التجزئة يحتوي على العدد الصحيح-(S[أنا]+S[ج]){\displaystyle -(S[i]+S[j])}.

من الممكن أيضًا حل المشكلة في نفس الوقت باستخدام نموذج حسابي قائم على المقارنة أو ذاكرة وصول عشوائي حقيقية ، حيث لا يُسمح بالتجزئة. تقوم الخوارزمية أدناه أولًا بترتيب مصفوفة الإدخال، ثم تختبر جميع الأزواج الممكنة بترتيب دقيق يتجنب تباطؤ البحث الثنائي لكل زوج، مما يحقق أداءً مثاليًا في أسوأ الحالات.يا(ن2){\displaystyle O(n^{2})}الوقت، كما يلي. [ 8 ]

فرز(S)؛ من أجل i = 0 إلى n - 2 نفّذ أ = S[i]؛ البداية = i + 1؛ النهاية = ن - 1؛ بينما (البداية < النهاية) نفّذ ب = S[بداية] ج = S[نهاية]؛ إذا كان (أ + ب + ج == 0) فقم بإخراج أ، ب، ج؛ // استمر في البحث عن جميع تركيبات الثلاثيات التي مجموعها يساوي صفرًا. // نحتاج إلى تحديث كل من النهاية والبداية معًا لأن قيم المصفوفة متميزة. البداية = البداية + 1؛ النهاية = النهاية - 1؛ وإلا إذا كان ( أ + ب + ج > 0) النهاية = النهاية - 1؛ آخر البداية = البداية + 1؛ نهاية نهاية

يوضح المثال التالي تنفيذ هذه الخوارزمية على مصفوفة صغيرة مرتبة . تظهر القيم الحالية لـ a باللون الأحمر، بينما تظهر قيم b و c باللون الأرجواني.

-25 -10 -7 -3 2 4 8 10 (أ + ب + ج = -25) -25 -10 -7 -3 2 4 8 10 (أ + ب + ج = -22) ... -25 -10 -7 -3 2 4 8 10 (أ + ب + ج = -7) -25 -10 -7 -3 2 4 8 10 (أ + ب + ج = -7) -25 -10 -7 -3 2 4 8 10 (أ + ب + ج = -3) -25 -10 -7 -3 2 4 8 10 (أ + ب + ج == 2) -25 -10 -7 -3 2 4 8 10 (a+b+c==0)

يمكن إثبات صحة الخوارزمية كما يلي: لنفترض أن لدينا حلاً للمعادلة a + b + c = 0. بما أن المؤشرات تتحرك في اتجاه واحد فقط، يمكننا تشغيل الخوارزمية حتى يشير المؤشر الأيسر إلى a. ثم نشغل الخوارزمية حتى يشير أحد المؤشرين المتبقيين إلى b أو c، أيهما يحدث أولاً. بعد ذلك، تستمر الخوارزمية في العمل حتى يشير المؤشر الأخير إلى الحد المتبقي، مما يعطي الحل الصحيح.

المتغيرات

مجموع غير صفري

بدلاً من البحث عن أعداد مجموعها يساوي صفرًا، يمكن البحث عن أعداد مجموعها أي ثابت C. وأبسط طريقة هي تعديل الخوارزمية الأصلية للبحث في جدول التجزئة عن العدد الصحيح .(ج-(S[أنا]+S[ج])){\displaystyle (C-(S[i]+S[j]))} .

طريقة أخرى:

  • اطرح C /3 من جميع عناصر مصفوفة الإدخال.
  • في المصفوفة المعدلة، ابحث عن 3 عناصر مجموعها يساوي 0.

على سبيل المثال، إذا كانت A=[1,2,3,4] وطُلب منك إيجاد مجموع 3 للمصفوفة C = 4، فاطرح 4/3 من جميع عناصر A، ثم حل المسألة بالطريقة المعتادة لحساب مجموع 3، أي :(أ-ج/3)+(ب-ج/3)+(ج-ج/3)=0{\displaystyle (aC/3)+(bC/3)+(cC/3)=0} .

ثلاث مصفوفات مختلفة

بدلاً من البحث عن الأرقام الثلاثة في مصفوفة واحدة، يمكننا البحث عنها في ثلاث مصفوفات مختلفة. أي، إذا كانت لدينا ثلاث مصفوفات X و Y و Z، فأوجد ثلاثة أرقام aX و bY و cZ بحيثأ+ب+ج=0{\displaystyle a+b+c=0}. سمِّ المتغير ذو المصفوفة الواحدة 3SUM × 1 والمتغير ذو المصفوفة الثلاثية 3SUM × 3.

إذا توفرت لدينا خوارزمية لحل مسألة 3SUM × 1، فيمكن حل مسألة 3SUM × 3 بالطريقة التالية (بافتراض أن جميع العناصر أعداد صحيحة):

  • لكل عنصر في X و Y و Z ، اضبط :X[أنا]X[أنا]*10+1{\displaystyle X[i]\gets X[i]*10+1}،Y[أنا]Y[أنا]*10+2{\displaystyle Y[i]\gets Y[i]*10+2}،Z[أنا]Z[أنا]*10-3{\displaystyle Z[i]\gets Z[i]*10-3} .
  • ليكن S عبارة عن سلسلة من المصفوفات X و Y و Z.
  • استخدم أداة 3SUM × 1 لإيجاد ثلاثة عناصرأS، بS، جS{\displaystyle a'\in S,\ b'\in S,\ c'\in S}بحيثأ+ب+ج=0{\displaystyle a'+b'+c'=0} .
  • العودةأ(أ-1)/10، ب(ب-2)/10، ج(ج+3)/10{\displaystyle a\gets (a'-1)/10,\ b\gets (b'-2)/10,\ c\gets (c'+3)/10} .

من خلال الطريقة التي قمنا بها بتحويل المصفوفات، من المؤكد أن aX ، bY ، cZ . [ 9 ]

مجموع الالتفاف

بدلاً من البحث عن عناصر عشوائية في المصفوفة بحيث:

S[ك]=S[أنا]+S[ج]{\displaystyle S[k]=S[i]+S[j]}

تبحث مسألة مجموع الالتفاف الثلاثي (Conv3SUM) عن العناصر في مواقع محددة : [ 10 ]

S[أنا+ج]=S[أنا]+S[ج]{\displaystyle S[i+j]=S[i]+S[j]}

الاختزال من Conv3SUM إلى 3SUM

إذا توفرت لدينا خوارزمية لحل مسألة 3SUM، فيمكن حل مسألة Conv3SUM بالطريقة التالية. [ 10 ]

  • عرّف مصفوفة جديدة T ، بحيث يكون لكل فهرس i :تي[أنا]=2نS[أنا]+أنا{\displaystyle T[i]=2nS[i]+i}(حيث n هو عدد العناصر في المصفوفة، وتتراوح الفهارس من 0 إلى n -1).
  • حل مسألة 3SUM على المصفوفة T.

إثبات صحة الإثبات:

  • إذا كان في المصفوفة الأصلية ثلاثية تحتوي علىS[أنا+ج]=S[أنا]+S[ج]{\displaystyle S[i+j]=S[i]+S[j]}، ثمتي[أنا+ج]=2نS[أنا+ج]+أنا+ج=(2نS[أنا]+أنا)+(2نS[ج]+ج)=تي[أنا]+تي[ج]{\displaystyle T[i+j]=2nS[i+j]+i+j=(2nS[i]+i)+(2nS[j]+j)=T[i]+T[j]}لذلك سيتم إيجاد هذا الحل بواسطة 3SUM على T.
  • وعلى العكس من ذلك، إذا كان في المصفوفة الجديدة ثلاثية معتي[ك]=تي[أنا]+تي[ج]{\displaystyle T[k]=T[i]+T[j]}، ثم2نS[ك]+ك=2ن(S[أنا]+S[ج])+(أنا+ج){\displaystyle 2nS[k]+k=2n(S[i]+S[j])+(i+j)}. لأنأنا+ج<2ن{\displaystyle i+j<2n}بالضرورةS[ك]=S[أنا]+S[ج]{\displaystyle S[k]=S[i]+S[j]}وك=أنا+ج{\displaystyle k=i+j}لذا فهذا حل صالح لـ Conv3SUM على S.

الاختزال من 3SUM إلى Conv3SUM

إذا توفرت لدينا خوارزمية لحل مسألة Conv3SUM، فيمكن حل مسألة 3SUM بالطريقة التالية. [ 6 ] [ 10 ]

تستخدم عملية الاختزال دالة تجزئة . كتقريب أولي، نفترض أن لدينا دالة تجزئة خطية، أي دالة h بحيث:

ح(x+y)=ح(x)+ح(y){\displaystyle h(x+y)=h(x)+h(y)}

لنفترض أن جميع العناصر أعداد صحيحة في النطاق: 0... N −1، وأن الدالة h تربط كل عنصر بعنصر في نطاق الفهارس الأصغر: 0... n −1 . أنشئ مصفوفة جديدة T وأرسل كل عنصر من S إلى قيمة التجزئة الخاصة به في T ، أي لكل x في S (xS{\displaystyle \forall x\in S}) :

تي[ح(x)]=x{\displaystyle T[h(x)]=x}

لنفترض مبدئيًا أن عمليات الربط فريدة (أي أن كل خلية في T تقبل عنصرًا واحدًا فقط من S ). حل مسألة Conv3SUM على T. الآن:

  • إذا كان هناك حل لمسألة 3SUM:z=x+y{\displaystyle z=x+y}، ثم:تي[ح(z)]=تي[ح(x)]+تي[ح(y)]{\displaystyle T[h(z)]=T[h(x)]+T[h(y)]}وح(z)=ح(x)+ح(y){\displaystyle h(z)=h(x)+h(y)}لذلك سيتم إيجاد هذا الحل بواسطة محلل Conv3SUM على T.
  • وعلى العكس من ذلك، إذا تم العثور على Conv3SUM على T ، فمن الواضح أنه يتوافق مع حل 3SUM على S لأن T هو مجرد تبديل لـ S.

هذا الحل المثالي غير فعال، لأن أي دالة تجزئة قد تربط عدة عناصر مختلفة من S بنفس الخلية في T. يكمن الحل في إنشاء مصفوفة .تي*{\displaystyle T^{*}}عن طريق اختيار عنصر عشوائي واحد من كل خلية من خلايا T ، وتشغيل Conv3SUM عليه .تي*{\displaystyle T^{*}}إذا تم العثور على حل، فهو حل صحيح لمسألة مجموع 3 على المجموعة S. إذا لم يتم العثور على حل، فقم بإنشاء مجموعة عشوائية مختلفة .تي*{\displaystyle T^{*}}ثم حاول مرة أخرى. لنفترض أن هناك على الأكثر R عنصرًا في كل خلية من T. عندئذٍ، فإن احتمال إيجاد حل (إن وُجد حل) هو احتمال أن يختار الاختيار العشوائي العنصر الصحيح من كل خلية، وهو(1/R)3{\displaystyle (1/R)^{3}}عن طريق تشغيل Conv3SUMR3{\displaystyle R^{3}}في بعض الأحيان، سيتم إيجاد الحل باحتمالية عالية.

لسوء الحظ، لا نمتلك تجزئة خطية مثالية، لذلك علينا استخدام دالة تجزئة شبه خطية ، أي دالة h بحيث:

ح(x+y)=ح(x)+ح(y){\displaystyle h(x+y)=h(x)+h(y)}أو
ح(x+y)=ح(x)+ح(y)+1{\displaystyle h(x+y)=h(x)+h(y)+1}

يتطلب هذا تكرار عناصر S عند نسخها إلى T ، أي وضع كل عنصرxS{\displaystyle x\in S}كلاهما فيتي[ح(x)]{\displaystyle T[h(x)]}(كما كان من قبل) وفيتي[ح(x)]-1{\displaystyle T[h(x)]-1}إذن، ستحتوي كل خلية على عنصرين R ، وسيتعين علينا تشغيل Conv3SUM(2R)3{\displaystyle (2R)^{3}}مرات.

صلابة 3SUM

تُسمى المسألة "صعبة من نوع 3SUM" إذا كان حلها في زمن أقل من التربيعي يستلزم وجود خوارزمية لحلها في زمن أقل من التربيعي. وقد قدم غاجينتان وأوفرمارس (1995) مفهوم صعوبة 3SUM ، حيث أثبتا أن فئة واسعة من مسائل الهندسة الحسابية تُصنف ضمن هذه الصعوبة، بما في ذلك المسائل التالية. (يُقر المؤلفان بأن العديد من هذه المسائل قد ساهم فيها باحثون آخرون).

  • إذا كان لدينا مجموعة من الخطوط في المستوى، فهل هناك ثلاثة خطوط تلتقي في نقطة واحدة؟
  • بالنظر إلى مجموعة من القطع المستقيمة المتوازية مع المحاور وغير المتقاطعة، هل يوجد خط يفصلها إلى مجموعتين فرعيتين غير فارغتين؟
  • إذا افترضنا وجود مجموعة من الشرائح اللانهائية في المستوى، فهل تغطي هذه الشرائح مستطيلاً معيناً بشكل كامل؟
  • بفرض وجود مجموعة من المثلثات في المستوى، احسب قياساتها.
  • إذا كانت لدينا مجموعة من المثلثات في المستوى، فهل يوجد ثقب في اتحادها؟
  • عدد من مشاكل الرؤية وتخطيط الحركة ، على سبيل المثال،
    • إذا افترضنا وجود مجموعة من المثلثات الأفقية في الفضاء، فهل يمكن رؤية مثلث معين من نقطة معينة؟
    • بالنظر إلى مجموعة من العوائق المكونة من قطع مستقيمة متوازية مع المحاور وغير متقاطعة في المستوى، هل يمكن تحريك قضيب معين عن طريق الانتقالات والدورانات بين موضع البداية وموضع النهاية دون الاصطدام بالعوائق؟

توجد الآن العديد من المشكلات الأخرى التي تندرج ضمن هذه الفئة. ومن الأمثلة على ذلك مسألة فرز X + Y بصيغة القرار : إذا كانت لدينا مجموعتان من الأعداد X و Y ، كل منهما تحتوي على n عنصرًا، فهل يوجد من x + y المتميزين حيث xX و yY ؟ [ 11 ]

انظر أيضاً

ملحوظات

  1. غرونلوند وبيتيه 2018 .
  2. فروند 2017 .
  3. الذهب والشرير 2017 .
  4. 1 2 Chan 2020 .
  5. كين، لوفيت وموران 2018 .
  6. 1 2 كوبيلويتز، تسفي؛ بيتي، سيث؛ بورات، إيلي (2014)، "صعوبة 3SUM في هياكل البيانات (الديناميكية)"، arXiv : 1407.6756 [ cs.DS ]{{cite arXiv}}: CS1 maint: overridden setting ( link )
  7. ^ كورمين، توماس هـ . ليسرسون، تشارلز إي . ريفست، رونالد ل . شتاين ، كليفورد (2009) [1990]، مقدمة للخوارزميات ( الطبعة الثالثة)، مطبعة معهد ماساتشوستس للتكنولوجيا وماكجرو هيل، ISBN  0-262-03384-4مثال 30.1–7، ص  906.
  8. رسوم بيانية للرؤية ومجموع 3 من تأليف مايكل هوفمان
  9. للحصول على اختزال في الاتجاه الآخر، انظر متغيرات مسألة المجموع الثلاثي .
  10. 1 2 3 باتراسكو، م. (2010)، "نحو حدود دنيا متعددة الحدود للمسائل الديناميكية"، وقائع الندوة الثانية والأربعين لجمعية الحوسبة الآلية حول نظرية الحوسبة - STOC '10 ، الصفحات 603-610 ، doi : 10.1145/1806689.1806772 ، ISBN  9781450300506
  11. ديمين، إريك ؛ إريكسون، جيف؛ أورورك، جوزيف (20 أغسطس 2006)، "المسألة 41: فرز X + Y (مجموعات ثنائية)" ، مشروع المسائل المفتوحة ، تم الاطلاع عليه في 23 سبتمبر 2014

مراجع