আমি বলব যে আপনি সঠিক পথে আছেন, তবে একটি অনুকূল এবং / বা দক্ষ অ্যালগরিদম নিয়ে আসা আরও একটি বিষয়: এটি একটি কঠিন সমস্যা। তবে, আপনার আগ্রহটি যদি একাডেমিক না হয় তবে একটি পর্যাপ্ত পর্যাপ্ত সমাধানই যথেষ্ট।
প্রথমত, আপনি যদি নিজের সমাধান নিয়ে আসতে আগ্রহী না হন, সিজিএলে ইতিমধ্যে উত্তল পলিহেডর পচন জন্য একটি অ্যালগরিদম রয়েছে: http://doc.cgal.org/latest/Convex_decomposition_3/index.html
এখন পদ্ধতির জন্য; 3 ডি-তে অনেক সমস্যার মতো, এটি 2D সমস্যাটি বোঝা সহজ যা সহজে বোঝা যায় helpful 2 ডি এর জন্য, কাজটি হ'ল রেফ্লেক্স শীর্ষকে চিহ্নিত করা এবং বহুভুজটিকে দুটি ভাগে বিভক্ত করে ref প্রতিবিম্বটি শীর্ষে থেকে একটি নতুন প্রান্ত (এবং সম্ভবত নতুন শীর্ষে) তৈরি করা এবং অবিরত অবধি অবধি অবিরত অবিরত হওয়া অব্যাহত রাখুন (এবং সুতরাং সমস্ত-উত্তল বহুভুজগুলি )।
জে। মার্ক কেয়েল দ্বারা বহুভোজী পচনের নিম্নলিখিত অ্যালগরিদম রয়েছে (অপরিশোধিত আকারে):
diags = decomp(poly)
min, tmp : EdgeList
ndiags : Integer
for each reflex vertex i
for every other vertex j
if i can see j
left = the polygon given by vertices i to j
right = the polygon given by vertices j to i
tmp = decomp(left) + decomp(right)
if(tmp.size < ndiags)
min = tmp
ndiags = tmp.size
min += the diagonal i to j
return min
মূলত এটি নিখুঁতভাবে সমস্ত সম্ভাব্য পার্টিশন তুলনা করে, এবং উত্পাদিত সর্বনিম্ন ত্রিভুজগুলির সাথে একটিটি প্রদান করে। এই অর্থে এটি কিছুটা নিষ্ঠুর-শক্তি এবং সর্বোত্তমও।
আপনি যদি " নিকারের লুকিং" পচনগুলি চান তবে এটি লম্বা আকারের চেয়ে আরও কমপ্যাক্ট আকার তৈরি করে, আপনি মার্ক বেয়াজিট প্রযোজনাটিকেও বিবেচনা করতে পারেন , এটি লোভী (অতএব আরও দ্রুত) এবং সুন্দর দেখায় তবে কয়েকটি ত্রুটি রয়েছে। এটি মূলত এর বিপরীতে সেরাটির সাথে সাধারণত অন্য একটি রিফ্লেক্স শীর্ষকে সংযোগের চেষ্টা করে কাজ করে:
একটি ত্রুটি এটি হ'ল এটি স্টেইনার পয়েন্টগুলি তৈরি করে "আরও ভাল" পচনগুলি উপেক্ষা করে (পয়েন্টগুলি যেগুলি বিদ্যমান প্রান্তে বিদ্যমান নয়):
3 ডি তে সমস্যাটি একই রকম হতে পারে; রিফ্লেক্স শীর্ষে পরিবর্তে, আপনি "খাঁজ প্রান্ত" সনাক্ত করতে পারেন। একটি নিষ্পাপ বাস্তবায়ন হ'ল খাঁজ প্রান্তগুলি চিহ্নিত করা, এবং সমস্ত পলিহেডার উত্তল না হওয়া পর্যন্ত বারবার পলিহেড্রোনটিতে বিমানের কাটগুলি সম্পাদন করা। পরীক্ষা করে দেখুন বার্নার্ড Chazelle দ্বারা: "এবং একটি নিম্নতর বাউন্ড সবচেয়ে-ক্ষেত্রে সর্বাপেক্ষা কাম্য অ্যালগরিদম Polyhedra এর উত্তল পার্টিশন" আরো বিস্তারিত জানার জন্য।
নোট করুন যে এই পদ্ধতির ফলে নিকৃষ্টতম উপ-পলিহেডারের সংখ্যক সংখ্যা তৈরি হতে পারে। এটি কারণ আপনার এই জাতীয় হ্রাস পেতে পারে:
তবে যদি আপনার কাছে একটি তুচ্ছ জাল থাকে (মনে হয় অবিচ্ছিন্ন পৃষ্ঠ), আপনি যাইহোক খারাপ ফলাফল পাবেন। এটি খুব সম্ভবত আপনি জটিল সরীকরণের জন্য যদি কখনও ব্যবহার করতে চান তবে আপনি আগেই প্রচুর সরলীকরণ করতে চাইবেন।