একটি অ্যারে অন্যটির সাজানো সংস্করণ কিনা তা পরীক্ষা করতে নির্ধারিত লিনিয়ার সময় অ্যালগরিদম


19

নিম্নলিখিত সমস্যা বিবেচনা করুন:

ইনপুট: দুটি অ্যারে এবং দৈর্ঘ্যের , যেখানে সাজানো ক্রমে।ABnB

প্রশ্ন: এবং কি একই আইটেম রয়েছে (তাদের বহুগুণ সহ)?AB

এই সমস্যার জন্য দ্রুততম নির্বাহী অ্যালগরিদম কী ?
এগুলি বাছাইয়ের চেয়ে দ্রুত সমাধান করা যায়? এই সমস্যাটি নির্ধারিত রৈখিক সময়ে সমাধান করা যায়?


1
FWIW সম্ভাব্য পদ্ধতির একটি আদেশ-স্বতন্ত্র হ্যাশ ফাংশন নিয়ে হ্যাশ করছে। কার্টার এবং ওয়েগম্যান মূল বিজ্ঞপ্তিগুলির মধ্যে একটি এটি এই ( বিজ্ঞান ডাইরেক্টস / সাইন্স / পার্টিক্যাল / পিআইআই / 0022000081900337 ) লিখেছেন , তবে আমি সেই কাগজের উদ্ধৃতিগুলিতে এমন কিছু দেখিনি যা একটি সংজ্ঞাবহ অ্যালগরিদম (এখনও অবধি) প্রস্তাব দেয়।
KWillets

1
আপনি যে বক্তব্যটি উদ্ধৃত করেছেন তা টিউরিং মেশিন মডেল সম্পর্কে, যা কেবল তাত্ত্বিক আগ্রহের বিষয়। অ্যালগরিদমগুলি সাধারণত র‌্যাম মডেলের প্রতি সম্মান সহ বিশ্লেষণ করা হয়।
যুবাল ফিল্মাস

আহ, তাহলে সেই মডেলটি আমি সন্ধান করছি। আমি প্রশ্ন সামঞ্জস্য।
অ্যালবার্ট হেন্ডরিক্স

আপনি কেন অ্যারে আইটেমগুলি যোগ করে তারপরে যোগফলের তুলনা করেন না? আপনার শিরোনাম সম্পর্কে, এটি লিনিয়ার এবং প্রশ্নের উত্তর দেয় 'একটি অ্যারে অন্যের সাজানো সংস্করণ? '। আমি সচেতন যে এটি টুরিং মেশিন মডেল নয়, তবে একটি ব্যবহারিক সমাধান।
atayenel

1
@ অ্যালবার্ট হেন্ডরিকস আপনাকে (সম্ভবত সম্ভবত) কোনও ট্যুরিং মেশিনে এ অ্যারে বাছাই করতে পারবেন না । স্যাট-এর কয়েকটি নিম্ন সীমানা (যেমন cs.cmu.edu/~ryanw/automated-lbs.pdf ) আসলে র‌্যাম মেশিনের জন্য, আমার বিভ্রান্তিকর আগের মন্তব্যের জন্য দুঃখিত। O(nlogn)
যুবাল ফিল্মাস

উত্তর:


14

আপনি আপনার গণনার মডেলটি নির্দিষ্ট করেন নি, তাই আমি তুলনা মডেলটি ধরে নেব।

তালিকাটি থেকে অ্যারে নেওয়া হয়েছে সেই বিশেষ ক্ষেত্রে বিবেচনা করুন কথায় কথায়, ম উপাদানটি বা ।{ 1 , 2 } × { 3 , 4 } × × { 2 এন - 1 , 2 এন } i 2 i - 1 2 iB

{1,2}×{3,4}××{2n1,2n}.
i2i12i

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

এর অর্থ হ'ল যদি এবং তে একই উপাদান থাকে তবে এটি যাচাই করার পরে অ্যালগোরিদম বাছাই করা ক্রমটি জানে । সুতরাং এটি কমপক্ষেবিভিন্ন পাতা এবং তাই এটি সময় লাগে so ।বি এন ! Ω ( এন লগ এন )ABAn!Ω(nlogn)


আমি ভাবতাম এটি সাধারণভাবে বোঝায় তবে দৃশ্যত তুলনা মডেলটি তার সাথে আলাদা। P=Ω(nlogn)
অ্যালবার্ট হেন্ডরিকস

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

[সিএনটিডি] এমনকি বাছাইয়ের জন্য আমাদের আরও শক্তিশালী সীমানা নেই! এবং আপনি যদি এন এলজি এন এর চেয়ে দ্রুত বাছাই করতে পারেন তবে সমস্যাটি সমাধানের জন্য আপনি এটি এন এলজি এন এর চেয়ে দ্রুত ব্যবহার করতে পারেন।
কাভেহ

