এলোমেলোভাবে একটি গ্রিডে নির্দেশিত গ্রাফ তৈরি করুন


11

আমি পোকেমন থেকে আইস স্লাইডিং ধাঁধাগুলির অনুরূপ ধাঁধা গেমটি তৈরি করার উদ্দেশ্যে এলোমেলোভাবে একটি নির্দেশিত গ্রাফ উত্পন্ন করার চেষ্টা করছি।
এটি মূলত যা আমি এলোমেলোভাবে উত্পন্ন করতে সক্ষম হতে চাই তা হল: http://ulbanews.ulbagarden.net/wiki/Crunching_the_numbers : _ গ্রাফ_ থিওরি

আমার গ্রাফের আকারটি x এবং y মাত্রায় সীমাবদ্ধ করতে সক্ষম হতে হবে। লিঙ্কে দেওয়া উদাহরণে এটি 8x4 গ্রিডের মধ্যে সীমাবদ্ধ থাকবে।
আমি যে সমস্যাটি চালাচ্ছি তা এলোমেলোভাবে গ্রাফ তৈরি করছে না, তবে এলোমেলোভাবে একটি গ্রাফ উত্পন্ন করছে, যা আমি 2 ডি স্পেসে যথাযথভাবে ম্যাপ করতে পারি, যেহেতু নোডের বিপরীত দিকে আমার কিছু (শিলাের মতো) দরকার, এটি তৈরি করার জন্য আপনি স্লাইডিং বন্ধ যখন দর্শনীয়ভাবে বুঝতে। এর সাথে সমস্যাটি হ'ল কখনও কখনও শিলা দুটি অন্য নোডের মধ্যে বা সম্ভবত অন্য নোডের মধ্যে দিয়ে শেষ হয়, যার ফলে পুরো গ্রাফটি ভেঙে যায়।

আমার পরিচিত কয়েকজন লোকের সাথে সমস্যাটি আলোচনা করার পরে, আমরা কয়েকটি সিদ্ধান্তে পৌঁছেছি যা সমাধানের দিকে নিয়ে যেতে পারে।

  • গ্রাফটি নির্মাণের সময় অংশ হিসাবে বাধা অন্তর্ভুক্ত।
  • সম্পূর্ণ ভরাট গ্রিড দিয়ে শুরু করুন এবং কেবল একটি এলোমেলো পথ আঁকুন এবং সেই পথটিকে কাজ করে তোলে এমন ব্লকগুলি মুছুন।

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

আমি এলোমেলোভাবে ব্লক স্থাপন করে এবং বাছাই করা শুরু / সমাপ্তি থেকে নেভিগেশন গ্রাফ তৈরি করে এখন পর্যন্ত আমি কী অর্জন করেছি তার কয়েকটি উদাহরণ এখানে রয়েছে। ধারণাটি (পূর্ববর্তী লিঙ্কে বর্ণিত) আপনি সবুজ এস থেকে শুরু করে সবুজ এফ এ যেতে চান You আপনি এটি উপরে / নীচে / বাম / ডান দিকে সরানো দ্বারা করেন এবং আপনি যতক্ষণ না আঘাত হেন ততক্ষণ আপনি নির্বাচিত দিকে অগ্রসর হন প্রাচীর। এই ছবিগুলিতে, ধূসর একটি প্রাচীর, সাদা তল এবং বেগুনি লাইনটি শুরু থেকে শেষের সর্বনিম্ন দৈর্ঘ্য এবং কালো লাইন এবং ধূসর বিন্দুগুলি সম্ভাব্য পাথের প্রতিনিধিত্ব করে।

এলোমেলোভাবে উত্পন্ন গ্রাফগুলির কিছু খারাপ উদাহরণ এখানে দেওয়া হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

এলোমেলোভাবে উত্পাদিত (বা হাতে টিকযুক্ত) গ্রাফের কয়েকটি ভাল উদাহরণ এখানে রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

আমি আরও বেশি চ্যালেঞ্জের বিষয়গুলি লক্ষ্য করেছি বলে মনে হয়েছে যখন এটি আসলে ধাঁধা হিসাবে খেলে নূন্যতম পথে বরাবর প্রচুর উচ্চ ডিগ্রি নোড থাকে ones


