एनपी करें: सबसे बड़ा क्लिक ढूंढें


22

पृष्ठभूमि

इसे लिखने के समय, पी बनाम एनपी समस्या अभी भी अनसुलझी है, लेकिन आपने नॉर्बर्ट ब्लम के नए पेपर के सबूत के बारे में दावा करते हुए सुना होगा कि पी! = एनपी, जिसे पहले से ही गलत होने का संदेह है (लेकिन हम देखेंगे)।

इस पत्र में जिस समस्या पर चर्चा की गई है वह समस्या है । कम से कम यही है कि मैंने एक अखबार के लेख में पढ़ा है, इसलिए मुझे सही करें अगर मैं गलत हूं, लेकिन किसी भी मामले में, मैं चाहूंगा कि आप एक प्रोग्राम लिखें जो निम्नलिखित संस्करण को हल करता है:

काम

मान लें कि हमारे पास बहुत सारे छात्रों के साथ एक बड़ा स्कूल है। इस स्कूल में इनमें से प्रत्येक छात्र के कुछ दोस्त हैं। एक गुट के छात्रों के केवल छात्रों को, जो दोस्तों के साथ कर रहे हैं से मिलकर एक समूह है एक दूसरे को सदस्य

आपके कार्यक्रम को उन छात्रों के जोड़े प्राप्त होंगे जो इसके इनपुट के रूप में मित्र हैं। इस जानकारी से, प्रोग्राम को सबसे बड़े क्लिक का आकार खोजना होगा । छात्रों की पहचान पूर्णांक आईडी द्वारा की जाती है ।

यदि आप गणितीय शब्द पसंद करते हैं, तो इसका मतलब है कि आपको एक अप्रत्यक्ष ग्राफ़ के किनारों को खिलाया जाएगा, जिसे प्रत्येक दो नोड्स द्वारा पहचाना जाएगा।

इनपुट

आपका इनपुट सकारात्मक पूर्णांक जोड़े की गैर-रिक्त सूची होगी, जैसे [[1,2],[2,5],[1,5]]। आप इस इनपुट को किसी भी समझदार रूप में ले सकते हैं, जैसे कि सरणियों की एक सरणी के रूप में, पाठ की पंक्तियों के रूप में, जिसमें दो संख्याएँ होती हैं, आदि ...

उत्पादन

अपेक्षित आउटपुट एक एकल संख्या है n >= 2: सबसे बड़े क्लिक का आकार। ऊपर के उदाहरण इनपुट के साथ, परिणाम होगा 3, के रूप में सभी छात्रों ( 1, 2और 5) मित्र एक दूसरे के साथ कर रहे हैं।

परीक्षण के मामलों

[[1,2]]
=> 2

[[1,2],[3,1],[3,4]]
=> 2

[[1,2],[2,5],[1,5]]
=> 3

[[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]]
=> 4 (the largest clique is [1,3,4,5])

[[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]]
=> 3 (the largest clique is [23,764,1073])

[[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52],
 [52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565],
 [1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860],
 [1296,1860],[1860,52],[711,1639]]
=> 6 (the largest clique is [52,316,711,1296,1565,1650])

आप अन्य परीक्षण मामलों के परिणामों को सत्यापित करने के लिए इस (बेवकूफ) संदर्भ कार्यान्वयन ( -dध्वज के साथ अतिरिक्त आउटपुट प्रिंट ) का उपयोग कर सकते हैं ।

नियम

  1. आपके प्रोग्राम को अमान्य इनपुट पर परिभाषित परिणाम की आवश्यकता नहीं है। तो आप यह मान सकते हैं कि:
    • आपको हमेशा कम से कम एक जोड़ी आईडी मिलेगी
    • प्रत्येक जोड़ी में दो अलग-अलग आईडी होते हैं
    • कोई भी जोड़ी दो बार नहीं दिखती (आईडी के स्थानों को स्वैप करना अभी भी एक ही जोड़ी होगी)
  2. आपके एल्गोरिथ्म को इनपुट आकार पर ऊपरी बाउंड सेट करने की अनुमति नहीं है। विशुद्ध रूप से आपकी भाषा / परिवेश (जैसे स्टैक आकार, गणना समय आदि) द्वारा निर्धारित तकनीकी सीमाएँ और सीमाएँ अवश्यम्भावी हैं।
  3. मानक खामियों को मना किया जाता है।
  4. यह , इसलिए सबसे छोटा कोड, बाइट्स में मापा जाता है, जीतता है।
  5. यदि आपके एल्गोरिथ्म में बहुपद समय की जटिलता है, तो आप -1अपने कोड आकार की परवाह किए बिना तुरंत स्कोर करते हैं, लेकिन उस स्थिति में, आप अपना समाधान कहीं और प्रस्तुत करना चाह सकते हैं। ;)

