जावा - हम एक सरणी को "वेक्टर" क्यों कहते हैं?


20

मैं जावा प्रोग्रामिंग पर एक किताब पढ़ रहा हूं, और पुष्टि करना चाहता हूं कि मैं "वेक्टर" शब्द की परिभाषा समझता हूं। विकिपीडिया का कहना है कि वेक्टर "एक आयामी आयाम", स्रोत http://en.wikipedia.org/wiki/Vector है

यह केवल एक सरणी सरणी कॉल करने के लिए आसान नहीं होगा? क्या कोई कारण है कि हमें ऐसी फैंसी भाषा को "वेक्टर" के रूप में उपयोग करने की आवश्यकता है? क्या एक सरणी और एक वेक्टर के बीच अंतर है?


यहां छवि विवरण दर्ज करें

स्रोत: गेल मैकडॉवेल द्वारा कोडिंग साक्षात्कार, 4 वें संस्करण को क्रैक करना, पृष्ठ 47।

प्रश्न
- आपने english.stackexchange.com पर यह पोस्ट क्यों नहीं किया?
A - क्योंकि मुझे लगता है कि केवल कंप्यूटर विज्ञान उन्मुख लोगों के पास एक अच्छा जवाब होगा।


1
वैक्टर ArrayLists के समान नहीं हैं, अर्थात् अंतर्निहित सिंक्रनाइज़ेशन के कारण। यहाँ अधिक जानकारी: stackoverflow.com/questions/2986296/…
ज़ीरो वेनवेल

ऑफ-टॉपिक: "वेक्टर" शब्द का उपयोग सिर्फ जावा में नहीं किया जाता है। 1. C ++ लाइब्रेरी में std::vector<…>(डायनेमिक-आकार "सरणियाँ") है। 2. सीएलआर (.NET रनटाइम) भी "सरणियों" और "वैक्टर" के बीच अंतर करता है, बाद वाला पूर्व का एक विशेष मामला है, अर्थात् एक आयामी, शून्य-आधारित वाले)। यह भेद महत्वपूर्ण है क्योंकि वैक्टर के लिए विशेष अनुकूलन हैं। 3. गणित में, एक n वास्तविक संख्या का -tuple भी कभी कभी "वेक्टर" कहा जाता है।
स्टैकएक्स

1
@JeroenVannevel मुझे लगता है कि आपने वेक्टर वर्ग और वेक्टर की अवधारणा के बीच भ्रम की स्थिति बनाई है जिसे एक अपरिमेय सरणी माना जा सकता है।
सी। शेम्पेन 23

ओटी, अगर आप कंप्यूटर विज्ञान के लोगों से जवाब चाहते हैं, तो यहां पोस्ट क्यों करें और cs.stackexchange पर नहीं? और जावा झंडा क्यों? मैं अपने प्रोग्रामिंग क्लास से जो भी याद करता हूं, उसमें ऐरे हैं और फिर लिंक्ड-लिस्ट है। एरे को छोड़कर, कंटेनरों (वेक्टर, सूची, नक्शा, ढेर, आदि) को लिंक्ड-लिस्ट के रूप में लागू किया जाता है।
imel96

2
हम वेक्टर को ऐरे क्यों कहते हैं?
m3th0dman

जवाबों:


35

विशिष्ट उपयोग में, "सरणी" का अर्थ एकल आयामी सरणी या बहुआयामी सरणी हो सकता है। इसके अलावा, गणित में, एक मैट्रिक्स 2-आयामी सरणी है जबकि एक वेक्टर 1-आयामी सरणी है।


8
ऑफ-टॉपिक: गणित में, "स्केलर" एक 0-आयामी सरणी है?
22

6
@stakx: हाँ, यह बिल्कुल सही है। आमतौर पर एक स्केलर सिर्फ एक स्केलर होता है, कोई भी वास्तव में इसे "0-आयामी सरणी" नहीं कहेगा। लेकिन विचार सही है।
ग्रेग हेविगिल

