কিউজিসে নিকটতম নিকটবর্তী গোষ্ঠী নির্বাচন Se


14

আমার কাছে ল্যাগ / লম্বা ফর্ম্যাটে 100,000 এরও বেশি পয়েন্ট রয়েছে এমন একটি তালিকা রয়েছে যা আমি কিউজিসে আমদানি করেছি।

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

আমার প্রয়োজনীয়তা অনুসরণ করা হয়:

  • কোনও বক্সড গোষ্ঠীর 100 থেকে কম এবং 200 পয়েন্টের বেশি হওয়া উচিত নয়
  • কোনও বিন্দু একাধিক গ্রুপে অবস্থিত হওয়া উচিত নয়
  • সমস্ত পয়েন্ট তাদের নিকটতম প্রতিবেশী উপর ভিত্তি করে করা উচিত

কিউগিসের মাধ্যমে আমি কীভাবে এটি অর্জন করতে পারি?

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

যেমনটি উল্লেখ করা হয়েছে, আমার উদ্দেশ্যটি হ'ল শেফফাইল স্তর হিসাবে একগুচ্ছ স্কোয়ার বক্সগুলি প্রদর্শন করা যেখানে প্রতিটি বাক্সের মধ্যে 100 টিরও কম সম্পত্তি থাকবে না এবং 200 এর বেশি হবে না।


6
যারা এই প্রশ্নটিকে "প্রিয়" হিসাবে চিহ্নিত করেছেন তাদের কাছে: কেন এটি খুব উপরে তুলে দেওয়া হবে না? কেউ ভাববেন যে আপনার প্রিয় প্রশ্নটি একটি ভাল প্রশ্ন হওয়া উচিত।
আন্ডার ডার্ক

1
আপনার বক্সিং দরকার কেন? যদি আপনি গণনার উপর ভিত্তি করে বাক্সগুলি তৈরি করেন তবে সেগুলি যে কোনও উপায়েই হবে তাই টাইলিং প্রশ্নের বাইরে of বহুভুজ (যেমন উত্তল হাল) মধ্যে ভাগ করা সম্ভবত এটি সহজ।
diciu

@ ডিসিউ প্রতিক্রিয়া জন্য ধন্যবাদ। হ্যাঁ আমি অনুমান করি যে একটি উত্তল হাল ভাল হবে কারণ আমি তার পরে বাক্সগুলিতে পরিণত করতে পারি। উত্তল হলের পদ্ধতির সাহায্যে এটি করার জন্য আমার কী কোড ব্যবহার করতে হবে?
নেটকন্সট্রাক্টর.কম

2
আপনি যদি উত্তল হোল ব্যবহার করেন তবে আপনার আবদ্ধ বাক্সগুলি (হুলগুলি ঘেরে দেওয়া) ওভারল্যাপ হয়ে যাবে এবং একক পয়েন্টের জন্য একক বিবিএক্সের জন্য আপনার প্রয়োজনীয়তা আর সন্তুষ্ট হবে না। উত্তল হালগুলি BBOX এর দিকে মধ্যবর্তী পদক্ষেপ হিসাবে কাজ করে না বরং প্রতিস্থাপন হিসাবে কাজ করে। এবং তারপরেও, জেনেরিক সমাধান তৈরি করা বরং জড়িত থাকবে।
diciu

উত্তর:


13

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

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

Procedure Box(P: set of points, i: boolean, n: integer)
Begin
    If (Count(P) > 2*n) then
        {R,S} = Half(P,i)
        Q = Box(R,!i,n) + Box(S,!i,n)
    Else
        Q = {P}
    Endif
    Return Q
End

এই সিউডোকোডে, আর এবং এস পার্টিশন পি; বাক্স (আর,! আই, এন) অর্থোথোনাল দিকের আর এর একটি বিভাজন , বাক্স (এস,! I, এন) অর্থোথোনাল দিকের এস এর একটি বিভাজন, "+" অর্থ সেট-তাত্ত্বিক ইউনিয়ন গঠন করে, এবং } a একটি সেট নির্ধারণ করে। (বিভক্ত দিকটি পরিবর্তনের ফলে স্ট্রিপগুলির পরিবর্তে বাক্স তৈরি করা হয়)) পরামিতি n পার্টিশনের একটি দলের সর্বনিম্ন আকার নির্দিষ্ট করে; সর্বোচ্চ আকার 2 এন

উদাহরণ

এখানে, উদাহরণ হিসাবে, 12,891 এলোমেলো পয়েন্টের একটি সেট পি, Box(P,true,100)যা 100 থেকে 200 আকারের গ্রুপে বিভক্ত হয়ে গেছে । অ্যালগরিদম 128 বাক্স তৈরি করে যার 37 টিতে 100 পয়েন্ট এবং 91 এর 101 টি পয়েন্ট রয়েছে।


2
অ্যালগরিদম দক্ষ। একটি একক কোর চলমান, এটি 18 সেকেন্ডে দশ গুণ হিসাবে অনেক পয়েন্ট (128,910) প্রসেস করেছে। এটি এন পয়েন্টগুলির জন্য ও (এন লগ (এন) লগ (এন)) হিসাবে স্কেল করে। (লগ ()) এর সেই কারণগুলির একটি অপসারণের জন্য এটি উন্নত করা যেতে পারে, তবে প্রচেষ্টা সার্থক হওয়ার সম্ভাবনা কম))
হোবার

1
@W আপনি বিন্দু স্থানাঙ্কগুলির বিভাজন সুবিধার জন্য একটি অভিধানিক সাজ ব্যবহার করেছেন?

2
@ তবে এটি দুর্দান্ত
দাসৌকি

1
@ ড্যান একটি অদ্ভুত সাজানোর সাহায্য করবে তবে এটি প্রয়োজনীয় নয়। নোট করুন যে এন মানগুলির একটি মাঝারিটি ও (এন) সময়ে (ও (এন লগ (এন)) নয় এমন সময়ে পাওয়া যাবে, সুতরাং পূর্ব-পশ্চিম অংশে বা উত্তর-দক্ষিণে ভাগ করে দেওয়া পয়েন্টগুলি বিস্মরণীয়ভাবে একটি হে (এন) ) গণনা।
whuber
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.