সুইপ লাইন অ্যালগরিদম সহ বৃত্তের ছেদ


15

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

নিম্নলিখিত অনুশীলনটি আমি সর্বশক্তিমান জেফ এরিকসনের লাইন সেগমেন্ট ছেদগুলির বক্তৃতা নোটগুলিতে পেয়েছি ।

ব্যায়াম 2. বর্ণনা করুন এবং নির্ধারণ করার জন্য একটি sweepline অ্যালগরিদম বিশ্লেষণ দেওয়া সমতলে বৃত্ত, কিনা কোন দুটি ছেদ, এ হে ( লগ ইন করুন এন ) সময়। প্রতিটি বৃত্তটি এর কেন্দ্র এবং তার ব্যাসার্ধ দ্বারা নির্দিষ্ট করা হয়, সুতরাং ইনপুটটিতে তিনটি অ্যারে এবং । নিম্ন-স্তরের আদিমগুলি সঠিকভাবে প্রয়োগ করতে সাবধান হন।এনহে(এনলগএন)এক্স[1 ..এন],ওয়াই[1 ..এন]আর[1 ..এন]

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

  • কেস 1: যদি তবে কোনও সমাধান নেই, চেনাশোনাগুলি পৃথক।>R0+ +R1

  • কেস 2: যদিতারপরে কোনও সমাধান নেই কারণ একটি বৃত্ত অন্যটির মধ্যে রয়েছে।<|R0-R1|

  • কেস 3: যদি এবং তবে চেনাশোনাগুলি কাকতালীয় এবং এর সমাধানের একটি অসীম সংখ্যা রয়েছে।=0R0=R1

সুতরাং, দেখে মনে হচ্ছে ছেদ করার শর্তগুলি প্রস্তুত, অবশ্যই এটি ভুল শর্ত হতে পারে। যদি তাই হয় দয়া করে সংশোধন করুন।

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

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

সংযোজন :

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


4
সর্বশক্তিমান [উদ্ধৃতি প্রয়োজন]
জেফ

@ কমকে "নিকটবর্তী পূর্ববর্তী চেনাশোনা" বলতে কী বোঝ?
জো

1
আমি ধরে নিই যে statusবর্তমানে স্যুইপ লাইনটি ছেদ করে চেনাশোনাগুলি বজায় রাখে? ধরুন বর্তমানে আপনার 100 টি চেনাশোনা রয়েছে statusএবং আপনি একটি সন্নিবেশ ইভেন্টটি প্রক্রিয়া করছেন এবং 101 তম বৃত্তটি সন্নিবেশ করান। ছেদটি পরীক্ষা করার জন্য আপনি কতটি বৃত্তের তুলনা করছেন? কোন চেনাশোনাগুলি তুলনা করবেন তা কীভাবে বেছে নিন?
জো

@ জো, ক্লাসিকাল সুইপ লাইন অ্যালগরিদমের মতো আমারও ঠিক এটি দরকার, যেখানে "দুটি লাইনের ছেদ কোনও স্থানে এই দুটি রেখার সংলগ্ন বোঝায়", আমাকে বৃত্তের সাথে অনুরূপ সাদৃশ্যটি সন্ধান করতে হবে। সহজ জিনিস আমি সঙ্গে আসা হয় সর্বনিম্ন সমন্বয় সাধন এবং Y সর্বোচ্চ, বৃত্তের তুল্য যদি সর্বনিম্ন থেকে অন্তর তাদের অভিক্ষেপ ছেদ বৃত্ত Y সর্বোচ্চ Y করার ছেদ করা উচিত নয়। সুতরাং সম্ভবত এখন আমি আপনার অর্ধবৃত্ত সম্পর্কে ধারণা আরও কাছাকাছি আসছি। উপরে অর্ধবৃত্তগুলিতে সর্বাধিক y থাকে এবং নীচে সর্বনিম্ন y থাকেYYYYYY
com

উত্তর:


5