2
यह कहना अधिक सटीक है कि वे सभी टेंसर्स हैं। वोल्फ्राम मैथवर्ल्ड से: "सेंसर स्केलर के सामान्यीकरण हैं (जिनका कोई सूचकांक नहीं है), वैक्टर (जिनका वास्तव में एक सूचकांक है), और मैट्रिस (जो बिल्कुल दो सूचकांक हैं) एक मनमाना संख्या में सूचकांकों की संख्या में हैं।" (रॉलैंड, टॉड और वीसस्टीन, एरिक डब्ल्यू। " सेंसर"मैथवर्ल्ड से - एक वोल्फ्राम वेब संसाधन। mathworld.wolfram.com/Tensor.html )
SOFe

क्या मूल्य के लिए, गणित में एक वेक्टर 1-आयामी सरणी नहीं है। सदिश एक सदिश स्थान का एक तत्व है, अर्थात्, एक सेट जिसमें तत्वों को जोड़ा जा सकता है और स्केलर से गुणा किया जा सकता है।
एमएलएनज़

सबसे प्रसिद्ध वेक्टर स्पेस R ^ n है, जो तत्व-वार जोड़ और गुणा के साथ संख्याओं के "सरणियों" का सेट है। वास्तविक फ़ंक्शंस का सेट भी एक सदिश स्थान है, लेकिन आमतौर पर लोग फ़ंक्शंस के बारे में नहीं सोचते हैं। वर्णों की एक सरणी एक वेक्टर स्थान नहीं होगी, क्योंकि इसके अलावा और गुणन का कोई स्पष्ट विकल्प नहीं है। गणित के शब्दजाल में, एक सरणी एक टपल या परिमित अनुक्रम है। Tuples के अधिक उदाहरण के लिए en.wikipedia.org/wiki/Vector_(mathematics_and_physics) देखें जो वैक्टर नहीं हैं।
एमएलएनज़

10

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

ArrayLists वैक्टर से भिन्न है कि वैक्टर व्यक्तिगत संचालन को सिंक्रनाइज़ करता है, जो कि आप जॉन स्कैकेट के अनुसार समवर्ती उद्देश्यों के लिए नहीं चाहते हैं । इस प्रकार वेक्टर को ArrayList के पक्ष में हटा दिया गया है लेकिन कुछ अभी भी इसे वेक्टर कहते हैं।

नाम मूल रूप से एक 1 आयामी मैट्रिक्स के लिए गणितीय शब्द से लिया गया है। यह संरचना के बावजूद वास्तव में एक n-tuple है


2
मुझे लगता है कि आपने वेक्टर वर्ग और वेक्टर की अवधारणा के बीच भ्रम की स्थिति बनायी है जिसे एक अपरिमेय सरणी के रूप में माना जा सकता है और आइल विशिष्ट टूआई जावा को नोट करते हैं।
सी। शेम्पेन 23

@ C.Champagne उन्होंने जावा उदाहरण का उपयोग किया, इसलिए मैंने उन्हें दिया। मैंने गणितीय निर्माण के लिए परिभाषा जोड़ी है, जो संयोगवश तकनीकी रूप से "वेक्टर" भी नहीं है।
वर्ल्ड इंजीनियर

2
मैं @ सी। शेम्पेन के साथ हूं। यदि उनका मतलब वेक्टर (कक्षा) होता तो पाठ में कैप V का उपयोग किया जाता। वे एक लोअरकेस v का उपयोग करते थे जो वेक्टर की शास्त्रीय (वर्ग नहीं) परिभाषा को इंगित करता है।
रिग

उम, वैक्टर को गणित में वैक्टर कहा जाता है । आपका क्या मतलब है, "तकनीकी रूप से 'सदिश' या तो नहीं"?
एंड्रेस एफ।

@AndresF। एक सरणी या "वेक्टर" जैसी संख्याओं का एक सेट एक n-tuple होगा मेरी समझ है क्योंकि यह मूल्यों का एक असतत संग्रह है।
वर्ल्ड इंजीनियर

4