1
অ্যালবার্টহেন্দ্রিকস, আপনি কি পূর্ণসংখ্যা বাছাইয়ের জন্য লিনিয়ার টাইম অ্যালগরিদম সম্পর্কে জানেন? সিএলআরএস এ দেখুন। আপনার ক্ষেত্রে এমন একটি ঘটনা হতে পারে যেখানে আমরা রৈখিক সময়ে বাছাই করতে পারি।
কাভেঃ

6
পূর্ণসংখ্যার সাজানো যেতে পারে (দেখুন nada.kth.se/~snilsson/fast-sorting ), অথবা প্রত্যাশিত সময়ের মধ্যে (দেখুন ieeexplore .ieee.org / স্ট্যাম্প / স্ট্যাম্প। জেপ? আর্মন্বার = 1181890 ), বা এমনকি লিনিং টাইমের মধ্যে যদি শব্দের আকারটি যথেষ্ট পরিমাণে বড় হয় (দেখুন এলএনসিএস 8503, পৃষ্ঠা 26 শেফ)। ( এন ) O(nloglogn)O(nloglogn)
যুবাল ফিল্মাস

10

এই উত্তরটি গণনার আলাদা মডেল বিবেচনা করে: ইউনিট-ব্যয় র‌্যাম মডেল। এই মডেলটিতে, মেশিন শব্দের আকার এবং সেগুলির ক্রিয়াকলাপে সময় নেয়। আমরা সরলতার জন্যও ধরে নিই যে প্রতিটি অ্যারে উপাদান একটি মেশিন শব্দের সাথে ফিট করে (এবং এটি সর্বাধিক প্রস্থে)।( 1 ) এন ( 1 )O(logn)O(1)nO(1)

দুটি অ্যারে কিনা তা নির্ধারণের আরও জটিল সমস্যার জন্য আমরা একতরফা ত্রুটি (অ্যালগোরিদম দুটি অ্যারে একই উপাদান রাখার জন্য দুটি অ্যারে ঘোষণা করতে পারে) দিয়ে রৈখিক সময়ের র‌্যান্ডমাইজড অ্যালগরিদম তৈরি করব a এবং একই উপাদান রয়েছে। (আমরা তাদের কোনওটি বাছাই করার প্রয়োজন নেই)) আমাদের অ্যালগরিদম সম্ভাব্যতার সাথে সর্বাধিক এ ত্রুটি করবে ।বি 1 , , বি এন 1 / এনa1,,anb1,,bn1/n

ধারণাটি হ'ল যদি অ্যারেগুলিতে একই উপাদান থাকে তবে নিম্নলিখিত পরিচয়টি ধারণ করে: এই বহুবচনগুলি সঠিকভাবে গণনা করতে খুব বেশি সময় লাগবে। পরিবর্তে, আমরা একটি এলোমেলো প্রাইম এবং একটি এলোমেলোভাবে এবং পরীক্ষা যদি অ্যারেগুলি সমান হয়, পরীক্ষা সর্বদা পাস হবে, সুতরাং আসুন যে ক্ষেত্রে অ্যারেগুলি পৃথক রয়েছে সেগুলিতে মনোনিবেশ করা যাক। বিশেষত, কিছু শুন্য নয়। যেহেতু দৈর্ঘ্য রয়েছে , এই সহগের দৈর্ঘ্য haspx0 n i = 1 (x0-ai) n i = 1 (x0-bi)

i=1n(xai)=i=1n(xbi).
px0n i = 1 2 পি 1 - 1 / n এন i = 1 ( এক্স - আই ) - এন i = 1 ( এক্স - বি i ) 0
i=1n(x0ai)i=1n(x0bi)(modp).
a i , b i n O ( 1 ) 2 n n O ( n ) = n O ( n ) O ( n ) Ω ( এন ) এন 2 পি এনi=1n(xai)i=1n(xbi)ai,binO(1)2nnO(n)=nO(n), এবং তাই এটির আকারের সর্বাধিক কারণ রয়েছে । এর অর্থ এই যে আমরা অন্তত একটি সেট নির্বাচন হলে মৌলিক আকার কমপক্ষে এর (বলুন), তারপর একটি র্যান্ডম মৌলিক জন্য এই সেট তা সম্ভাব্যতা অন্তত সঙ্গে রাখা হবে যে একটি এলোমেলো মডিউলো সম্ভাব্যতা সাথে সাক্ষ্য দেবে (যেহেতু সর্বাধিক ডিগ্রিটির বহুবর্ষে সর্বাধিক শিকড় রয়েছে)।O(n)Ω(n)n2pn2p11/nx 0
i=1n(xai)i=1n(xbi)0(modp).
x0p1n/p11/nnn

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

বহুপদী সময় primality পরীক্ষামূলক ব্যবহার ও মাপ এর মৌলিক সংখ্যার ঘনত্ব থেকে মোটামুটিভাবে হয় , আমরা একটি র্যান্ডম প্রধানমন্ত্রী নির্বাচন করতে পারবেন সময় । একটি এলোমেলো মডুলো নির্বাচন করা বিভিন্ন উপায়ে প্রয়োগ করা যেতে পারে, এবং আমাদের ক্ষেত্রে সম্পূর্ণরূপে অভিন্ন র্যান্ডম প্রয়োজন নেই বলে সহজ করা হয়েছে ।n2Ω(1/logn)p(logn)O(1)x0px0