আপনি অবশ্যই সঠিক পথে আছেন বড় প্রশ্ন হ'ল: আপনি যখন একটি চেনাশোনা ?োকান, আপনি অন্য কোন বৃত্ত ছেদ করার জন্য পরীক্ষা করেন? আপনি এই চেকটি কীভাবে সম্পাদন করবেন?

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

চেনাশোনাগুলির ক্ষেত্রে, কোন চেনাশোনাগুলি পরীক্ষা করা উচিত তা অবিলম্বে পরিষ্কার হয় না। যদি আপনার উত্তরটি "এই সমস্ত" হয় তবে আপনার অ্যালগরিদমের কিছু কাজ দরকার।

আপনি কি চেনাশোনাগুলি উপস্থাপন করার জন্য কোনও উপায় নির্ধারণ করতে পারেন যাতে লাইন বিভাগগুলি যেমন তাদের পুরোপুরি অর্ডার করা হয়?

চেনাশোনাগুলিকে দুটি অর্ধ-বৃত্ত হিসাবে উপস্থাপন করার চেষ্টা করুন। প্রতিটি sertোকানো ইভেন্টটি আসলে দুটি ইভেন্ট top


দুর্ভাগ্যক্রমে আমি অর্ধবৃত্তাকার ধারণাটি পাই না, সম্ভবত আপনি অর্ধবৃত্তটিকে বৃত্তের ন্যূনতম একক হিসাবে বিবেচনা করছেন যা ছেদ করা যেতে পারে (ছেদগুলির 3 টি ক্ষেত্রে: ছেদটি উচ্চতর অর্ধবৃত্তে, বা নিম্নে বা উভয় ক্ষেত্রে)। ভিক্ষা করার সময় সমস্ত চেনাশোনাগুলি তাদের বাম এবং ডানদিকের সীমানার এক্স স্থানাঙ্কের মাধ্যমে অর্ডার করা হয়। সুতরাং আমাদের স্থিতিতে এক্স সমন্বিত এক্স বিবেচনা করা উচিত নয় , কারণ সমস্ত চেনাশোনা ইতিমধ্যে x স্থানাঙ্ক ক্রমে আসে। অতএব কেন্দ্রের (অর্ধবৃত্তের) y বা স্থানাঙ্কের y বা রেডিয়াইয়ের কোনও সমন্বয় বিবেচনা করা আরও যুক্তিযুক্ত বলে মনে হয়। আপনার মতামত?
com

@com আপনি দুটি নিজস্ব বৃত্ত ছেদ করেছেন কিনা তা নির্ধারণের জন্য আপনাকে কেন্দ্রের পয়েন্ট এবং ব্যাসার্ধের প্রয়োজন। কেবল y স্থানাঙ্ক এবং একাকী ব্যাসার্ধ পুরোপুরি বৃত্তের সীমানা নির্দিষ্ট করে না। সুইপ লাইন অ্যালগরিদমগুলি সম্পর্কে যা কিছু আপনি বুঝতে পারছেন না সে সম্পর্কে কিছু মৌলিক বলে মনে হচ্ছে, তবে এটি কী তা আমার পক্ষে জানা শক্ত।
জো

0

আমি এই পদ্ধতির বেন্টলে ওটম্যান ঝাড়ু যা ও ((এন + কে) লগেনে চালিত হয় তার সাথে সমানভাবে ভাবতে পারি।

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

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

যেহেতু লাইন ছেদ সমস্যাটি ও ((এন + কে) লগন) সময়ে সমাধান করা যায়, একই বৃত্তটি বৃত্ত ছেদ করার জন্যও অনুসরণ করে।

আমি যথেষ্ট নিশ্চিত যে এটি কাজ করবে তবে আপনি যদি ছেলেরা কোনও ক্ষেত্রে এই বিষয়টি পরিচালনা করতে পারেন তবে এটি সাধারণভাবে পরিচালনা করবে না, আমাকে জানান।

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