দুটি ভক্সেল একে অপরের সাথে সংযুক্ত কিনা তা দেখতে অ্যালগরিদম


11

আমি নিম্নলিখিত সমস্যার জন্য একটি ভাল অ্যালগরিদম খুঁজছি: ভক্সেলগুলির একটি 3 ডি গ্রিড দেওয়া (যা খালি বা ভরাট হতে পারে), যদি আমি দুটি অ-সংলগ্ন ভক্সেল বাছাই করি তবে আমি জানতে চাই যে তারা একে অপরের সাথে সংযুক্ত কিনা অন্যান্য ভক্সেল

উদাহরণস্বরূপ (2D এর পরিস্থিতি চিত্রিত করতে), যেখানে # একটি পূর্ণ বর্গ:

  1 2 3
a # # #
b # #
c # # #

যদি আমি এ 3 এবং সি 3 বাছাই করি তবে তারা সংযুক্ত থাকলে আমি যত তাড়াতাড়ি সম্ভব নির্ধারণ করতে চাই; যদি ভরা পিক্সেলগুলির মধ্যে দিয়ে a3 এবং c3 এর মধ্যে কোনও পথ থাকে। (আসল পরিস্থিতি অবশ্যই 3 ডি ভক্সেল গ্রিডে is

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

আমার কোন অ্যালগরিদম ব্যবহার করা উচিত?

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


: আপনার উদাহরণে C3 করার A3 থেকে একটি বৈধ পথ নিম্নলিখিত হবে c3->c2->b2->a2->a3?

এটি সঠিক
ব্রাম ভেসেন

উত্তর:


12

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

এ * এর সাহায্যে প্রথম যে পথটি আপনি খুঁজে পান তা হ'ল সংক্ষিপ্ততম, সুতরাং এটি ইতিমধ্যে কোনও পথ খুঁজে পাওয়ার পরে এটি অতিরিক্ত কাজ করছে না।

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

কিছু অপ্টিমাইজেশনের জন্য, আমার উত্তরটি এখানে দেখুন


দেখে মনে হচ্ছে এটি সত্যিই সামনের দিকে এগিয়ে চলেছে যতক্ষণ না wall দেয়ালটি আঘাত করে তারপরে এটি এক ধরণের
লতা

1
@ গেমডেভ-এর হ্যাঁ, এটি হিউরিস্টিকের কারণে। যদি কোনও বাধা না থাকে তবে এটি খুব দ্রুত অনুসন্ধান, প্রায় সোজা লাইন।
মাইকেলহাউস

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

9

আপনি যদি কিছু প্রাক-প্রক্রিয়াজাতকরণ এবং স্টোরেজ ব্যয় খাওয়ার জন্য প্রস্তুত থাকেন, তবে নির্মাণের সময় ভক্সেলগুলি সংযুক্ত গোষ্ঠীতে বিভক্ত করা 'এর কোনও উপায় আছে কি না' এর সুস্পষ্ট উত্তর দেয়। দুটি ভক্সেলের মধ্যে যদি তারা একই গ্রুপে থাকে তবে তাদের মধ্যে একটি পথ রয়েছে। স্পষ্টতই সমস্যাটি হ'ল আপনাকে কোথাও গোষ্ঠী তথ্য সংরক্ষণ করতে হবে এবং এটি আপনার ডেটা বিন্যাসের উপর নির্ভর করে। আপনি যদি একটি সাধারণ তালিকা সঞ্চয় করে থাকেন তবে আপনি কেবল এটি একাধিক তালিকায় বিভক্ত করতে পারেন, প্রতিটি স্থানগতভাবে সংযুক্ত গ্রুপের জন্য একটি। আপনি যদি একরকম BVH তে সংগঠিত হন তবে আপনি যদি "এই নোডের এবং নীচের সমস্ত ভক্সেল গ্রুপ এক্স এর অন্তর্গত" বলতে পারেন তবে আপনি সম্ভবত কিছু যুক্তিসঙ্গত ভাল দক্ষতা অর্জন করতে পারেন।

বিকল্পভাবে, আপনি কিছু স্থানিক প্রাক-পার্টিশন করতে পারেন এবং প্রতিটি সংযুক্ত গ্রুপের জন্য কিছু 'হাব' ভক্সেলের কিছু ছোট সেট সঞ্চয় করতে পারেন। তারপরে আপনি আপনার উত্স থেকে লক্ষ্য এবং ভক্সেলগুলিকে তাদের নিকটতম হাব ভক্সেল লক্ষ্য করতে পারেন যা পাথ গণনা করার জন্য আরও ছোট / সস্তা হওয়া উচিত। আপনি যদি একটি ভক্সেল থেকে একটি হাব ভক্সেলের কোনও পথ খুঁজে পেতে পারেন তবে ভক্সেল হাব ভক্সেলের গ্রুপের একটি অংশ। এই হাব ভক্সেলগুলির স্মার্ট নির্বাচনের সাহায্যে আপনি পথ ট্র্যাভারসালের সংখ্যা হ্রাস করতে পারেন। যেমন একটি গোলকটির কেন্দ্রের মধ্যে কেবল একটি হাব ভক্সেল থাকতে পারে তবে একটি দীর্ঘ পাতলা গোষ্ঠীর দৈর্ঘ্যের সাথে প্রতিটি এক্স ভক্সেল থাকতে পারে একটি হাব ভক্সেল। যদি আপনার উত্স এবং লক্ষ্যযুক্ত ভক্সেলগুলি দৈর্ঘ্যের উভয় প্রান্তে থাকে তবে একটি হাব সন্ধান করতে তাদের কেবলমাত্র বেশিরভাগ এক্স ভক্সেল যেতে হবে এবং দৈর্ঘ্যের শুরু এবং শেষের মধ্যে বিশাল পরিমাণ ভক্সেল থাকতে পারে,

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


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

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

1
দ্বিতীয় সমস্যাটি হ'ল একটি ভক্সেল অপসারণের ঠিক পরে অ্যালগরিদমের প্রয়োজন হয়, তা নির্ধারণ করার জন্য যে গ্রুপটি এই অংশটি ছিল সেই ভক্সেল অপসারণের কারণে ছোট গ্রুপে বিভক্ত হয়েছে কিনা determine
ব্রাম ভেসেন

@ ব্র্যামভেসেন যদি আপনি সমস্ত যুগল আন্তঃসংযোগ সম্পর্কের সন্ধান করেন - এবং বিশেষত, গ্রুপগুলি 'ব্রেক আপ' কিনা - তবে এটি কেবল সহজলভ্যতার চেয়ে কিছুটা আলাদা বিষয় (যদিও পুনরায় ব্যবহারযোগ্যতা এটির পক্ষে যাওয়ার সহজতম উপায়); মূল প্রশ্নটির পরে আপনি কী করছেন সে সম্পর্কে আমি আরও বিশদ যুক্ত করতে উত্সাহিত করব, কারণ এটি 'প্রশ্নের পিছনে সমস্যাটির' আরও উত্তরের জবাব দিতে পারে।
স্টিভেন স্টাডনিকি

এটি পরিষ্কার রাখতে, আমি আমার প্রাথমিক সমস্যাটি এখানে অন্য প্রশ্নে জিজ্ঞাসা করেছি গেমদেব.স্ট্যাকেক্সেঞ্জার
ব্রাম ভেসেন

4

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

বিকল্প হিউরিস্টিক ব্যবহার করে আপনার ভাগ্য ভাল হতে পারে যা কম নোড যেমন প্রসারিত করে

f (p) = g (p) + w (p) * h (p)

যেখানে ডাব্লু> = ১. আপনি লক্ষ্যটির নিকটবর্তী হওয়ার সাথে সাথে 'ডাব্লু' এর মান হ্রাস করবেন, যার ফলে আপনি যে ভক্সেলের সন্ধান করছেন তার কাছাকাছি পথ ব্যয় 'জি' কে তত বেশি অগ্রাধিকার দেবে।

আশা করি এটা কাজে লাগবে!

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