मेरे पास सूची के रूप में कुछ समन्वय बिंदु हैं जिन्हें पहले x और फिर y मानों के आधार पर क्रमबद्ध किया जाता है। मैंने इस समाधान की कोशिश की यह वाला लेकिन यह मेरे काम नहीं आया। यह मेरे बिंदुओं का एक सरलीकृत सेट है:

points=[[0.,0.],[0.,1.],[1.,0.],[1.,1.],[1.,2.],[1.,3.],[2.,0.]]

मैं उन्हें दक्षिणावर्त कोण में सहारा देना चाहता हूं। मेरा अंजीर इसे स्पष्ट रूप से दिखाता है। मैं पहले बिंदु से शुरू करता हूं (यह यहां (0,0) है) और अन्य बिंदु रखता हूं जिनका x मान समान है लेकिन उनका y अधिक है। फिर, मैं उन बिंदुओं के लिए जाता हूं कि उनके x मान 1 हैं और उच्च y मानों से कम वाले मानों को क्रमबद्ध करें। बिंदु (1,1) के बाद मेरे पास समान y के साथ दो अंक हैं और मैं पहले बिंदु को उच्च x के साथ चुनता हूं। अंत में मैं अपनी क्रमबद्ध सूची इस प्रकार रखना चाहता हूं:

resor_poi=[[0.,0.],[0.,1.],[1.,3.],[1.,2.],[1.,1.],[2.,0.],[1.,0.]]

मैं अग्रिम में किसी भी मदद की सराहना करता हूं। यहां छवि विवरण दर्ज करें

0
Ali_d 28 मई 2021, 11:33

1 उत्तर

एक तरीका यह होगा कि केंद्र के संबंध में प्रत्येक बिंदु के कोण की गणना करें (उदाहरण के लिए सभी बिंदुओं का माध्य), और फिर बिंदुओं को कोण के अनुसार क्रमबद्ध करें। कोण की गणना करने के लिए, आप atan2 फ़ंक्शन का उपयोग कर सकते हैं।

यदि उस पद्धति के परिणाम आपके इच्छित क्रम को नहीं देते हैं, तो TSP (ट्रैवलिंग सेल्समैन प्रॉब्लम) की खोज करें। सामान्य तौर पर हल करना मुश्किल है (एक एनपी समस्या है) लेकिन इसे ठीक से हल किया जा सकता है यदि अंकों की संख्या कम हो। यदि अंकों की संख्या बड़ी है, तो ऐसे एल्गोरिदम हैं जो लगभग एक अच्छा समाधान ढूंढते हैं।

2
Diego Palacios 28 मई 2021, 11:55