1
আপনি শিলাগুলির একটি সম্পূর্ণ এলোমেলো সেট তৈরি করতে পারেন, তারপরে অনুরূপ গ্রাফের কোনও সমাধান রয়েছে কিনা তা পরীক্ষা করে দেখুন, এবং যদি না হয় তবে তা ফেলে দিন এবং আবার শুরু করুন। 8x4 গ্রিডের সাহায্যে এটি বেশি সময় নিতে পারে না। আমি নিশ্চিত যে পরিষ্কার সমাধান আছে।
চাকরী

এটি আমার প্রথম দৃষ্টিভঙ্গি ছিল তবে আমার এটি কিছুটা বড় আকারে করা দরকার এবং জোর করে কিছুটা সময় লাগবে বলে মনে হচ্ছে এবং আরও ভাল পদ্ধতির সন্ধান করার চেষ্টা করছিলাম।
তালোন 876

উত্তর:


2
  • এটা বরফ, আপনি একটি পাথর আঘাত না করা আপনি সরানো হবে।
  • দিক পরিবর্তন করার একমাত্র উপায় হ'ল একটি শিলাকে আঘাত করা।
  • আপনি যদি কোনও শিলাকে আঘাত করেন তবে আপনাকে দিক পরিবর্তন করতে হবে।
  • চক্রগুলি স্পষ্ট কারণেই ভাল।
  • একাধিক শুরু এবং একাধিক প্রান্ত হতে পারে।

আরও উন্নত বৈশিষ্ট্য:

  • সংলগ্ন শিলা ছাড়া কোষগুলি পৌঁছনীয় নয় (কিছুগুলি ট্র্যাভারে যেতে পারে)
  • দেয়ালগুলিও শিলা, যদি আপনি এগুলি সরিয়ে ফেলেন তবে আপনি চারপাশে মোড়ানো সিদ্ধান্ত নিতে পারেন।
  • আপনি উপ-গ্রিডগুলি নিদর্শন হিসাবে ব্যবহার করতে পারেন ("টাইলিং" 3x3, 3x4, 5x5, ... ইত্যাদি)
  • আপনি অ-ট্র্যাভারেবল এমএক্সএন অঞ্চলের শীর্ষে একটি ধাঁধা এমএক্সএন টাইল ওভারলে করতে পারেন এবং এটি থেকে / আউট ডাইরেক্ট করতে একটি শিলা যোগ করতে পারেন।
  • টাইলের আবর্তন বা প্রতিসাম্য আকর্ষণীয় হতে পারে
  • আপনি বরফ সারি / কলামগুলি সন্নিবেশ করে একটি টাইল প্রসারিত করতে পারেন

উদাহরণ:

S=start, E=end, o=rock, .=ice

3 . 2 o        3 . . 2 o         . . . . . o o
4 . . E   ~=   4 . . . E   ~=    . . . . . 2 E
o . . .        o . . . .         . . . . . . .
S . 1 o        S . . 1 o         S . . . . 1 o

টাইল সংমিশ্রনের উদাহরণ:

3 . . 2 o       o 2 . . 3      3 . . 2 o 7 . . 6
4 . . . E   +   E . . . 4  =   4 . . . . . . . 5
o . . . .       . . . . o      o . . . . . . . o
S . . 1 o       o 1 . . S      S . . 1 o 8 . . E

আপনি খেলা টিসুরো পছন্দ করতে পারেন , এটি একটি র্যান্ডম বোর্ড তৈরি করতে টাইল ব্যবহার করে।


0

যদি আপনি এটির জন্য প্রস্তুত থাকেন তবে বিপরীত প্রকৌশল আপনাকে সহায়তা করতে পারে।

যদি প্রতিটি সমস্যার একটি এবং একমাত্র সমাধান থাকে তবে আপনি সম্ভবত অনন্য উত্তরের উপর ভিত্তি করে একটি গ্রাফ তৈরি করতে পারেন। এটির জন্য আপনার গতিশীল প্রোগ্রামিং করা বা এমনকি ব্রুট ফোর্স এবং কোনও পদ্ধতিগত প্রজন্মের পক্ষে যাওয়ার প্রয়োজন হবে না।

আপনি এটি সম্পর্কে যেতে পারেন:

  1. একটি এমএক্সএন গ্রাফ প্রস্তুত রাখা
  2. এক / একাধিক সমাধান (গুলি) তৈরি করা হচ্ছে
  3. এটি যদি একক সমাধানের সমস্যা হয় তবে চারপাশে একটি প্রশ্ন তৈরি করা
  4. যদি সমস্যার একাধিক সমাধান থাকে তবে আপনি উপরের পদ্ধতিটি এমনভাবে পুনরাবৃত্তি করতে পারেন যাতে বর্তমান পুনরাবৃত্তিটি অন্য কোনও সমাধানকে বাধা দেয় না।

