क्या हर एनपी-हार्ड समस्या कम्प्यूटेबल है?


19

क्या यह आवश्यक है कि एक एनपी-कठिन समस्या कम्प्यूटेशनल होनी चाहिए?

मुझे ऐसा नहीं लगता, लेकिन मुझे यकीन नहीं है।

जवाबों:


15

नहीं, एक NP -हार्ड समस्या गणनीय होने की जरूरत नहीं। परिभाषा काफी हद तक पूरी हो चुकी है: एक समस्या L , NP भार है, यदि उस समस्या का पॉली-टाइम समाधान है, जिसका अर्थ है में हर समस्या है, तो NPपॉली-टाइम समाधान है (यानी कमी N PL में प्रत्येक समस्या के लिए मौजूद है। ।)।NP

निर्विवाद समस्याएं तब बहुत कठिन होती हैं: मान लीजिए कि हम बहुपद में एक को हल कर सकते हैं। फिर हम इस प्रमाण का उपयोग करते हैं कि यह प्राप्त करने के लिए कि यह कम्प्यूटेशनल और असुविधाजनक दोनों है, एक विरोधाभास है। इस झूठ से, हम कुछ भी प्राप्त कर सकते हैं, एक बहुपद समय एल्गोरिथ्म जो कुछ के लिए है अर्थात् है कि वहाँ NP समस्या हम देख रहे हैं।

उदाहरण के लिए, हॉल्टिंग समस्या विचार करें H। हम किसी भी कम कर सकते हैं NP भाषा A करने के लिए H इस प्रकार, यह मानते हुए कि हम एक polytime चेकर है f(s,c) जो जांच करता है कि c के लिए एक प्रमाण पत्र है sA :

  • दिए गए इनपुट s
  • निर्माण (लेकिन नहीं चला सकता हूँ) ट्यूरिंग मशीन M जो इनपुट लेता x हर प्रमाण पत्र की कोशिश करता है c अगर और हाल्ट c एक प्रमाण पत्र सत्यापित करता है कि है sA
  • लौटें H(M,x)(यानी इनपुट x पर सही iff M हाल्ट लौटें )x

इस प्रकार, पॉली-टाइम एल्गोरिथ्म को हल करने की समस्या को हल करने के लिए एकल कॉल के साथ, हम बहुपद समय में किसी भी NP समस्या को हल कर सकते हैं ।

इस तरह की कमी उपयोगी नहीं है, क्योंकि यह सब बताता है कि "अगर झूठ है तो कुछ"। हम पहले से ही जानते हैं कि असुविधाजनक समस्याओं के लिए कोई पॉलीटाइम एल्गोरिथम नहीं है।


7
"परिभाषा काफी हद तक पूर्ण है", लेकिन वह नहीं है जो आपके उत्तर में उस उद्धरण का अनुसरण करता है।

इस बारे में मेरा एक सवाल है। मैं एक ऐसे फ़ंक्शन की कल्पना कर सकता हूं जो कुछ उचित बाधाओं के तहत संभव कार्यक्रमों के सबसे बड़े सेट के लिए रुकने की समस्या को हल करता है, लेकिन मैं कल्पना कर सकता हूं कि यह फ़ंक्शन अभी भी गणना योग्य नहीं है (इस अर्थ में कि हम इसे कभी भी अनंत समय नहीं दे पाएंगे) । फिर भी अगर हम किसी तरह था यह का हल है, तो यह और भी मेरे लिए स्पष्ट नहीं कर रहा है कि यह सब एनपी कठिन समस्याओं का समाधान जरूरी चाहिए। तो या तो इस जवाब में तर्क का पालन नहीं किया जाता है (जिसका अर्थ अनिर्णायक है! = असंबद्ध), या मेरा तर्क त्रुटिपूर्ण है (संभावना है)। तो दोष क्या है?
user541686