4
मैं लगभग गारंटी दे सकता हूं कि कोई ऐसा व्यक्ति होगा जो इसे करेगा (या करने की कोशिश करेगा), इसलिए इसे हटाने के लिए बस सुरक्षित होगा। यदि आप इसे करने के लिए लोगों को पुरस्कृत करना चाहते हैं, तो आप सबसे छोटे उत्तर के लिए एक इनाम दे सकते हैं जो इसे बहुपद समय देता है।
11:55 बजे caird coinheringaahing

4
@cairdcoinheringaahing अगर कोई ऐसा करता है, तो -1वह अच्छी तरह से योग्य है ;)
फेलिक्स पालमेन

13
@cairdcoinheringaahing यदि कोई यह साबित करने में कामयाब रहा कि P = NP, तो कोड गोल्फ समस्या पर स्वत: सबसे कम स्कोर रखना हमारी चिंताओं में से सबसे कम है। उस नियम ने कहा, नियम 5 वास्तव में चुनौती के लिए बहुत योगदान नहीं देता है, इसलिए मैं सहमत हूं कि इसे हटा दिया जाना चाहिए।
मेगो

11
@ यह केवल एक मजाक और सीएमआई द्वारा प्रस्तुत 1M के लिए एक छोटे से बोनस का योगदान देता है ।
फेलिक्स पैलमेन

30
खैर, मैं कुछ लोगों के पक्ष में "वैज्ञानिक हास्य" की भावना नहीं रखूंगा। कृपया इस संबंध में अधिक सुझाव न दें, धन्यवाद :)
फेलिक्स पाम्स

जवाबों:


6

जेली ,  15 18  16 बाइट्स

मेरी विधि में बग्स को ठीक करने के लिए +3 बाइट्स।
मील के लिए -2 बाइट्स धन्यवाद (ध्यान दें कि n × (n-1) n 2 = nC2 )

ẎQL©c2⁼Lȧ®
ŒPÇ€Ṁ

मैत्री लिंक (दोस्ती) की सूची ले रहा है और एक पूर्णांक लौटा रहा है।

इसे ऑनलाइन आज़माएं! मेमोरी में किनारों का पावर-सेट बनाता है इसलिए अंतरिक्ष और समय दोनों में अक्षम है (हां, यह हे (2 एन ) लोग)!

कैसे?

ẎQL©c2⁼Lȧ® - Link 1, isClique?: list, edges  e.g. [[1,3],[2,3],[3,4],[4,1],[4,2],[2,1]]
Ẏ          - tighten                              [ 1,3 , 2,3 , 3,4 , 4,1 , 4,2 , 2,1 ]
 Q         - de-duplicate (gets unique ids)          [1,3,2,4]
  L        - length (get number of people involved)  4
   ©       - (copy to the register)
    c2     - combinations of 2 (z-choose-2)          6
       L   - length (of edges)                       6
      ⁼    - equal?                                  1
         ® - recall value from register              4
        ȧ  - logical and                             4
           - (Note: the number of edges of a clique of size n is n*(n-1) and we're
           -  guaranteed no repeated edges and that all edges are two distinct ids)

ŒPÇ€Ṁ - Link: list of lists, edges
ŒP    - power-set (all possible sets of edges (as lists))
  Ç€  - call last link (1) as a monad for €ach
    Ṁ - maximum

वाह, स्पष्टीकरण जब आपके पास समय हो
श्री एक्सकोडर

@EriktheOutgolfer मैं सहमत हूँ। मैं शायद निस्तारण में कोड जोड़ सकता हूं ...
जोनाथन एलन



