গ্রাফ 5-রঙ


14

সত্যি বলতে, আমি বিশ্বাস করতে পারি না এটি ইতিমধ্যে জিজ্ঞাসা করা হয়নি, তবে এটি এখানে

পটভূমি

একটি সাধারণ অনির্দেশিত দেওয়া হয়েছে প্ল্যানার দেওয়া (গ্রাফিকটি ছেদ ছাড়াই বিমানে আঁকতে পারে) দেওয়া, এটি একটি প্রমাণিত উপপাদ্য যে গ্রাফটি 4-সমৃদ্ধ, একটি শব্দ যা আমরা কিছুটা ঘুরে দেখব। যাইহোক, এটি একটি গ্রাফটি 5-রঙ করা আরও সহজ, যা আমরা আজকে আমাদের চ্যালেঞ্জকে ফোকাস করব।

গ্রাফের একটি বৈধ কে-কালারিং হ'ল নিম্নোক্ত বৈশিষ্ট্য সহ গ্রাফের নোডগুলিতে "রঙ" এর একটি অ্যাসাইনমেন্ট

  1. যদি দুটি নোড একটি প্রান্ত দ্বারা সংযুক্ত থাকে তবে নোডগুলি বিভিন্ন রঙের সাথে রঙিন হয়।
  2. গ্রাফ জুড়ে সর্বাধিক 5 টি রঙ রয়েছে।

এটি দেওয়া, আমি আপনার কাছে একটি সাধারণ প্রাথমিক অ্যালগরিদম 5-রঙের যে কোনও সাধারণ অনির্দেশিত প্ল্যানার গ্রাফ উপস্থাপন করব। এই অ্যালগরিদমের নিম্নলিখিত সংজ্ঞা রয়েছে requires

পুনঃব্যবহারযোগ্যতা : নোড 1 নোড 2 থেকে যদি পৌঁছতে পারে তবে এর অর্থ হ'ল নোডগুলির ক্রম রয়েছে, প্রতিটি একটি পরবর্তী প্রান্তের সাথে সংযুক্ত, যেমন প্রথম নোড নোড 2 এবং শেষটি নোড 1 নোট করুন যেহেতু পুনর্নির্দেশিত গ্রাফগুলি প্রতিসম হয়, নোড 1 নোড 2 থেকে পৌঁছনীয় হলে নোড 1 নোড 1 থেকে পৌঁছনীয়।

উপগ্রাফ : নোডের প্রদত্ত সংকলনের গ্রাফের একটি উপগ্রহ একটি গ্রাফ যেখানে সাবগ্রাফের নোডগুলি সমস্ত N এ থাকে এবং মূল গ্রাফের একটি প্রান্তটি যদি অনুচ্ছেদে থাকে এবং কেবল যদি উভয় নোড প্রান্ত দ্বারা সংযুক্ত থাকে তবে এন এ আছে

কালার (এন) 5 টি রঙযুক্ত এন নোডের সাথে প্ল্যানার গ্রাফগুলি রঙ করার জন্য একটি ফাংশন হোক। আমরা নীচে ফাংশন সংজ্ঞায়িত

  1. এর সাথে সংযুক্ত নূন্যতম সংখ্যার সাথে নোডটি সন্ধান করুন। এই নোডটির সাথে সর্বাধিক 5 টি নোড সংযুক্ত থাকবে।
  2. গ্রাফ থেকে এই নোড সরান।
  3. এটিকে রঙ করার জন্য এই নতুন গ্রাফে কল রঙ (এন -১)।
  4. মুছে ফেলা নোডটি গ্রাফের পিছনে যুক্ত করুন।
  5. যদি সম্ভব হয় তবে যুক্ত নোডটিকে এমন কোনও রঙ করুন যা এর সাথে সংযুক্ত নোডের কোনওটিই নেই।
  6. যদি সম্ভব না হয় তবে সংযুক্ত নোডের সমস্ত 5 প্রতিবেশী নোডের 5 টি ভিন্ন রঙ রয়েছে, সুতরাং আমাদের অবশ্যই নিম্নলিখিত প্রক্রিয়াটি চেষ্টা করতে হবে।
  7. যোগ করা নোড n1 ... n5 এর চারপাশে নোডগুলির সংখ্যা দিন
  8. মূল গ্রাফের সমস্ত নোডের সাবগ্রাফটিকে এন 1 বা এন 3 এর মতো রঙিন হিসাবে বিবেচনা করুন।
  9. এই অনুচ্ছেদে যদি এন 1 এন এন থেকে পৌঁছনীয় না হয়, এন 1 (এন 1 সহ) থেকে আগত নোডগুলির সেটগুলিতে, এন 1 এর রঙের সমস্ত উপস্থিতিগুলিকে এন 3 এর এবং এর বিপরীতে প্রতিস্থাপন করুন। এখন যুক্ত নোড এন 1 এর মূল রঙটি রঙ করুন।
  10. এই নতুন গ্রাফটিতে যদি এন 3 এন 1 থেকে পৌঁছনীয় হয় তবে এন 1 এবং এন 3 এর পরিবর্তে নোডগুলি এন 2 এবং এন 4 এ পদক্ষেপ 9 থেকে করুন।