12
इस उत्तर में से अधिकांश गलत है, जिसमें एनपी हार्ड की आपकी परिभाषा भी शामिल है: समस्या ए एनपी मुश्किल है, अगर "हर एनपी समस्या बी के लिए, बी से ए की पॉली-टाइम कमी है" यही कारण है नहीं एक ही बात के रूप में "अगर ए, पाली का समय है तो P = NP।" (उत्तरार्द्ध पूर्व का एक परिणाम है, लेकिन इसके विपरीत नहीं।) विशेष रूप से, लगभग निश्चित रूप से गैर-कम्प्यूटेशनल समस्याएं हैं जो एनपी कठिन होने में भी विफल हैं। मैंने विवरणों पर काम नहीं किया है, लेकिन एक पर्याप्त सामान्य सेट (मजबूर करने की भावना) में सदस्यता की समस्या को चाल करना चाहिए। हॉल्टिंग सेट, विशेष रूप से, एनपी-हार्ड है, हालांकि, आपकी कमी से।

7
A से B तक की पॉली-टाइम की कमी के बारे में इस तरह से सोचें: यह एक ऐसा प्रोग्राम है जो बहुपद समय में चलता है, लेकिन इसमें क्वेरी की विशेष क्षमता है, एक सिंगल स्टेप में, जो कि समस्या B के उदाहरणों का उत्तर देता है। चाहे जो भी हो बी के लिए एक पॉली-टाइम एल्गोरिथ्म है, या यहां तक ​​कि चाहे बी कम्प्यूटेबल है, यह अभी भी निम्नलिखित प्रश्न पूछने के लिए समझ में आता है: यह मानते हुए कि ऑरेकल इसके (एक चरण में) पूछे गए प्रश्नों का सही उत्तर देता है, प्रश्न में प्रोग्राम करता है बहुपद समय में चलाएं और समस्या ए के उदाहरणों को सही ढंग से हल करें?

2
@MikeHaskel आपकी ओरेकल उपमा केवल तभी सटीक होती है यदि, ऑरेकल को क्वेरी करने के बाद, प्रोग्राम को उसी ऑर्कल के समान उत्तर के साथ रोकना चाहिए। अन्यथा, सह-सैट SAT को कम कर देता है: ओरेकल और नेगेट को क्वेरी करें। कुछ कमी धारणाओं में, जैसे ट्यूरिंग में कमी, यह स्वीकार्य होगा, लेकिन मानक पॉली-टाइम में कमी, या कई-एक कटौती में भी, यह नहीं है।
चि

16

इस प्रश्न को लेकर इस समुदाय में कुछ काफी भ्रम हैं। मैं पानी को साफ करने और कम्प्यूटेबिलिटी और एनपी-कठोरता के बीच के संबंध को रोशन करने की उम्मीद में एक विस्तृत जवाब दूंगा।

पहले, मेरा मानना ​​है कि इसमें शामिल विभिन्न परिभाषाओं के बारे में स्पष्ट और स्पष्ट होने से बहुत सारी उलझनें दूर हो जाएंगी।

एक स्ट्रिंग कुछ निश्चित परिमित वर्णमाला के पात्रों का एक परिमित अनुक्रम है।

एक निर्णय समस्या तार का एक सेट है। (यह सेट आम तौर पर अनंत है।) कुछ संपत्ति के लिए परीक्षण स्ट्रिंग के रूप में निर्णय समस्या के बारे में सोचो: संपत्ति के साथ तार सेट में हैं, और संपत्ति के बिना तार नहीं हैं।