যদিও আপনার সমস্যার জটিলতা এবং সমস্যার আকার অনুযায়ী আপনার এমন একটি ডিভাইস তৈরি করতে হবে যা আপনার জন্য এই প্রশ্ন তৈরি করবে। শুধু নিষ্ঠুরতা জন্য যান না। পরিবর্তে কিছু এলোমেলোম অ্যালগরিদম চেষ্টা করুন। এটি আপনাকে সাহায্য করতে পারে।


আমি জানতাম যে আমি গত বছর সেই বইটি বিক্রি করে নিয়ে আফসোস করব, আমার মনে হয় আমার এক বন্ধুর কাছে এটি কোথাও রয়েছে। সেখানে কোন বিশেষ অ্যালগরিদম আমার সন্ধান করা উচিত? বা কেবল গ্রাফ সহ সকলের উপরে নজর রাখুন এবং দেখুন যে আমি দরকারী দেখতে পাচ্ছি কিনা? ওহ এবং এর মধ্যে একটি অনুকূল সমাধান রয়েছে (আমি মনে করি যে এটির জন্য একটি টাই থাকতে পারে) এবং অন্যান্য অসীম সমাধানগুলি যেহেতু আপনি কেবল দুটি নোডের মাঝে কয়েকবার পিছনে যেতে পারেন এবং এরপরে সমাধান করতে পারেন।
টালোন 876

0

অন্য পদ্ধতি সম্পর্কে কীভাবে? একটি খালি গোলকধাঁধা দিয়ে শুরু করুন এবং এই জাতীয় ব্লক যুক্ত করুন:

  1. এলোমেলোভাবে ব্লক শুরু এবং শেষের ব্লক।
  2. এলোমেলো (তবে ফিরে নয়) দিক এবং এলোমেলো দৈর্ঘ্য (*) দিয়ে 1-3 "স্লাইডিং" পদক্ষেপ করুন। প্রতিটি পদক্ষেপের পরে একটি ব্লক রাখুন (স্লাইড থামাতে)।
  3. প্রস্থান করার জন্য একটি সংক্ষিপ্ততম পথটি সন্ধান করুন। যদি খুব কয়েকটি বিভাগ থাকে (নিম্ন স্তরের অসুবিধা), তবে পথের এলোমেলো অংশটি নিন এবং একটি ব্লক দিয়ে বিভক্ত করুন। অন্যথায়, পদক্ষেপ 1 এর মতো একটি ব্লক রাখুন এবং প্রস্থান করুন।
  4. সাবধানতার সাথে 1 পুনরাবৃত্তি করুন (*): আপনি যখন স্লাইডিং পদক্ষেপের দৈর্ঘ্য চয়ন করেন, তখন এটি তৈরি করুন যাতে আপনি যে ব্লকটি রেখেছিলেন তা পূর্ববর্তী পথটি বন্ধ না করে।

সমাপ্তি স্পর্শ: আপনার সরবরাহিত অ্যালগরিদমের সাথে সংক্ষিপ্ততম রুটটি সন্ধান করুন। ব্যবহৃত সমস্ত কক্ষের নোট নিন এবং প্রতিটি বার সংক্ষিপ্ততম রুটটি সংক্ষিপ্ত না হওয়ার বিষয়টি নিশ্চিত করে এলোমেলোভাবে বাকি পূরণ করা শুরু করুন।

দ্বিতীয় ধাপে একটি সতর্কতা রয়েছে, যখন আপনি শেষ ব্লকটি ব্যবহার করতে পারবেন না যাতে এটি ব্যবহৃত পাথগুলি অতিক্রম না করে তবে আমি এর দুটি সমাধান দেখতে পাচ্ছি: সমাপ্তি ব্লকটি আগে সরিয়ে ফেলুন বা কয়েক ধাপ পূর্বাবস্থায় ফিরে এসে আবার চেষ্টা করুন।

এবং স্লাইডিং পদক্ষেপগুলির এলোমেলো দৈর্ঘ্যের জন্য আরেকটি চিন্তা - আপনি সম্ভবত এটি চয়ন করতে চাইতে পারেন যাতে দীর্ঘস্থায়ী ব্লকটি আবার ব্যবহার করা যায়, যতক্ষণ না পাথগুলি ওভারল্যাপ না হয়।


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