উপসংহারে, আমাদের অ্যালগরিদম সময় , অ্যারেগুলিতে একই উপাদান থাকে তবে সর্বদা হ্যাঁ আউটপুট করে এবং অ্যারেগুলিতে একই উপাদান না থাকলে সম্ভাব্যতা সহ কোনও আউটপুট দেয় । যে কোনও ধ্রুবক জন্য আমরা ত্রুটির সম্ভাবনাটিকে উন্নত করতে পারি ।1 - ( 1 / এন ) 1 - ( 1 / এন সি ) সিO(n)1O(1/n)1O(1/nC)C


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

আমি মনে করি ওপি সম্ভাব্য আলগোরিদিম পছন্দ করে না কারণ তিনি হ্যাশ টেবিল ব্যবহার করে প্রত্যাশিত লিনিয়ার সময় অ্যালগরিদম পছন্দ করেন না।
কাভেঃ

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

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

2
একেবারেই না. এটা একটা পরিমাণ দ্বারা বেষ্টিত এর জন্য বড় যথেষ্ট । এটি চেয়ে ভাল গ্যারান্টি । এন ( 1 )C/nnO(1)
যুবাল ফিল্মাস

-3

আমি অন্য একটি অ্যালগরিদম প্রস্তাব করব (বা কমপক্ষে এই জাতীয় অ্যালগরিদমের একটি স্কিম)

প্রকল্পটি ধরে নেয় মানগুলি (ধরে নেওয়া " পূর্ণসংখ্যা ") নূন্যতম?) এর মধ্যে[min,max]

  1. ইন সময় দুইটি অ্যারের স্ক্যান, আমরা জানতে পারেন এবং উভয় মান এবং তাদের সংখ্যাধিক্য যদি এই ভিন্ন অ্যারে একে অপরের একাধিক বিন্যাসন নয়O(n)minmax

  2. minউভয় অ্যারে থেকে সমস্ত মান থেকে বিয়োগ করুন (এখানে যে একটি অ্যারে ইতিমধ্যে সাজানো ক্রমে রয়েছে তা বিবেচনায় নেওয়া হয় না, সম্ভবত এটি উন্নতি করা যেতে পারে)

  3. অ্যারে মান ধরে প্রতিনিধিত্ব জনসাধারণ এবং আমরা মাত্রার প্রতিটি একটি ত্বরণ / বেগ প্রয়োগ (এই একটি মাত্রার থেকে উন্নত করা যায় নির্দিষ্ট ক্ষেত্রে অধীনে)সি > 11c>1

  4. জনগণকে সর্বাধিক মান না পাওয়া পর্যন্ত সরিয়েmax-min ফেলুন, এতে জটিলতা রয়েছে । এটি একই মান এবং তাদের বহুগুণ উভয়কেই সন্ধান করতে দেয় , যদি এগুলির মধ্যে পার্থক্য থাকে তবে অ্যারেগুলি একে অপরের অনুকৃতকরণ নয়। অন্যথায় অ্যারেগুলি একে অপরের অনুমতি ationsO((maxmin)n)

উল্লেখ্য উপরোক্ত অ্যালগরিদম স্কিমটি অনেকগুলি ব্যবহারিক পরিস্থিতিতে বেশ দ্রুত (নির্ধারক) হতে পারে।

উপরের অ্যালগরিদম স্কিমটি " চলমান জনসাধারণ " নিয়োগের ক্ষেত্রে রৈখিক-সময় বাছাই করা অ্যালগরিদমের পরিবর্তিত । " চলমান জনগণ " বাছাই করা অ্যালগরিদমের পিছনে শারীরিক স্বীকৃতি হ'ল:

ধরে নিন প্রতিটি আইটেমের মান আসলে এর ভর মাত্রার প্রতিনিধিত্ব করে এবং সমস্ত আইটেমকে একটি লাইনে সজ্জিত করে এবং একই ত্বরণ বল প্রয়োগ করে তা কল্পনা করে।

তারপরে প্রতিটি আইটেম তার ভর সম্পর্কিত আরও একটি দূরত্বে চলে যাবে, আরও বৃহত্তর কম দূরত্ব এবং তদ্বিপরীত। তারপরে সাজানো আইটেমগুলি পুনরুদ্ধার করতে দূরবর্তী ভ্রমণ দ্বারা বিপরীত ক্রমে আইটেমগুলি সংগ্রহ করুন।

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

এই ক্ষেত্রে, উপরোক্ত অ্যালগরিদমটি সংখ্যা ভিত্তিক বাছাই করা অ্যালগরিদমগুলির সাথে সমান (যেমন রেডিক্স-সাজান , গণনা-বাছাই )

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


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