आमतौर पर, वेक्टर और सरणी एक ही चीज होती है और प्रोग्रामिंग करते समय इसे परस्पर उपयोग किया जाता है। यह ज्यादातर जगहों पर है, इसलिए आपको ज्यादातर समय इसकी चिंता नहीं करनी चाहिए।

उस ने कहा, भाषा अभेद्य है और हमारे पास कभी-कभी ऐसे शब्द होते हैं जिनके अलग-अलग संदर्भों में अलग-अलग अर्थ होते हैं जो एक ही बात का अर्थ रखते हैं, या एक शब्द के दो या दो से अधिक भिन्न अर्थ होते हैं।

सी में एक सरणी उसी प्रकार के डेटा तत्वों की एक श्रृंखला है जो मेमोरी में संचित रूप से संग्रहीत होती है। जावा को वह अर्थ विरासत में मिला। यह सूची या वेक्टर के समान नहीं है, क्योंकि सरणियाँ उन लोगों की तुलना में अधिक बुनियादी हैं।

एक वेक्टर एक गणितीय निर्माण है जिसे एक वस्तु के रूप में परिभाषित किया जाता है जिसे उसी प्रकार के किसी अन्य ऑब्जेक्ट में जोड़ा जा सकता है, या किसी भी वास्तविक (या जटिल) संख्या से गुणा किया जा सकता है जिसके परिणामस्वरूप उसी प्रकार का एक और वेक्टर होता है। इसके कुछ अन्य गुण भी हैं जो बहुत उपयोगी हैं।

एक सदिश का आयाम है । यह विभिन्न प्रकार के वैक्टरों की न्यूनतम संख्या है जिन्हें उस प्रकार के हर संभव वेक्टर को प्राप्त करने के लिए संयोजित किया जाना है। वेग और त्वरण 3-आयामी वैक्टर हैं क्योंकि अंतरिक्ष में 3 आधार दिशाएं हैं और उन तीन आधार दिशाओं के गुणकों को जोड़कर आप अंतरिक्ष में कोई भी स्थान प्राप्त कर सकते हैं। एक विमान में स्थिति 2-आयामी वेक्टर है, और व्यक्तिगत संख्या 1-आयामी वैक्टर हैं।

एक आयाम n के वेक्टर का प्रतिनिधित्व करने का एक तरीका है, प्रत्येक तत्व वेक्टर का कितना हिस्सा है, इसका प्रतिनिधित्व करते हुए प्रत्येक एक n तत्वों की एक सरणी का उपयोग करके ।

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

एक और मामला जहां एक शब्द के दो अलग-अलग अर्थ हैं, उदाहरण के लिए, आयाम । 1-आयामी सरणी के रूप में एक वेक्टर की विकिपीडिया परिभाषा एक उदाहरण है। आप यहां वेक्टर आयाम की बात नहीं कर रहे हैं। आप डेटा संरचना के कंप्यूटर प्रतिनिधित्व के बारे में बात कर रहे हैं। एक 3-आयामी वेक्टर को "1-आयामी" आकार 3. पंक्ति में 3 नंबर द्वारा दर्शाया जा सकता है। एक 3x3 मैट्रिक्स को "2-आयामी" सरणी द्वारा दर्शाया जा सकता है, जिसे प्रोग्रामर सरणियों की एक सरणी कहते हैं। फिर भी एक 3x3 मैट्रिक्स भी आयाम 9 का एक गणितीय वेक्टर है (क्योंकि इसमें एक वेक्टर के सभी गुण हैं) और 9 नंबर हैं। भ्रामक, हुह?

वैसे भी, मुझे लगता है कि जवाब बस है: चिंता मत करो। यह सब संदर्भ पर निर्भर करता है। दो शब्दों की उत्पत्ति अलग-अलग है, लेकिन डेटा संरचनाओं के संदर्भ में, जब वे वेक्टर कहते हैं, तो उनका मतलब बिल्कुल सरणी है