@ मीलों - अच्छा है, मैंने अभी कुछ समय बिताने की कोशिश की है, जिससे मुझे लगता है कि यह संभव होना चाहिए!
जोनाथन एलन

13

गणितज्ञ, 34 बाइट्स

Tr[1^#&@@FindClique[#<->#2&@@@#]]&  

मूल रूप से फाइंडलीक काम करता है और "ग्राफ जी में सबसे बड़ा क्लिक पाता है।"
अन्य सभी सामग्री इनपुट-सूची को ग्राफ़ में परिवर्तित कर रही है

इनपुट

[{{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}। {(5, 5}, {5, 4}}]

उत्पादन

4

इनपुट

[{{१२ ९ ६, ३१०}, {१६५०, ३१०}, {१२ ९ ६, १०५०}, {१२ ९ ६, ५२}, {१६५०, }११}, {,११, ३१०}, {१६५०, ५२}, {५२, 11११}, {1296, 711}, {52, 316}, {52, 1565}, {1565, 1296}, {1565, 316}, {1650, 1565}, {1296, 138}, {1565, 138}, {1565 , 711}, {138, 1650}, {711, 138}, {138, 144}, {144, 1860}, {1296, 1860}, {1860, 52}, {711, 1639}}]

उत्पादन

6

thanx @Kelly लोअर -10 बाइट्स के लिए


23
बेशक मैथेमेटिका के पास इसके लिए एक बिलिन है।
आउटगॉल्फ

1
के साथ 10 बाइट्स बंद शेवTr[1^#&@@FindClique[#<->#2&@@@#]]&
केली Lowder


6

जेली , 20 बाइट्स

ŒPẎ€µQL’=ċЀ`ẠµÐfṪQL

इसे ऑनलाइन आज़माएं!

बेशक यह लाख के लायक नहीं है: पी

अगर µ(...)µऔर 2-बाइट के लिए नहीं, तो यह पाइथ को हरा देता Ðf


गजब का। मैं भी अब हार मान सकता हूं।
मार्क थॉमस

@ फेलिक्सप्लमेन ब्रूट फोर्स: पी
एरिक आउटगोल्फर

@EriktheOutgolfer का मतलब कोड के रनटाइम से नहीं था;)
फेलिक्स पाम्स

@FelixPalmen मेरा मतलब है, जानवर बल दृष्टिकोण बहुत सोच की जरूरत नहीं है: पी
एरिक आउटोलॉफ़र

सबसे बड़े टेस्ट-केस के साथ मेमोरी मेमोरी देता है :( बेशक अभी भी मान्य है, यह एक "तकनीकी सीमा" है - लेकिन सिर्फ जिज्ञासा से बाहर, जेली के साथ उपलब्ध संसाधनों को बढ़ाने का एक तरीका है?
फेलिक्स पैलमेन

3

जे , 36 बाइट्स

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#

इसे ऑनलाइन आज़माएं!

समय O (2 n ) में चलता है जहां n जोड़े की संख्या है।

65 बाइट्स के लिए एक तेज़ समाधान है

3 :'$>{._2{~.@((+.&(e.&y)&<|.)@(-.,-.~)&>/#&,/:~@~.@,&.>/)~^:a:y'

इसे ऑनलाइन आज़माएं!

व्याख्या

[:>./](#(]*[=2!])#@~.@,)@#~2#:@i.@^#  Input: list of pairs
                                   #  Length
                           2      ^   2^n
                               i.@    Range [0, 2^n)
                            #:@       Binary
                         #~           Copy
      (                )@             For each
                      ,                 Flatten
                   ~.@                  Unique
                 #@                     Length
        (       )                       Dyad with RHS at previous and LHS as next
               ]                          Get RHS
             2!                           Binomial coefficient, choose 2
            =                             Equals
           [                              Get LHS
          *                               Times
         ]                                Get RHS
       #                                Length
[:>./                                 Reduce using maximum


2

पायथन 2 , 180 बाइट्स

G=input()
m=0
L=len
for i in range(2**L(G)):
 u=[];p=sum([G[j]for j in range(L(G))if 2**j&i],u)
 for j in p:u+=[j][j in u:]
 m=max(m,L(u)*all(p.count(j)==L(u)-1for j in u))
print m

इसे ऑनलाइन आज़माएं!

-2 शुकी के लिए धन्यवाद ।
-1 श्री एक्सकोडर का धन्यवाद ।
-3 पुनरावर्ती के लिए धन्यवाद ।


आप lenएक चर
shooqie

183 बाइट्स(x not in y)का मतलब है 0**(x in y)
श्री Xcoder

@ Mr.Xcoder मुझे पता था कि इसे छोटा करने का एक तरीका था! धन्यवाद!
एरिक आउटगोल्फर

मैंने पहले कभी इसका इस्तेमाल नहीं किया है, बस एक चाल है जिसने कुछ दिनों पहले मेरे दिमाग को पार कर दिया था लेकिन अभी तक इसका उपयोग नहीं किया जा सका है।
श्री Xcoder

@ Mr.Xcoder कोई फर्क नहीं पड़ता, अगर यह काम करता है तो क्यों नहीं? : D BTW आप के 0**साथ भी बदल सकते हैं -~-
आउटगोल्फर

1

पायथ, 28 बाइट्स

l{sSef<T.{SMQm.{ft{T.Cd2yS{s

इसे ऑनलाइन आज़माएं

व्याख्या

l{sSef<T.{SMQm.{ft{T.Cd2yS{s
                         S{sQ  Get the distinct nodes in the (implicit) input.
                        y      Take every subset.
             m      .Cd2       Get the pairs...
                ft{T           ... without the [x, x] pairs...
              .{               ... as sets.
     f<T                        Choose the ones...
        .{  Q                   ... which are subsets of the input...
          SM                    ... with edges in sorted order.
    e                           Take the last element (largest clique).
l{sS                            Get the number of distinct nodes.

1

पायथन 3 , 162 159 बाइट्स

lambda x,f=lambda x:{i for s in x for i in s}:len(f(x))if all([(y,z)in x or(z,y)in x for y in f(x)for z in f(x)if y<z])else max(c(x.difference({y}))for y in x)

इसे ऑनलाइन आज़माएं!

फंक्शन c, सॉर्ट किए गए ट्यूपल्स के सेट ({(x, y), ...} जहाँ x y से कम है) के रूप में वर्टिकल लेता है । एक प्रविष्टि जिसे "प्रविष्टि" कहा जाता है TIO हैडर में अनसोल्ड लिस्ट प्रारूप की सूची में डेटा के साथ परीक्षण करने के लिए है । यदि क्लिच, लंबाई लौटाता है। यदि क्लिच नहीं है, तो अधिकतम क्लिच साइज़ का वर्टिकल देता है, माइनस के प्रत्येक सिरों के लिए एक वर्टीकल माइनस। टीआईओ में अंतिम परीक्षा के मामले में समय से अधिक

अद्यतन: "या (z, y) x" भाग में क्रमबद्धता पर निर्भरता को दूर करने के लिए जोड़ा गया "f = lambda x: {i for s in x for i for s}" के बजाय सेट में इटर्टुलसैचिन लपेटा।

-मिनस 3 बाइट्स @ जोनाथन एलन को धन्यवाद



एक तरफ - आपको नाम की आवश्यकता नहीं है c, इसलिए निकाल सकते हैं c=(आपको c=\हेडर के अंत में डालने और lambdaTIO के लिए कोड ब्लॉक के शीर्ष पर रखने की आवश्यकता होगी )
जोनाथन एलन

इसके अलावा, आपs कुछ स्थानों को हटाने की अनुमति के s(...)साथ छुटकारा और बदल सकते हैं{*...}
जोनाथन एलन

1
@JonathanAllan धन्यवाद, क्रमबद्धता तय
कॉनर जॉनसन


1

जेली , 28 बाइट्स

œ^e³;U¤
Œcç/Ðfœ|Ṣ¥/€QµÐĿ-ịḢL

इसे ऑनलाइन आज़माएं!

तेजी से समाधान जो TIO पर एक सेकंड में अंतिम परीक्षण मामले को हल करने में सक्षम है।


और इसमें क्या जटिलता है? यदि यह O (2ⁿ) से कुछ कम है तो यह $ 1,000,000 का हकदार है।
को आउटगोल्फर एरिक

1
@EriktheOutgolfer, आप गलत हैं, ऐसे एल्गोरिदम हैं जिनमें O (1.1888ⁿ) रनटाइम है।
rus9384

एक मिलियन के लायक होने के लिए, nकेवल आधारों में दिखाई दे सकता है :)
फेलिक्स पाम्स

@ फेलिक्सप्लमेन, या यह टी नहीं कर सकता। वैसे भी, दो में से एक बयान के लिए साबित होना चाहिए।
rus9384

1
मेरा मानना ​​है कि यह O (1.414 ^ n) है। जब इनपुट एक पूर्ण ग्राफ़ होता है, तो आप बदतर प्रदर्शन देख सकते हैं।
मील

1

जावा + अमरूद 23.0, 35 + 294 = 329 बाइट्स

import com.google.common.collect.*;
a->{int l=0,o=1,c,z=a.size();for(;o>0&l<z;){o=0;c:for(Iterable<int[]>s:Sets.combinations(a,l*(l+1)/2)){Multiset<Integer>m=TreeMultiset.create();for(int[]x:s){m.add(x[0]);m.add(x[1]);}c=m.elementSet().size();for(int e:m.elementSet())if (m.count(e)!=c-1)continue c;l+=o=1;break;}}return z<3?2:l;}

यह एल्गोरिदम रेखांकन नहीं कर रहा है, बल्कि एक विशिष्ट आकार के जोड़े के सभी संयोजनों को उत्पन्न कर रहा है। मैं सभी जोड़ी-संयोजनों को एक मल्टीसेट में फ़ीड करता हूं और जांचता हूं कि उन सभी के पास अपेक्षित आकार (अद्वितीय प्रविष्टियों की संख्या - 1) है। यदि वे करते हैं, तो मुझे एक ताली मिली और मैं एक बड़े की तलाश करता हूं।

अमरूद पुस्तकालय से, मैं नई combinationsविधि, और उपकरण-संग्रह-प्रकार का उपयोग करता हूं Multiset

Ungolfed

import com.google.common.collect.*;
import java.util.function.*;

public class Main {

  public static void main(String[] args) {
    ToIntFunction<java.util.Set<int[]>> f
        = a -> {
          int l = 0, o = 1, c, z = a.size();
          for (; o > 0 & l < z;) {
            o = 0;
            c:
            for (Iterable<int[]> s : Sets.combinations(a, l * (l + 1) / 2)) {
              Multiset<Integer> m = TreeMultiset.create();
              for (int[] x : s) {
                m.add(x[0]);
                m.add(x[1]);
              }
              c = m.elementSet().size();
              for (int e : m.elementSet()) {
                if (m.count(e) != c - 1) {
                  continue c;
                }
              }
              l += o = 1;
              break;
            }
          }
          return z < 3 ? 2 : l;
        };
    int[][][] tests = {
      {{1, 2}},
      {{1, 2}, {3, 1}, {3, 4}},
      {{1, 2}, {2, 5}, {1, 5}},
      {{2, 5}, {2, 3}, {4, 17}, {1, 3}, {7, 13}, {5, 3}, {4, 3}, {4, 1}, {1, 5}, {5, 4}},
      {{15, 1073}, {23, 764}, {23, 1073}, {12, 47}, {47, 15}, {1073, 764}},
      {{1296, 316}, {1650, 316}, {1296, 1650}, {1296, 52}, {1650, 711}, {711, 316}, {1650, 52}, {52, 711}, {1296, 711}, {52, 316}, {52, 1565}, {1565, 1296}, {1565, 316}, {1650, 1565}, {1296, 138}, {1565, 138}, {1565, 711}, {138, 1650}, {711, 138}, {138, 144}, {144, 1860}, {1296, 1860}, {1860, 52}, {711, 1639}}
    };
    for (int[][] test : tests) {
      java.util.Set<int[]> s = new java.util.HashSet<int[]>();
      for (int[] t : test) {
        s.add(t);
      }
      System.out.println(f.applyAsInt(s));
    }
  }
}

मुझे बहुत आश्चर्य होगा, मनमाने ढंग से रेखांकन में अधिकतम क्लोन ढूंढना - लेकिन मुझे इस कोड का विश्लेषण करने में थोड़ा समय लगेगा, मैं जावा से बहुत परिचित नहीं हूँ :)
फेलिक्स पालमेन

@ फेलिक्सप्लमेन मुझे यह चुनौती पसंद थी इसलिए मेरा जवाब कोई बात नहीं रहेगा, लेकिन मैं "-1" को हटाने के साथ पूरी तरह से ठीक हूं अगर यह एक बहुपद नहीं है। तब मुझे शायद कुछ किताबों की समीक्षा करनी चाहिए: पी
ओलिवियर ग्रेजायर

" आकार xका संयोजन बहुपद है " <- क्या आप सुनिश्चित हैं? मुझे लगता है कि इस विधि का इस्तेमाल किया है । रिटर्न वैल्यू AbstractSetएक इटरेटर के साथ है, और निम्न forलूप इस x!
पुनरावृत्ति

सुधार: जब तक x < n( nइनपुट सेट का पूरा आकार होने के साथ ), यह n!/(x!(n-x)!), अभी भी बहुपद नहीं है :)
फेलिक्स पाम्स

@FelixPalmen आप सबसे अधिक संभावना सही हैं। इसके अलावा, क्या आप कह रहे हैं कि अगर मैं ऐसा combinationsतरीका बनाऊं X^n(जो पूरी तरह से संभव हो), मैं इसे प्राप्त कर सकता हूं? इस बीच, मैं "-1" के अपने दावे को हटा देता हूं।
ओलिवियर ग्रेगोइरे


0

6502 मशीन कोड (C64), 774 703 बाइट्स

(मुझे बस यही करना था , मेरी C64 सब कुछ कर सकती है ... hehe)

hexdump:

00 C0 A9 00 A2 08 9D 08 00 CA 10 FA A2 04 9D FB 00 CA 10 FA 20 54 C0 B0 20 AD 
C9 C2 AE CA C2 20 92 C1 B0 31 8D 31 C0 AD CB C2 AE CC C2 20 92 C1 B0 23 A2 FF 
20 FE C1 90 DB 20 6A C2 20 C1 C1 B0 05 20 6A C2 50 F6 A5 FB 8D D3 C2 20 43 C1 
A9 CD A0 C2 20 1E AB 60 A2 00 86 CC 8E 61 C0 20 E4 FF F0 FB A2 FF C9 0D F0 10 
E0 0B 10 0C 9D BD C2 20 D2 FF E8 8E 61 C0 D0 E5 C6 CC A9 20 20 D2 FF A9 0D 20 
D2 FF A9 00 9D BD C2 AA BD BD C2 F0 5C C9 30 30 0E C9 3A 10 0A 9D CD C2 E8 E0 
06 F0 4C D0 E9 C9 20 D0 46 A9 00 9D CD C2 E8 8E BC C0 20 EB C0 AD D3 C2 8D C9 
C2 AD D4 C2 8D CA C2 A2 FF A0 00 BD BD C2 F0 0F C9 30 30 21 C9 3A 10 1D 99 CD 
C2 C8 E8 D0 EC A9 00 99 CD C2 20 EB C0 AD D3 C2 8D CB C2 AD D4 C2 8D CC C2 18 
60 38 60 A2 FF E8 BD CD C2 D0 FA A0 06 88 CA 30 0A BD CD C2 29 0F 99 CD C2 10 
F2 A9 00 99 CD C2 88 10 F8 A9 00 8D D3 C2 8D D4 C2 A2 10 A0 7B 18 B9 53 C2 90 
02 09 10 4A 99 53 C2 C8 10 F2 6E D4 C2 6E D3 C2 CA D0 01 60 A0 04 B9 CE C2 C9 
08 30 05 E9 03 99 CE C2 88 10 F1 30 D2 A2 06 A9 00 9D CC C2 CA D0 FA A2 08 A0 
04 B9 CE C2 C9 05 30 05 69 02 99 CE C2 88 10 F1 A0 04 0E D3 C2 B9 CE C2 2A C9 
10 29 0F 99 CE C2 88 10 F2 CA D0 D9 C8 B9 CD C2 F0 FA 09 30 9D CD C2 E8 C8 C0 
06 F0 05 B9 CD C2 90 F0 A9 00 9D CD C2 60 85 0A A4 09 C0 00 F0 11 88 B9 D5 C2 
C5 0A D0 F4 8A D9 D5 C3 D0 EE 98 18 60 A4 09 E6 09 D0 01 60 A5 0A 99 D5 C2 8A 
99 D5 C3 98 99 D5 C4 18 60 A6 0B E4 09 30 01 60 BD D5 C5 C5 0B 30 09 A9 00 9D 
D5 C5 E6 0B D0 E9 A8 FE D5 C5 8A 29 01 D0 02 A0 00 BD D5 C4 59 D5 C4 9D D5 C4 
59 D5 C4 99 D5 C4 5D D5 C4 9D D5 C4 A9 00 85 0B 18 60 A8 A5 0C D0 08 A9 20 C5 
0D F0 21 A5 0C 8D 1E C2 8D 21 C2 A5 0D 09 60 8D 1F C2 49 E0 8D 22 C2 8C FF FF 
8E FF FF E6 0C D0 02 E6 0D 18 60 86 0E 84 0F A5 0D 09 60 8D 54 C2 49 E0 8D 5F 
C2 A6 0C CA E0 FF D0 10 AC 54 C2 88 C0 60 10 02 18 60 8C 54 C2 CE 5F C2 BD 00 
FF C5 0E F0 04 C5 0F D0 E0 BD 00 FF C5 0E F0 04 C5 0F D0 D5 38 60 A2 00 86 FC 
86 FD 86 FE BD D5 C4 A8 A6 FE E4 FC 10 11 BD D5 C7 AA 20 2B C2 90 14 E6 FE A6 
FE E4 FC D0 EF A6 FD BD D5 C4 A6 FC E6 FC 9D D5 C7 E6 FD A6 FD E4 09 D0 16 A6 
FB E4 FC 10 0F A2 00 BD D5 C7 9D D5 C6 E8 E4 FC D0 F5 86 FB 60 A0 00 84 FE F0 
B5

ऑनलाइन डेमो

उपयोग: इसके साथ शुरू करें sys49152, फिर जोड़े को प्रति पंक्ति एक जैसे दर्ज करें

15 1073
23 764
23 1073
12 47
47 15
1073 764

बैकस्पेस नहीं है इनपुट के दौरान नियंत्रित किया जाता है (लेकिन यदि आप उपयोग करते हैं vice, तो अपने इनपुट को एमुलेटर में कॉपी और पेस्ट करें)। गणना शुरू करने के लिए एक खाली लाइन दर्ज करें।

यह यहाँ व्याख्यात्मक डिसैसफॉर्म लिस्टिंग को पोस्ट करने के लिए बहुत बड़ा है, लेकिन आप ca65- शैली असेंबली स्रोत ब्राउज़ कर सकते हैं । एल्गोरिथ्म बहुत अकुशल है, यह नोड्स के हर संभव क्रमांकन को उत्पन्न करता है और इनमें से प्रत्येक के साथ सभी किनारों की जांच करके एक लालच का निर्माण होता है। यह O (n) की अंतरिक्ष दक्षता के लिए अनुमति देता है ( इस छोटी सी रैम के साथ मशीन पर महत्वपूर्ण), लेकिन भयानक रनटाइम दक्षता (*) है । सैद्धांतिक सीमाएं 256 नोड तक और 8192 किनारों तक हैं।

  • -71 बाइट्स: किनारों और ज़ेरोपेज उपयोग की जाँच के लिए अनुकूलित दिनचर्या

बेहतर सुविधाओं के साथ एक बड़ा ( 883 805 बाइट्स) संस्करण है:

  • गणना के दौरान दृश्य प्रतिक्रिया (नोड का प्रत्येक क्रमांकन सीमा रंग बदलता है)
  • अंतरिक्ष के संरक्षण के लिए रोम द्वारा "छिपी" में किनारों को स्टोर करने के लिए बैंक स्विचिंग का उपयोग करता है
  • अधिकतम आकार के नोड्स के आकार और नोड को मिला

ऑनलाइन डेमो

स्रोत ब्राउज़ करें


(*) अंतिम परीक्षण का मामला 12 और 20 घंटों के बीच कुछ लेता है (मैं अंत में समाप्त होने पर सो रहा था)। अन्य परीक्षण के मामले कुछ मिनटों के भीतर सबसे खराब हो जाते हैं।

अंतिम परीक्षण मामले का स्क्रीनशॉट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.