চ্যালেঞ্জ

একটি এজলিস্টের একটি ইনপুট দেওয়া (একটি গ্রাফ প্রতিনিধিত্ব করে), প্রতিটি নোডকে একটি মান নির্ধারণ করে গ্রাফটি রঙ করুন।

ইনপুট : গ্রাফের প্রান্তগুলির একটি তালিকা (যেমন, [('a','b'),('b','c')...])

নোট করুন যে ইনপুট প্রান্ত তালিকাটি এমন হবে যে যদি (ক, খ) তালিকায় থাকে তবে (খ, ক) তালিকায় নেই।

আউটপুট : মানগুলির জোড়া যুক্ত একটি বস্তু, যেখানে প্রতিটি জোড়ের প্রথম উপাদানটি একটি নোড এবং দ্বিতীয়টি এর রঙ, অর্থাত্, [('a',1),('b',2)...]বা{'a':1,'b':2,...}

আপনি রং, সংখ্যা থেকে অক্ষর, অন্য যে কোনও কিছু উপস্থাপন করতে ব্যবহার করতে পারেন anything

ইনপুট এবং আউটপুটটি বেশ নমনীয়, যতক্ষণ না ইনপুট এবং আউটপুটগুলি কী তা সম্পূর্ণ পরিষ্কার।

বিধি

  • এটি একটি চ্যালেঞ্জ
  • উপরে বর্ণিত অ্যালগরিদমটি আপনাকে ব্যবহার করতে হবে না। এটি কেবল রেফারেন্সের জন্য রয়েছে।
  • যে কোনও গ্রাফের জন্য প্রায়শই তাদের রঙ করার অনেকগুলি বৈধ পদ্ধতি রয়েছে। যতক্ষণ না আপনার উত্পাদিত অ্যালগরিদম কালারিং বৈধ, ততক্ষণ তা গ্রহণযোগ্য।
  • মনে রাখবেন যে গ্রাফটি অবশ্যই 5 রঙিন হওয়া উচিত।

পরীক্ষার কেস

আপনার রঙিন ফলাফলের বৈধতা পরীক্ষা করতে নিম্নলিখিত কোডটি ব্যবহার করুন । প্রতি গ্রাফে অনেকগুলি বৈধ গ্রাফের বর্ণ রয়েছে, এই অ্যালগরিদমটি কেবল রঙের বৈধতা পরীক্ষা করে। কোডটি কীভাবে ব্যবহার করবেন তা দেখতে ডকাস্ট্রিং দেখুন।

কিছু এলোমেলো (এবং বরং নির্বোধ) পরীক্ষার কেস :

পরীক্ষার কেস 2: ক্র্যাকার্ড্ট ঘুড়ি গ্রাফ [(0, 1), (0, 2), (0, 3), (0, 5), (1, 3), (1, 4), (1, 6), (2, 3), (2, 5), (3, 4), (3, 5), (3, 6), (4, 6), (5, 6), (5, 7), (6, 7), (7, 8), (8, 9)]