मुझे नहीं लगता कि यह सच है। लगभग सभी दस्तावेज़ों में, जो मैंने ऐरे के पार चलाए हैं, निश्चित आकार का मतलब है, वेक्टर का अर्थ है कि संरचना गतिशील रूप से हो सकती है (लेकिन जरूरी नहीं है)। प्रोग्रामिंग के संदर्भ में शर्तों की गणितीय परिभाषा अविश्वसनीय रूप से भ्रामक है।
चू

-1

ऊपर दिए गए उत्तर बताते हैं कि यह वर्ग "एरे" से अलग क्यों है - और मुझे संदेह है कि इस कारण से एक अलग नाम का उपयोग किया जाता है क्योंकि प्रोग्रामर को एक सुव्यवस्थित नाम स्थान होने से मदद मिलती है - दूसरे शब्दों में यदि आप "वेक्टर" के बारे में बात करते हैं तो यह है स्पष्ट रूप से आप किस वर्ग से मतलब रखते हैं, जबकि यदि सभी समान वर्ग केवल सरणियाँ थे तो यह पूरी तरह से स्पष्ट नहीं होगा।


-1

मुझे लगता है कि "वेक्टर" शब्द C ++ के std :: वेक्टर से आया है। यह जावा और C # से पहले दिखाई दिया।


3
कृपया (दृढ़ता से) अपनी राय का समर्थन करने के लिए एक बाहरी संदर्भ जोड़ने पर विचार करें।

-1

यह सिर्फ मैला संपादन है।

Java के शुरुआती संस्करणों में ArrayList शामिल नहीं था। ArrayList के बजाय, वेक्टर का उपयोग किया गया था। ArrayList को बाद में जोड़ा गया था और अब इसका उपयोग अधिकांश उद्देश्यों के लिए वेक्टर के बजाय किया जाता है। मुझे उम्मीद है कि पुस्तक को ArrayList में जोड़ने से पहले लिखा गया था, और जब पाठ को अपडेट किया गया था, तो वेक्टर का यह संदर्भ नहीं था।

मेरा सुझाव है कि आप "दस मिनट में यह सब सीखें" इस तरह से बचें। आम तौर पर वे जल्दी और सुस्त रूप से लिखे जाते हैं। ज्ञान का यह स्तर आपको एक गंभीर दुकान में नौकरी नहीं देगा।

इसके बजाय प्रौद्योगिकी के मान्यता प्राप्त उपयोगकर्ताओं द्वारा अच्छी तरह से समीक्षित पुस्तकों की तलाश करें और समझने के लिए पढ़ें।


1
"प्रारंभिक संस्करण ... था"? और क्या है java.util.Vector?
मोनिका को पुनः स्थापित करें - एम। श्रोडर

1
पदावनत क्या java.util.Vector है। :-)
ब्रायन नोब्लुच

-1

वेक्टर शब्द इंजीनियरिंग / भौतिकी से आता है। वैक्टर 2 और 3 आयामी रेखाओं का प्रतिनिधित्व करते हैं जिनकी एक दिशा होती है। उदाहरण के लिए, मान लें कि एक प्रक्षेप्य में 20 m / s का क्षैतिज वेग और 10 m / s का लंबवत वेग है। तो आप इसे (20,10) के रूप में दर्शाएंगे। यह तिरछे दाएं तरह से उड़ रहा है, इसलिए अब देखें कि गणितीय रूप से वेग वाले वैक्टर एरे वैक्टर कैसे बनते हैं।


-2

हम सरणियों को वैक्टर नहीं कहते हैं, या तो आप अपने स्रोत या स्रोत गलत समझा जावा, या दोनों।
एक सरणी वेक्टर से एक बहुत अलग डेटास्ट्रक्चर है, जो फिर से एक सूची से भिन्न होता है (जो आपके पेस्ट किए गए कोड का उपयोग करता है)।

बेशक जावा में एक गणितीय वेक्टर तीन तंत्रों में से किसी एक का उपयोग करके लागू किया जा सकता है, और हुड के तहत या वेक्टर और सूची दोनों को सरणियों का उपयोग करके लागू किया जा सकता है।

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