मान लें कि हमारे पास दो निर्णय समस्याएं हैं, और बी । कहते हैं एक है बहुपद समय कम करने योग्य करने के लिए बी अगर कोई बहुपद है पी ( एक्स ) और एल्गोरिथ्म कुछ एल्गोरिथ्म एमABABp(x)M कि इस तरह के, सभी स्ट्रिंग्स के लिए ,s

  • यदि आप को इनपुट s के साथ प्रदान करते हैं , M , P से कम में रुकता है ( | s ) स्टेप्स (जहाँ | s | स्ट्रिंग s की लंबाई है ) और एक स्ट्रिंग M को आउटपुट करता है (MsMp(|s|)|s|sM(s)
  • में है एक अगर और सिर्फ़ अगर एम ( रों )sAM(s) में है B

एक निर्णय समस्या , NP की कठिन है, यदि हर NP निर्णय समस्या A , A के लिए हैBAA करने के लिए बहुपद समय कम करने योग्य है B

एक एल्गोरिथ्म एम है अगर एक निर्णय समस्या कम्प्यूटेशनल हैM , उस के लिए सभी स्ट्रिंग्स, ,s

  • यदि आप इनपुट एस के साथ प्रदान करते हैंMs , तो हाल्ट और आउटपुट या तो "हां" या "नहीं" है।M
  • उत्पादन "हाँ" अगर है में है एक और "नहीं" अन्यथा।sA

उपरोक्त परिभाषाओं के साथ, हम तुरंत स्पष्ट कर सकते हैं कि मुझे क्या लगता है कि आपके प्रश्न में मूल भ्रम हो सकता है: निर्णय समस्या, कटौती, या एनपी-कठोरता की परिभाषाओं में कुछ भी निर्णय की समस्याओं की गणना करने योग्य नहीं है। परिभाषाएँ निर्णय की समस्याओं के बारे में सही समझ रखती हैं, क्योंकि स्ट्रिंग्स के मनमाने ढंग से सेट, और ये सेट वास्तव में बहुत खराब हो सकते हैं।


टेबल पर दो प्रश्न छोड़ता है:

  1. परिभाषाएँ इस संभावना को छोड़ देती हैं कि गैर-गणना योग्य कार्य एनपी-हार्ड हो सकते हैं। वहां हैं वास्तव में गैर-कम्प्यूटेबल, एनपी-हार्ड फ़ंक्शन हैं?
  2. एक अंतर्ज्ञान है कि एक समस्या कह रही है एनपी-हार्ड कह रही है कि इसे हल करना मुश्किल है। यह कहना कि यह गैर-संगणक है, यह कहने जैसा है कि इसे हल करना वास्तव में कठिन है। तो, हैं सभी गैर-कम्प्यूटेशनल समस्याएं एनपी-हार्ड हैं?

प्रश्न 1 का उत्तर देना आसान है। गैर-गणना योग्य निर्णय समस्याओं को खोजने के लिए दो विशेष रूप से महत्वपूर्ण तरीके हैं जो एनपी-हार्ड हैं। पहली है रुकने की समस्या: हॉल्टिंग की समस्या, , की संपत्ति है कि हर कम्प्यूटेशनल निर्णय समस्या बहुपद-टाइम रिड्यूस टू एच है । चूंकि एनपी समस्याएं कम्प्यूटेशनल हैं, इसलिए एनपी की हर समस्या बहुपद-टाइम रिड्यूसबल टू एच है , इसलिएHHH एनपी-हार्ड है।H

गैर-कम्प्यूटेबल, एनपी-हार्ड समस्या का निर्माण करने का दूसरा महत्वपूर्ण तरीका यह है कि हम किसी ज्ञात एनपी-हार्ड समस्या को किसी भी ज्ञात गैर-कम्प्यूटेबल समस्या के साथ जोड़ सकते हैं। चलो एनपी कठिन हो सकता है और बी गैर गणनीय हो। निर्णय समस्या फार्म एक बी इस प्रकार है: एक बी रूप से उन लोगों के तार "0, में एक स्ट्रिंग के बाद होता है एक " और रूप से उन लोगों के लिए "1, में एक स्ट्रिंग के बाद बी "। एक बी क्योंकि हम करने के लिए (किसी भी समस्या के) किसी भी कमी को बदल सकते हैं एनपी कठिन है एक करने के लिए एक कमी में एकABABABABABAAB: बस इसके आउटपुट स्ट्रिंग के सामने एक अतिरिक्त "0" आउटपुट के लिए एल्गोरिथ्म को ट्वीक करें। , गैर गणनीय है कंप्यूटिंग के बाद से एक बी निर्णय लेने की आवश्यकता है जो तार कि "1" के साथ शुरू सेट में कर रहे हैं; यह असंभव है, क्योंकि बी गैर-संगणक है।ABABB


प्रश्न 2 काफी पेचीदा है, लेकिन वास्तव में गैर-गणना योग्य निर्णय समस्याएं हैं जो एनपी-हार्ड (पी एनपी मानकर ) नहीं हैं। युवल का ठीक उत्तर इस तरह की निर्णय समस्या का स्पष्ट रूप से निर्माण करता है। (कमरे, किसी भी "कोहेन में किसी भी कम्प्यूटेबिलिटी सिद्धांतकारों के लिए Π 0 1Π10 -generic" चाल, के रूप में अच्छी तरह से करना होगा।) मैं से विभाजित करेंगे क्यों अंतर्ज्ञान है कि "एनपी कठिन समस्याओं कठिन, गैर गणनीय समस्याओं कड़ी मेहनत कर रहे हैं " गलत है।

एनपी-कठोरता और गैर-कम्प्यूटेबिलिटी दोनों का कहना है कि एक समस्या बहुत ही सामान्य अर्थों में "कठिन" है, लेकिन वे बहुत अलग हैं और एक ही तरह की घटना के साथ एक साथ गांठ नहीं होनी चाहिए। विशेष रूप से, एनपी-कठोरता एक "सकारात्मक" संपत्ति है: एक एनपी-कठिन समस्या इस अर्थ में कठिन है कि, ए के लिए एक धोखा पत्र तक पहुंच को देखते हुए , आप समस्याओं का एक कठिन वर्ग हल कर सकते हैंAA । दूसरी ओर, गैर कम्प्यूटेबिलिटी एक "नकारात्मक" संपत्ति है: एक गैर गणनीय समस्या कठिन अर्थ है कि आप में नहीं कर सकते का समाधान एकAA संसाधनों की किसी वर्ग के साथ

("जबरदस्ती," वैसे, तकनीक का उपयोग "कोहेन जेनेरिक" के उत्पादन के लिए किया जाता है, जिसका मैंने उल्लेख किया है। बहुत अस्पष्ट होने के लिए, जबरदस्ती उन चीजों का उत्पादन करने का एक सामान्य तरीका है जो "सामान्य" हैं। कोई सकारात्मक गुण और हर नकारात्मक संपत्ति। इसीलिए मजबूरन सीधे एक ऐसी समस्या उत्पन्न हो सकती है जो न तो संगणक है और न ही एनपी-हार्ड।)Π10


2
क्या आप एक अशिष्ट भाषा का निर्माण नहीं कर सकते हैं जो विकर्णीकरण द्वारा एनपी-कठिन नहीं है? सैट से सभी डिकेडर्स और सभी पॉलीटाइम कटौती के खिलाफ विकर्ण।
युवल फिल्मस

1
@YuvalFilmus जो शायद काम करता है, हाँ। मुझे लगता है कि एसएटी से पॉलीटाइम कटौती के खिलाफ विकर्णकारी क्यों संभव है के लिए विवरण लिखना स्वाद में समान है जो यह दर्शाता है कि काम करता है, हालांकि, इसलिए मैंने उन शर्तों के बारे में नहीं सोचा।

1
@YuvalFilmus मैं भी अभी-अभी आप पी ग्रहण करने के लिए है कि स्पष्टीकरण जोड़ा एनपी: वहाँ निश्चित रूप से है कि पढ़ मेरी सबूत में उठाया गया कदम था "एनपी में कुछ समस्या हो जाती हैं लेकिन नहीं पी में"

1
@aelguindy मुझे यकीन नहीं है कि यह साबित करने के लिए सबसे सुलभ तरीका क्या है। मैंने मजबूर करने की तकनीक का उल्लेख किया , जो बहुत सामान्य और शक्तिशाली है। मैंने इसे लोगों से सीखा, पाठ्यपुस्तकों से नहीं, इसलिए मुझे व्यक्तिगत रूप से मजबूर करने पर एक महान संदर्भ का पता नहीं है। जैसा कि युवल ने बताया, हालांकि, मजबूरन शायद ओवरकिल हो गया है: विकर्णकरण से जुड़े कुछ और प्रत्यक्ष तर्क शायद काम करते हैं। सोर का "रिकर्सिवली एनुमरेबल सेट्स एंड डिग्रीज़" एक पाठ्यपुस्तक है जो तर्क की उस शैली को बहुत कुछ शामिल करती है यदि आप इससे परिचित होना चाहते हैं। फिर, इसका अधिकांश हिस्सा संभवतः ओवरकिल है, हालांकि। ...

1
@aelguindy इसके अलावा, यदि आप एक सामयिक स्थान के रूप में निर्णय की समस्याओं के सेट के बारे में सोचते हैं, तो आप शायद प्रूफ तैयार करने के लिए बेयर श्रेणी प्रमेय की मालिश कर सकते हैं । यह प्रमेय निकटता से संबंधित है, लेकिन अधिक पुराना है और अधिक सीधा है।

11

नहीं। एनपी-हार्ड का अर्थ है कि यह कठिन एनपी-समस्याओं की तुलना में कठिन या कठिन है। सहज रूप से, अप्रतिस्पर्धी होने से यह एनपी की तुलना में बहुत अधिक कठिन हो जाएगा।

विकिपीडिया:

निर्णय की समस्याएं हैं जो एनपी-हार्ड हैं लेकिन एनपी-पूर्ण नहीं हैं, उदाहरण के लिए हॉल्टिंग समस्या।

सभी जानते हैं कि गणना योग्य नहीं है


4
ध्यान दें, जबकि कुछ गैर-संगणनीय समस्याएं (जैसे रुकने की समस्या) एनपी-हार्ड हैं, इसका मतलब यह नहीं है कि सभी गैर-कम्प्यूटेशनल समस्याएं एनपी-हार्ड हैं। Jmite के उत्तर पर मेरी टिप्पणियाँ देखें। एनपी-कठोरता एक सकारात्मक संपत्ति है: यह कहता है कि आपकी समस्या के उत्तर एनपी समस्याओं को हल करने में मदद कर सकते हैं। एनपी-हार्ड होने का मतलब है कि समस्या कुछ हद तक, कठिन है। सभी कठिन समस्याएं एनपी-हार्ड नहीं हैं।

@ मायके हस्केल: हॉल्टिंग समस्या के समाधान को रोकने से पी * की सभी समस्याओं को कम करने में कठिनाई होती है ..
जोशुआ

1
@ जोशुआ: इसका कोई मतलब नहीं है। यह बिना सबूत के टुकड़े की तरह है। आप इसके समाधान में बिट्स की एक सीमित संख्या होने के लिए एक समस्या के लिए भी क्या मतलब है, और आपको क्या लगता है कि यह सभी असुविधाजनक समस्याओं पर लागू होता है? "पी * हाल्ट" से आपका क्या अभिप्राय है? क्या बाकी है "के nth बिट के माध्यम से कम ..."?
user2357112

1
@ जोशुआ: लगता है कि मूल मुद्दा यह है कि आप मान रहे हैं कि हर समस्या ट्यूरिंग मशीन से मेल खाती है। हर समस्या ट्यूरिंग मशीन से मेल नहीं खाती। कोई problem()फ़ंक्शन नहीं है जिसे हम कॉल कर सकते हैं।
user2357112

1
आपको शायद इसे चैट या कुछ पर ले जाना चाहिए
विनाशकारी नींबू

9

पूर्णता के लिए, हम निम्नलिखित प्रमेय को सिद्ध करते हैं:

एक uncomputable भाषा है जो एनपी कठिन यदि और केवल यदि पी नहीं है मौजूद है एनपी।

यदि पी = एनपी है तो कोई भी गैर-तुच्छ भाषा (जो ) से भिन्न है , वह एनपी-हार्ड (व्यायाम) है, और विशेष रूप से कोई भी असंबद्ध भाषा एनपी-हार्ड है।,{0,1}

अब मान लीजिए कि पी एनपी। चलो टी मैं सब ट्यूरिंग मशीन के कुछ गणन किया। हम चरणों में आवश्यक भाषा एल का निर्माण करेंगे । प्रत्येक चरण में हम एक { 0 , 1 , रखेंगे ? } का रंग { 0 , 1 } * जो हम भी द्वारा निरूपित एल ; यहाँ 0 का मतलब है कि हमने तय किया है कि स्ट्रिंग L में नहीं है , 1 का मतलब है कि हमने तय कर लिया है कि स्ट्रिंग L , और में है ?TiL{0,1,?}{0,1}L0L1L?इसका मतलब है कि हमने अभी तक फैसला नहीं किया है। सभी लेकिन सूक्ष्मता से कई तार रंगे होंगे ?

चरण , हम T i को एक मशीन के रूप में सोचते हैं जो या तो इसके इनपुट को स्वीकार करता है, इसे अस्वीकार करता है, या कभी भी रुकता नहीं है। यदि T i हमेशा रुकता नहीं है तो हम कुछ भी नहीं करते हैं। यदि T i हमेशा रुका रहता है तो हम एक स्ट्रिंग x पाते हैं जैसे कि L ( x ) = ? , और सेट L ( x ) : = 0 यदि T i ( x ) स्वीकार करता है और L ( x ) : = 1 यदि मैं2iTiTiTixL(x)=?L(x):=0Ti(x)L(x):=1Ti(x) अस्वीकार करता है।

चरण , हम T i को उसके इनपुट पर एक (संभवतः) आंशिक कार्य करने वाली मशीन के रूप में सोचते हैं । यदि T i कुल नहीं है, या यदि यह कुल है, लेकिन बहुपद समय में नहीं चलता है, या यदि यह कुल है, लेकिन इसकी सीमा परिमित है, तो हम कुछ नहीं करते हैं। यदि T i कुल है, तो बहुपद समय में चलता है, और इसकी अनंत सीमा होती है, तो हम एक स्ट्रिंग x पाते हैं जैसे कि L ( T i ( x ) ) = ? । यदि एक्स एस टी (है कि, अगर एक्स2i+1TiTiTixL(Ti(x))=?xSATxएक संतोषजनक CNF एन्कोड करता है) फिर हम सेट करते हैं, और अन्यथा हम L ( x ) : = 1 सेट करते हैंL(x):=0L(x):=1

असीम कई कदम के बाद, हम एक मिल का रंग { 0 , 1 } * जो हम एक मनमाना तरीके से एक वास्तविक भाषा को पूरा करें।{0,1,?}{0,1}

परिणामी भाषा अभिकलन योग्य नहीं है: चरण 2 मैं सुनिश्चित करता हूं कि T i इसकी गणना नहीं करता है। यह एनपी-हार्ड भी नहीं है, लेकिन यहां तर्क थोड़ा अधिक नाजुक है। मान लीजिए कि टी i , एसएटी से एल तक एक पॉलीटाइम कमी है । अगर की सीमा टी मैं परिमित है तो हम बदल सकते हैं टी मैं एक polytime मशीन सैट निर्णय लेने से, की सच्चाई तालिका में सूचीबद्ध करके में एल की सीमा पर टी मैं । यह धारणा पी द्वारा असंभव है एनपी। इस प्रकार T i की अनंत सीमा है, लेकिन फिर चरण 2L2iTiTiLTiTiLTiTi नियम से सैट से L तक की कमी को दर्शाता है।2i+1L


3

एक भाषा अगर हर के लिए एनपी कठिन है एल 'एन पी हम उस राशि एल ' के लिए बहुपद समय कम करने योग्य है एल । Nondeterministic ट्यूरिंग मशीनों के लिए स्वीकृति की समस्याLLNPLL

ANTM={M,wM is a nondeterministic Turing machine that accepts w}

अनिर्णायक है और एनपी-हार्ड है। एक पर विचार के लिए एल ' कुछ गैर नियतात्मक ट्यूरिंग मशीन द्वारा निर्णय लिया गया है एम ' बहुपद समय जटिलता के साथ। L से A N T M तक एक पाली-टाइम कमी f द्वारा दी जाती हैLNPLMfLANTM

f(x)=M,x

3

मुझे लगता है कि लोगों को यह सोचने के लिए मजबूर किया जाता है कि कोई अप्रिय-कठिन एनपी-कठिन समस्या नहीं है, क्योंकि वे इस बात को याद करते हैं कि एनपी-कठोरता एक समस्या की कठोरता पर कम बाध्य है, पी या एनपी जैसी उनकी कठोरता पर एक ऊपरी बाध्य नहीं है।

एक भाषा L को NP-hard होने का मतलब है कि यह NP की भाषा से ऊपर है और यह है। अब अगर आप यह समझते हैं कि यह दिखाने की क्या आवश्यकता है कि मनमाने ढंग से कठिन समस्याएँ हैं।

को भाषा होने दो । एक ब्लैक-बॉक्स के साथ संवर्धित एल्गोरिदम पर विचार करें जो वे में सदस्यता तय करने के लिए उपयोग कर सकते हैं । सी द्वारा उन्हें निरूपित करते हैं । यह देखने के लिए कि के लिए हॉल्टिंग समस्या आसान है सी , एच एक एल टी सी में नहीं है सीAACACAHaltCACA

Computablity सिद्धांत रूप में यह कहा जाता है कूद के और से दर्शाया जाता है एक ' । तो A < A सख्ती से। और कुछ भी नहीं है हमें इस दोहरा से बंद हो जाता है: एक < एक ' < एक " < एक < AAA<AA<A<A<A<...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.