একটি বৈধ আউটপুট: {0: 4, 1: 3, 2: 3, 3: 2, 4: 4, 5: 1, 6: 0, 7: 4, 8: 3, 9: 4}

বিঃদ্রঃ : রঙিন অ্যালগরিদমের আরও সংখ্যক আচরণের পরীক্ষা করার জন্য এই পরীক্ষাগুলি খুব ছোট, সুতরাং আপনার নিজের গ্রাফগুলি তৈরি করা সম্ভবত আপনার কাজের বৈধতার একটি ভাল পরীক্ষা।

দ্রষ্টব্য 2 : আমি কোডের আরও একটি অংশ যুক্ত করব যা শীঘ্রই আপনার রঙিন সমাধানটি গ্রাফ করবে।

দ্রষ্টব্য 3 : আমি উপস্থাপন করা হয়েছে যে এলোমেলো রঙিন অ্যালগরিদমগুলিকে ছেড়ে দিতে পারি নি, এটিই পিপিসিজি সম্পর্কে এত দুর্দান্ত! তবে, যদি কেউ আরও নির্দ্বিধায়নের অ্যালগরিদম গল্ফ করতে পারে তবে তা খুব সুন্দর হবে।


3
পিটারসেন এবং চ্যাভাল গ্রাফ ননপ্ল্যানার না?
ক্রপ্পেব

1
@ নিক হার্টলি সংলগ্ন ম্যাট্রিকগুলিতে কার্যকর ট্রান্সপোজ বেসড অপারেশন রয়েছে যা গ্রাফগুলিকে কার্যকরভাবে রঙ করে। আমি একটি পেপার পেলে সংযুক্ত করব।
ডন হাজার হাজার

1
আমি মনে করি আপনার মনে মনে হচ্ছে এমন গ্রাফ অ্যালগরিদমগুলি সমাধান করার জন্য সমাধানকে বাধ্য করার জন্য আপনি বহুবর্ষের সময় সমাধানগুলিকে সীমাবদ্ধ করা বা কোনও বৃহত পরীক্ষার কেস সাফল্যের সাথে চালানোর প্রয়োজনের চেয়ে আরও ভাল।
xnor

2
@ এক্সনোর আমি আমার পাঠ শিখেছি বলে মনে হচ্ছে। ঠিক আছে! বাক্সের বাইরে চিন্তা করে পুরস্কৃত করা উচিত, দন্ডিত নয়।
ডন হাজার হাজার

1
হ্যাঁ, আমি জানি, তবে একটি 4-বর্ণযুক্ত প্রশ্নটি এমনভাবে ডিজাইন করা উচিত যাতে লোকেরা কেবল এই প্রশ্নের উত্তর নিতে পারে না, পরিবর্তন 5করতে পারে 4এবং তাদের আবার জমা দিতে পারে না।
পিটার টেলর

উত্তর:


6

পাইথন 2 , 96 বাইট

i=0
g=input()
while 1:i+=1;c={k:i/4**k%4for k in sum(g,())};all(c[s]^c[t]for s,t in g)>0<exit(c)

এটি অনলাইন চেষ্টা করুন!

giccc একটি বৈধ রং হয়।

ইনপুটটি প্ল্যানার, সুতরাং একটি 4-বর্ণ খুঁজে পাওয়া সর্বদা সম্ভব possible

(এইভাবে: এটি একটি অর্থে শব্দকোষের দিক থেকে প্রথম দিকের রঙের সন্ধান করে এবং এটি খুব অদক্ষভাবে কার্যকর করে))

kআমি4গেলিক ভাষার4আমি


দুর্দান্ত চেষ্টা, তবে আমি বিশ্বাস করি যে আপনি একটি উপাদান হারিয়েছেন। একটি নোড 5 টি বিভিন্ন রঙ দ্বারা বেষ্টিত ক্ষেত্রে কী হবে?
ডন হাজার হাজার

এটি ভাঙতে আমি একটি পরীক্ষার কেস তৈরির চেষ্টা করব
ডন হাজার হাজার

মনে করুন যে আপনার গ্রাফের একটি প্রদত্ত নোড 5 টি অন্যান্য নোড দ্বারা বেষ্টিত রয়েছে, যা আপনি ইতিমধ্যে অনুমোদিত 5 টি রঙিন রঙ করেছেন।
ডন হাজার হাজার

1
আমার কোড এলোমেলোভাবে গ্রাফের বর্ণগুলি উত্পন্ন করে এবং এটি সঠিক গ্রাফ রঙ তৈরি না করা পর্যন্ত এগুলি পরীক্ষা করে , যা এটি প্রস্থান করার পরে মুদ্রণ করে। ক্ষেত্রে আপনি বর্ণনা করেছেন যে এটি আবার শুরু হবে এবং আশা করা যায় যে এই 5 টি নোডের সমস্ত 5 টি উপলভ্য রঙ নয়।
লিন

2
এখন এটি লেক্সিকোগ্রাফিক ক্রমে সমস্ত রঙ চেক করে :) তাই এটি নির্জ্ঞানী এবং ও (5 ^ n) তবে বেশিরভাগ ইনপুটগুলির জন্য অনেক ধীর।
লিন

3

জাভাস্ক্রিপ্ট (ES7), 80 76 74 বাইট

সংরক্ষিত 2 বাইট @ নীলকে ধন্যবাদ

লিন হিসাবে একই পন্থা । 4 টি রঙে দ্রবীভূত হয়, 0 থেকে 3 পর্যন্ত সংখ্যাযুক্ত ।

a=>{for(x=0;a.some(a=>a.map(n=>z=c[n]=x>>n*2&3)[0]==z,c={});x++);return c}

এটি অনলাইন চেষ্টা করুন!


আপনি যদি 4-বর্ণের অনুমতি পেয়ে থাকেন তবে তা কেন নয় x>>n+n&3?
নিল

@ নীল আহ্ হ্যাঁ, ধন্যবাদ আমি 5-বর্ণের বর্ণনার দ্বারা বিভ্রান্ত হয়ে পড়েছিলাম এবং ভুলে গিয়েছিলাম যে ইনপুটটি 4 এ দ্রষ্টাব্য হওয়ার গ্যারান্টিযুক্ত ছিল
আর্নল্ড

3

ব্র্যাচল্যাগ , 38 বাইট

cd{∧4>ℕ}ᶻ.g;?z{tT&h⊇ĊzZhpT∧Zt≠}ᵐ∧.tᵐ≜∧

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

Example input: [["a","b"],["c","b"]]

cd                                       Concatenate and remove duplicates: ["a","b","c"]
  {∧4>ℕ}ᶻ.                               The output is this list zipped zith integers that
                                           are in [0..4]: [["a",I],["b",J],["c",K]]
         .g;?z                           Zip the output with the input:
                                           [[[["a",I],["b",J],["c",K]],["a","b"]],[["a",I],["b",J],["c",K]],["c","b"]]
              {               }ᵐ∧        Map for each element
               tT                        Call T the couple of nodes denoting an edge
                 &h⊇Ċ                    Take a subset of 2 elements in the head
                     zZ                  Zip and call it Z
                      ZhpT               The nodes in Z are T up to a permutation
                          ∧Zt≠           The integers in Z are all different color
                                 .tᵐ≜∧   Label the integers (i.e. colors) in the output so that
                                           it matches the set constraints

1

পাইথন 2 , 211 বাইট

def f(g):
 g={k:[(a,b)[a==k]for a,b in g if k in(a,b)]for k in sum(g,())};c={k:0 for k in g}
 for a,b in sorted(g.iteritems(),key=lambda a:len(a[1])):c={k:(c[k],c[k]+1)[c[a]==c[k]and k in b]for k in c}
 return c

এটি অনলাইন চেষ্টা করুন!

নির্ণায়ক! সম্ভবত আরও জটিল পরীক্ষার ক্ষেত্রে ব্যর্থ হতে পারে তবে এটি ব্যর্থ হয়েছে এমন একটি গ্রাফ খুঁজে পেতে আমি খুব বেশি পোড়া আছি। আরও পরীক্ষার মামলা এবং সমালোচনা স্বাগত!



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.