كيفية وضع خوارزمية توليد عشوائي ولكن صالحة مسار القطار تخطيط ؟

cs.stackexchange https://cs.stackexchange.com/questions/117972

سؤال

وأنا أتساءل عما إذا كان لدي كمية ج من مسارات منحنية و الكمية S من المسارات المستقيمة, كيف يمكنني وضع خوارزمية ، (بمساعدة الحاسوب أو لا) ، تصميم "عشوائية" تخطيط استخدام كل من هذه المسارات ، مثل أن القواعد التالية راض:

1) المسارات عند كل اتصال, شكل المغلق (مستمر) حلقة القطار للذهاب حولها.

2) سلالم الانحناء من المسارات ، الاهتزاز من المسارات ، عبور المسارات كلها مسموح بها.

3) C و S على حد سواء سوف تكون حتى الأرقام.على سبيل المثال سيكون C=20 S=10.علما أن يستغرق 12 المنحنيات في نفس التوجه لجعل دائرة كاملة 360 درجة بحيث لا يقل عن 12 من تلك المنحنيات تحتاج إلى أن تكون موجهة نحو بنفس الطريقة كاملة 360 درجة.يمكن للآخرين أن "متعرجة" طالما النتيجة الصافية هي 360 درجة بحيث القطار كاملة حلقة.

المسارات المستقيمة هي حوالي 10 بوصة (25.4 سم) لفترة طويلة و في مسارات منحنية نحو 12.4 بوصة (31.6 سم) طويلة (أسفل الوسط ، بعد منحنى) و منحنى 30 درجة.إن "العلاقات" على المسارين يكون أقصى عرض 3 5/8 بوصة (9.2 سم).أنا وضعت مستقيمة منحنية المسار على أعلى من بعضها البعض من خلالها أن 12.4" (31.6 سم) منحنى 12" (30.5 سم) من خطي طول (في نفس اتجاه مستقيم) ، 3" (7.6 سم) من منحنى (في اتجاه عمودي على مستقيم).12C في دائرة قطرها 47.5" (120.6 سم) من مركز إلى مركز المسارات على طرفي نقيض.

جميع القياسات تقريبية.

التحديث

أنا إعادة قياس المسارات باستخدام الكثير منهم للمساعدة في القضاء على الأخطاء إلى حد ما لدهشتي, طول المستقيمة لا 10 بوصة ، أنها على ما يبدو عن 9.78 بوصة.هذا له تأثير كبير على مطابقة متعرج منحنيات المستقيمة.أصلا فكرت 4 منحنيات متعرجة = 5 المستقيمة ولكن هذا ليس صحيحا تماما.4 منحنيات حوالي 47" من المسافة الخطية حتى 5 المستقيمة في 9.78" كل سيكون 48.9" ، ما يقرب من 2 بوصة أطول.لذلك خدعة للوصول إلى LCM (المضاعف المشترك) من 47 9.78.اتضح أن تكون 235.235 = 47*5 و 235/9.78 = 24.028...(قريبة بما فيه الكفاية).وهذا يعني أن 20 منحنيات متعرجة هو تقريبا نفس 24 المستقيمة في خطي طول.لحسن الحظ لدي 26 المستقيمة لذلك أنا فقط بالكاد.2 بقايا يمكن بسهولة وضعه في مكان آخر في التخطيط.

اكتشفت أمرا آخر أنه إذا كنت متعرج المنحنيات 2 نفس التوجه في وقت (OOCCCCOO) ، ثم 8 من هؤلاء لديه المسافة الخطية فقط 83 بوصة ، لا 94 بوصة مثل إذا كان البديل منحنيات (OCCOOCCO).LCM من 83 و 9.78 حوالي 166.حتى 16 من تلك المنحنيات نفس خطي طول 17 المستقيمة.هذا هو المفيد أن نعرف لأن لدي 44 المنحنيات فقط 26 المستقيمة ولكن إذا كنت تفعل هذا الاستبدال, أنا يمكن أن تساعد في ذلك.

إذا كنت متعرج المنحنيات 3 في وقت واحد (OOOCCCCCCOOO) و ينحني قليلا, يمكنني الحصول على نفس خطي طول 10 المستقيمة (حوالي 97.8 بوصة).

نهاية التحديث

حتى أن برنامج الكمبيوتر لديك لإنشاء نموذج هندسي و أتذكر بالضبط مواقف كل مسار أو هل هناك طريقة أبسط إلى رمز هذا ؟ كنت تريد أن تكون قادرة على "الضغط على زر" الكمبيوتر "يبصق" صالح "الجديد" تخطيط بالنسبة لي.

أريد أن أعطي هذا العمل خوارزمية الاطفال التي تستخدم القطارات حتى لا أحبط محاولة التخطيط الذي لا يعمل ثم أنها محاولة ثني المسارات تجعل من العمل أو ترك بضع قطع المسار كوز أنها لا تناسب.جهاز كمبيوتر يمكن أن تخلق صالح تخطيط استخدام جميع المسارات و إذا خوارزمية جيدة ، ربما في بضع ثوان.هذا هو للمساعدة في منع الإحباط بالنسبة لهم.

لدي بعض مهارات الترميز ولكن أريد أن أعرف خوارزمية أولا قبل أن الرمز شيء مفيد (بخلاف مجرد اختبار أجزاء قليلة من مرشح الخوارزمية)

ما أفكر فيه هو أنني يمكن أن يكون نموذج الكمبيوتر المسارات باستخدام أصغر (تقليص) تمثيل.أعتقد أنه يمكن بعد ذلك مجرد "مكان" المسارات في المرشح تخطيط و التحقق من التصادم مع المسارات الأخرى بالفعل هناك.

أنا أفكر ربما يكون هناك طرق أفضل للقيام بذلك على الرغم من ذلك وهذا هو السبب أنا أسأل هنا عن بعض المساعدة/الأفكار.أريد حقا للحصول على هذا العمل و لدي المسارات هنا لذا يمكن استخدامها للمساعدة في التحقق من إذا كانت خوارزمية العمل.

يمكننا استخدام C=20 S=10 كما المعلمات إلى محاولة حل هذا لأنه هو معقول عدد قليل من المسارات (30 المجموع).وأنا على افتراض إن خوارزمية قوية بما فيه الكفاية ، C و S قيم يمكن أن تتغير في سوف و سوف لا تزال تعمل.على سبيل المثال ، في نهاية المطاف كنت أريد أن أحاول C=44 و S=26.

كلمة أخيرة

شكرا لكم جميعا على تعليقاتكم واقتراحاتكم حول هذه المسألة.لقد تعلمت الكثير جدا.كنت طفلا لم افكر كثيرا في القطار و كيف أنها تناسب معا ولكن الكبار ، أستطيع أن أرى أنها رائعة هندسية مشكلة صعبة الرياضية عد مشكلة توليد / معرفة كم عدد مختلف (فريدة من نوعها) المسار تخطيطات هناك.أرجو أن تتمتع هذه العملية بقدر ما فعلت.الأطفال أقدر ذلك جدا.

نهاية الكلمة الأخيرة

هل كانت مفيدة؟

المحلول

فكرت في أن توفر القوة الغاشمة الحل.

الفكرة هي محاولة كل واحد تخطيط المسار بدوره.عند بناء تخطيط, هناك ثلاثة فقط القطع التي تحتاج إلى أن تؤخذ بعين الاعتبار:يسار سلم منحنى الحق وسلم منحنى مستقيم.

يمكنك ترميز تخطيط المسار كقاعدة عدد 3 مع عرض المقابلة عدد من القطع في التخطيط.تعداد كافة المسار تخطيطات الاعتماد فقط في قاعدة 3 ، حيث ترميز يذهب 0=على التوالي ، 1=اليسار و 2=الحق.

المرحلة التالية هي التحقق من أن تخطيط ينضم في كلا طرفي.الشيك الأول هو التأكد من أن هناك ما يكفي من المنحنيات إلى إكمال الدائرة.إذا اخترنا مضاد في اتجاه عقارب الساعة الشعور دائرة واحدة ، ثم 12 اليسار المنحنيات المطلوبة.كل الحق اضافية منحنى ، نحن بحاجة إلى إضافة يوم إضافي يسار المنحنى.وذلك للتحقق من تخطيط معين قد تعمل فقط إضافة رقم من اليسار منحنيات وطرح عدد من منحنيات الحق - هذا يجب أن يساوي 12.

وأخيرا نحن بحاجة إلى التحقق من طرفي الوفاء بها فعلا.نحن ببساطة رسم المسار على الشبكة الديكارتية.نبدأ الأصل في [0,0] وإذا كان ينتهي في [0,0], ثم ينضم.

أبسط طريقة رسم المسار شعار نمط.وبعبارة أخرى علينا الحفاظ على اتجاه متجه التي تشير في اتجاه آخر تخطيط المسار قطعة.إذا كنا encouter يسار المنحنى ، ثم تدوير اتجاه من 30 درجة و حق منحنى تدوير قبل -30 درجة مستقيم لا يؤثر على الاتجاه.

في الواقع قطعة مستقيمة ومنحنيات ، ونحن توسيع نطاق الاتجاه ناقلات حسب حجم قطعة ، أي10 وحدات على التوالي ، 12.4 x 12 / 2 × pi (دائرة نصف قطرها من استكمال المسار الدائري) وحدات منحنى.

المحاذير

بسبب أخطاء التقريب في إضافة أرقام النقطة العائمة, التآمر هو ليس بالضبط.و في الحياة الحقيقية يمكن أن نترك هامشا للمناورة لينتهي للقاء ، لذلك هذا يحتاج إلى أن تلبي.

العديد من تخطيطات سوف تكون هي نفسها ، ولكن تحول من خلال وظيفة واحدة.لا أستطيع أن أرى الطريق إلى استبعاد تكرار تحول تخطيطات أخرى من سابقاتها وتحقق ضدهم.

الخوارزمية لا يستبعد تخطيطات حيث قطع الصليب.من أجل القيام بذلك سيكون لديك للتأكد من أن كل قطعة في تخطيط لا يعبر قطعة أخرى في تخطيط (thats O(n^2)).و يجب أن يكون هناك شيكات curve-منحنى منحنى مستقيم مستقيم مستقيم المعابر ، وأن يبدأ في الحصول على معقد جدا.

وقت تشغيل خوارزمية الواضح O(3^ن) وهو الأسي - وربما غير عملي كبيرة جدا من تخطيطات.

وفيما يلي بعض التعليمات البرمجية لـ VBA يمكنك لصق في Excel أن أعطيك دليلا على المفهوم.لقد حاول عمدا للحفاظ على مدونة بسيطة بقدر الإمكان لمساعدة التحويل إلى المفضلة اللغة.أي أسئلة ، يرجى لا تتردد في السؤال.

Option Explicit

Type Vector
    X As Double
    Y As Double
End Type

Sub GenerateTrackLayout()
    Dim lCounts(40) As Long
    Dim lColumn As Long
    Dim lTrackLength As Long
    Dim lCurveSum As Long
    Dim lIndex As Long
    Dim lIndex2 As Long
    Dim vDirection As Vector
    Dim vBase As Vector
    Dim vTrackPosition As Vector
    Dim fPI As Double
    Dim fCurveRadius As Double
    Dim fStraightLength As Double
    Dim sPath As String
    Dim lOutputRow As Long
    Const TOLERANCE = 0.5 'inch

    lOutputRow = 1

    vBase.X = Sqr(3) / 2 ' 30 degrees
    vBase.Y = 1 / 2 ' 30 degrees

    fPI = 4 * Atn(1)
    fCurveRadius = 12.4 * 12 / (2 * fPI)
    fStraightLength = 10

    lTrackLength = 12 ' initial track length

    Application.ScreenUpdating = False

    Do
        ' Check for closed track
        lCurveSum = 0

        For lIndex = 0 To lTrackLength - 1
            If lCounts(lIndex) = 1 Then
                lCurveSum = lCurveSum + 1
            ElseIf lCounts(lIndex) = 2 Then
                lCurveSum = lCurveSum - 1
            End If
        Next

        If lCurveSum = 12 Then ' one 360 degree rotation anti-clockwise
            vDirection.X = 0
            vDirection.Y = 1
            vTrackPosition.X = 0
            vTrackPosition.Y = 0

            ' Plot the track and ensure that ends meet
            For lIndex = 0 To lTrackLength - 1
                Select Case lCounts(lIndex)
                    Case 0 ' straight
                        vTrackPosition = AddVectors(vTrackPosition, ScaleVector(vDirection, fStraightLength))
                    Case 1 ' left curve
                        vDirection = MultiplyVectors(vDirection, vBase, 1)
                        vTrackPosition = AddVectors(vTrackPosition, ScaleVector(vDirection, fCurveRadius))
                    Case 2 ' right curve
                        vDirection = MultiplyVectors(vDirection, vBase, -1)
                        vTrackPosition = AddVectors(vTrackPosition, ScaleVector(vDirection, fCurveRadius))
                End Select

                ' If ends meet within tolerance then output the track
                If Abs(vTrackPosition.X) < TOLERANCE Then
                    If Abs(vTrackPosition.Y) < TOLERANCE Then
                        If lIndex = (lTrackLength - 1) Then
                            sPath = ""
                            For lIndex2 = 0 To lIndex
                                Select Case lCounts(lIndex2)
                                    Case 0 ' straight
                                        sPath = sPath & "S"
                                    Case 1 ' left
                                        sPath = sPath & "L"
                                    Case 2 ' right
                                        sPath = sPath & "R"
                                End Select
                            Next
                            Application.ScreenUpdating = True
                            Cells(lOutputRow, 1).Value = sPath
                            Application.ScreenUpdating = False
                            lOutputRow = lOutputRow + 1
                        End If
                    End If
                End If
            Next
        End If

        ' Count in base 3 where number width is Track Length
        lColumn = 0
        Do
            lCounts(lColumn) = lCounts(lColumn) + 1
            If lCounts(lColumn) = 3 Then
                lCounts(lColumn) = 0
                lColumn = lColumn + 1
            Else
                Exit Do
            End If
        Loop Until lColumn = lTrackLength

        ' We've tried all tracks of this length, next one up...
        If lColumn = lTrackLength Then
            Erase lCounts ' reset all columns to zero
            lTrackLength = lTrackLength + 1
        End If
        DoEvents
    Loop
End Sub

' Vector maths

Function MultiplyVectors(vVectorA As Vector, vVectorB As Vector, ByVal fConjugate As Double) As Vector
    MultiplyVectors.X = vVectorA.X * vVectorB.X - fConjugate * vVectorA.Y * vVectorB.Y
    MultiplyVectors.Y = vVectorA.Y * vVectorB.X + fConjugate * vVectorA.X * vVectorB.Y
End Function

Function AddVectors(vVectorA As Vector, vVectorB As Vector) As Vector
    AddVectors.X = vVectorA.X + vVectorB.X
    AddVectors.Y = vVectorA.Y + vVectorB.Y
End Function

Function ScaleVector(vVector As Vector, ByVal fScale As Double) As Vector
    ScaleVector.X = vVector.X * fScale
    ScaleVector.Y = vVector.Y * fScale
End Function

نصائح أخرى

أولا: الإطار التحدي:

جهاز كمبيوتر يمكن أن تخلق صالح تخطيط استخدام جميع المسارات و إذا خوارزمية جيدة ، ربما في بضع ثوان

أنت لا تحتاج إلى الخوارزمية إلى تشغيل في بضع ثوان.تحتاج الانتاج في بضع ثوان.أنا لا أرى أن هناك أي شيء يمنعك من وضع القوة الغاشمة تخطيط كرانشر التشغيل على جهاز كمبيوتر في الزاوية حلول تخزين في قاعدة البيانات من واجهة المستخدم ثم اختيار عشوائي تخطيطات.


حيث الجيل ، هناك عدد من شبه القياسية النهج.الدولة مساحة كبيرة نوعا ما ، لذلك بحث شامل قد لا يكون ممكنا.ولكن أي من التالية قد يكون من المفيد محاولة:

  • نقية خلط عشوائي من قائمة المستقيمة و أعداد متساوية من اليسار واليمين المنحنيات ، تليها "الخير" اختبار.
  • تسلق تلة:تبدأ مع التقليب عشوائي ثم ثم قم بإجراء اختبار بسيط مقايضة لمعرفة ما إذا كان تحسين "الخير".إذا فعلوا ذلك, جعل مبادلة وتكرار.
  • محاكاة التلدين:مماثلة, ولكن في بعض الأحيان يسمح التغييرات التي تقلل من "الخير" على أمل الحصول على أفضل التل.
  • الخوارزمية الجينية:تولد الكثير من العشوائية التباديل و مرارا مزجها والحفاظ على أفضل النتائج.انها ليست واضحة تماما كيفية مزجها ، على الرغم من.
  • وهذا يمكن أن تبدأ مع "معروف" المنحنيات الناتجة عن الإدراج في دائرة.
  • استكشاف خيارات تلبي-في الوسط.E. g.تولد كل المنحنيات مع مجموع زاوية من 90 درجة ، مؤشر عليها من قبل ناقلات 2D بين النهاية و إذا كان هناك عدد أقل بكثير من ناقلات من هناك منحنيات كنت قد تكون قادرة على باستفاضة النظر في رباعيات منهم للعثور على تلك التي تشكل مغلقة الرباعي.

من أجل "الخير" اختبار ، من الواضح أنه يجب أن يكون كبيرا عقوبة إذا كان منحنى ليست مغلقة.هناك أيضا يحتاج إلى أن تكون كبيرة عقوبة الذاتي التداخل.وأنا أميل إلى اختبار تلك التي تستخدم رباعية شجرة العثور على القطاعات التي ليست متتالية ولكن هي قريبة من بعضها البعض ، ومن ثم قوس قوس قوس النصر-خط خط خط تقاطع الاختبارات لمعرفة ما إذا كان أي حافة المحيط قطعة واحدة التداخل حافة المحيط آخر.


استراتيجية أخرى التي قد تكون قادرة تماما القوة الغاشمة أصغر الحالة ولكن ليس أكبر من أن تأخذ هيربج نهج مجموع ناقلات.اسمحوا طول قطعة مستقيمة تكون $2\ell$ و نصف قطر منحنى قطعة تكون $2r$.منذ التوجهات كلها مضاعفات من 30 درجة ، ناقلات بين طرفي قطعة مستقيمة في $$(0, \مساء 2\ell), (\مساء 2\ell, 0), (\pm \الذراع \pm \sqrt3 \ell), (\pm \sqrt3 \الذراع \pm \ell)$$ وكذلك ناقلات بين طرفي منحني قطعة في $$(\مساء r \مساء \sqrt3 r), (\pm \sqrt3 r \مساء r), (\مساء (\sqrt3 - 1)r \مساء (\sqrt3 - 1)ص))$$

ما لم يكن أحد من $\فارك \ell r$, $\فارك {\sqrt 3 \ell} r$, أو $\فارك \ell {\sqrt 3 ص}$ هو جزء صغير البسط الصغيرة القاسم ، منحنيات المستقيمة مستقلة حتى تتمكن من العثور على عمل مجموعات من المنحنيات (القوة الغاشمة يكفي لمدة 20 منحنيات 16 منها في اتجاه واحد و 4 في الآخر ؛ 44 منحنيات تقسيم 28-16 تحتاج أفضل النهج ؛ لم أعمل من خلال الآثار التي تتطلب $+\sqrt 3$s أن يكون مطابقة عدد $-\sqrt 3$s, ولكنها قد تسمح بعض ثقيلة تصفية) ثم إدراج المستقيمة في أزواج.تطبيق هذا مع القوة الغاشمة أعداد صغيرة من المنحنيات من شأنها أن تسمح لك لتقييم كيف العديد من تخطيطات كنت قد تكون خاسرة مع متماثل النهج.

أحد الحلول الممكنة لجعل هذا بسيطة بقدر الإمكان الحصول بسرعة على عمل خوارزمية سيكون على النحو التالي.أبسط تخطيط بالطبع 12C (12 المسارات المنحنية مع كل نفس التوجه (نسبة إلى بعضها البعض) ، وتشكيل دائرة بسيطة.سوف يكون هذا هو الأساس الذي يمكننا أن نبني على.

وبالتالي فإن الخوارزمية الأساسية الحفاظ على 360 درجة المستمر حلقة تخطيط في كل خطوة عند إضافة المسارات.يمكننا القيام بذلك عن طريق فحص كم من مسارات منحنية لدينا المتبقية ، إضافة إلى تخطيط في مجموعات بحيث 360 درجة الخاصية يتم الاحتفاظ.على سبيل المثال ، تبدأ مع 12C تخطيط (دائرة بسيطة).ونحن نعرف أن لدينا 20C مجموع لذلك علينا 8C المتبقية.أبسط إضافة بعض من تلك التي من شأنها أن تحافظ على 360 درجة المنشأة وسيكون إضافة عكس اتجاه منحنى نفس التوجه منحنى (نفس دائرة الرئيسي بدأنا مع).نحن إذن أن تفعل الشيء نفسه على الجانب الآخر من التخطيط.في هذا المثال البسيط, سيكون لدينا إضافة 4 منحنيات إلى دائرة تخطيط بحيث 12C أن تصبح 16C (مع 4C بقايا).نواصل وضع منحنيات حتى 20 (في هذا المثال) يتم وضعها بشكل صحيح.علما أن هذا التصميم يتكون من جميع المنحنيات صالح حلقة مغلقة تخطيط.القطار يمكن استخدام هذا التصميم ، ومع ذلك ، فإنه يتكون من جميع المسارات المنحنية لذلك نحن لم تفعل حتى الآن.

على المسارات المستقيمة ثم تضاف بنفس الطريقة باستثناء تلك التي يمكن أن تضاف في أزواج (2 المسارات) لأنها لا تتغير 360 درجة الممتلكات.يمكن إدراجها في أي مكان لذلك أعتقد أنه سيكون من الأفضل أن المركز الأول كل من المسارات المنحنية ، ثم العودة وجعل 2nd pass إلى مكان المستقيمة بشكل عشوائي (ولكن بشكل متناظر).

هذا هو أبسط خوارزمية أستطيع أن أفكر من الآن.فمن يضمن أن تنتج درجة 360 حلقة مغلقة ، متناظرة المسار ، وعلى افتراض # منحنيات متعددة من 4 ، # المستقيمة متعددة من 2 ، فإنه سيتم استخدام كل مسار.

شيء واحد للنظر على الرغم من (عند استخدام هذه الخوارزمية إما على جهاز الكمبيوتر أو فقط في عقلك كما كنت بناء تخطيط) ، ، قد تكون هناك قيود الفضاء أكثر من ذلك في اتجاه واحد من الآخر.على سبيل المثال ، في باحة طويلة ، ولكن ليست واسعة جدا.عند استخدام الخوارزمية يجب أن تكون منحازة أكثر نحو طويل البعد من حيث تخطيط سيتم تجميعها.

إذا كان شخص ما يمكن معرفة خوارزمية شكل غير متماثل تخطيط استخدام جميع المسارات التي من شأنها أن تكون حتى أكثر إثارة للإعجاب.

الفرق في التعقيد بين الحل الأبسط والأكثر تعقيدا هو مذهل.بدءا من دائرة (12C) حول بسيطة كما يحصل لهذه المشكلة و هو معقول للأطفال ، ومع ذلك فإنه من المثير للاهتمام للغاية لتحليل حل العامة التي يمكن أن تنتج أي صالحة تخطيط (بما في ذلك غير المتماثلة منها).

في الواقع, غير خوارزمية الكمبيوتر سيكون مجرد إضافة بعض "بارد" الأشكال إلى تخطيط والحصول على مقربة من الاتصال ، ثم العودة وتهذيب ذلك أن يفعل في الواقع اتصال (حلقة مغلقة).مع 70 قطعة المسار الكلي (44C و 26S), ضخمة تخطيط ممكن.أنا حسبت ما مجموعه حوالي 67 أقدام المسار الذي هو حوالي 20 مترا.القطار ينبغي أن يستغرق حوالي 1 دقيقة إلى حلقة هذا تخطيط كامل مرة واحدة.

مرشح آخر حل أن تأخذ القياسات الفعلية من كل مسار وتذكر أقصى اليمين حافة تخطيط.عند بناء تخطيط ، يمكنك أن تبدأ مع مسار مستقيم أو مع اليسار منحنى (عكس عقارب الساعة) ، وتراكم مدى بعيدا في الماضي وأضاف المسار من اليمين حافة ثم عند إضافة مسارات أخرى ، لم يسمح مزيج من المسارات التي سوف عثرة أو عبر هذا أقصى اليمين حافة أو ربما حتى الحصول على وثيقة.لذلك على سبيل المثال ، تبدأ مع المسار المستقيم (لا 12C الأولي دائرة على هذا المرشح الحل) ، ثم اختيار عشوائيا مسار آخر قطعة.لاحظت من البداية أننا لن نسمح اليمين (في اتجاه عقارب الساعة) بدوره ، لأن ذلك من شأنه كسر قاعدة "العبور" في أقصى اليمين الحافة.بعد الأولى مباشرة المسار الوحيد لدينا خيارات أخرى مباشرة أو اليسار (عكس عقارب الساعة) منحنى.قاعدة أخرى لفرض سيكون بعد مباشرة, نحن لا يسمح لنا لإضافة أكثر من 9 نفس التوجه المنحنيات في صف واحد ، وإلا فإنه سوف يكون من المرجح أن عثرة عبر بعض المسارات الأخرى بالفعل في المكان.هذا الحد بل يمكن خفض هذه النسبة إلى 8 لمزيد من التطهير ، وإذا كان ذلك يحدث المسار التالي يجب أن يكون عكس المنحى منحنى (منذ مباشرة قد يسبب مشاكل).

هذه الخوارزمية سوف تحتاج إلى بعض المساعدة للحصول على العودة الاتصال إلى الجانب الآخر من أول وأضاف المسار قطعة.يمكننا أن نفعل ذلك من خلال الإصرار على أن عقارب الساعة منحنيات عد +1 و في اتجاه عقارب الساعة منحنيات عد -1, و هذه يجب أن تضيف ما يصل إلى 12 في آخر وأضاف منحنى.نحن يمكن أن تساعد في هذا الأمر من قبل يتحامل CC (عكس عقارب الساعة) منحنيات في نسبة 4:1 مع عقارب الساعة المنحنيات ، حتى أن هناك احتمالات نحصل على 16 CC و 4 في اتجاه عقارب الساعة ، والتي سوف بفعالية صافي 360 درجة في الدائرة.إذا الخوارزمية محاولات لإضافة CC منحنى لكن المطبات المسارات الموجودة لدينا 2 الخيارات في تلك المرحلة ، في محاولة عكس اتجاه المنحنى ، أو التخلي عن التخطيط والبدء من جديد.أعتقد أن على كمبيوتر سريع في نهاية المطاف سوف تحصل على تخطيط جيد.

أنا لست متأكدا مما إذا كان هذا الأسلوب سيحقق كل نفس تخطيطات البداية مع 12C, ولكن ربما قد يكون من الأسهل تنفيذ على جهاز كمبيوتر حيث لا يوجد سوى عدد قليل من القواعد لفرض ونحن بناء على تخطيط مسار واحد في وقت واحد.

في الحقيقة أنا فكرت 3 مرشح ممكن الحل التي يجب العمل وليس من الصعب جدا تنفيذها.فإنه يذهب على النحو التالي.

استخدام تقنية الموضحة أعلاه ، ولكن فقط تقديم نصف تخطيط (باستخدام نصف المسارات من كل نوع ، حتى 10 منحنيات 5 المستقيمة.لدينا اختيار جهاز الكمبيوتر عشوائي المسارات ولكن فقط قبول التصاميم التي في نهاية المطاف مع صافي 180 درجة يسارا (لأننا إنفاذ الحق في الحدود التي لا تتبع يمكن أن تلمس أو الصليب.حسنا لنفترض الكمبيوتر بسرعة جدا يجد صالح "نصف تخطيط".ثم ما نقوم به هو مجرد إجراء جرد كم في اتجاه عقارب الساعة المنحنيات, و عكس اتجاه عقارب الساعة منحنيات هناك ، وتكرار ذلك في النصف الآخر من المسار (ولكن ليس بالضرورة بشكل متناظر).للمستقيمين ، علينا أن سجل في زاوية ما كانوا ثم إدراجها في المباراة في النصف الآخر من المسار, ولكن مرة أخرى, ليس بالضرورة بشكل متناظر.

يتيح محاولة مثال باستخدام S على التوالي ، ا ل عكس منحنى ، و ج عن اتجاه عقارب الساعة منحنى.مع التركيز على نصف تخطيط الأولى.

أول المسار المستقيم سوف يذهب بعيدا عنا و التي تعرف لدينا اليمين حافة أننا لا يسمح الصليب.

SOOSOCSOOSSOOOC - هذا العرض ساري نصف تخطيط منذ 5 المستقيمة و 10 المنحنيات مع صافي من 6 عقارب الساعة منحنيات (2 من 8 "إلى إلغاء 2 في اتجاه عقارب الساعة المنحنيات).

الآن نحن بحاجة إلى "مراقبتهم" على الزاوية المستقيمة أدرجت في المباراة مع نفس زاوية (ولكن الاتجاه المعاكس) المسار إلى "إلغاء" منهم.

1:زاوية 0 درجة المستقيمة
0:30 درجة زاوية المستقيمة
2:60 درجة زاوية المستقيمة
0:زاوية 90 درجة المستقيمة
2:120 درجة زاوية المستقيمة
0:150 درجة الزاوية المستقيمة
0:180 درجة زاوية المستقيمة

حتى أن "المباراة" هذا على النصف الآخر من تخطيط و تجعل من ذلك أنه يربط إلى واحد ابتداء من المسار المستقيم, نحن فقط بحاجة إلى تطابق نفس العدد من نظام التشغيل Cs, ولكن أيضا تطابق نفس # المستقيمة في +180 درجة "العودة" زاوية.على سبيل المثال ، 60 درجة على التوالي أفضل 240 درجة مباشرة على الجانب الآخر من تخطيط في مكان ما, ليس بالضرورة بالضبط عكس ذلك.وذلك لأن 60 درجة على التوالي سوف تذهب في معظمها إلى اليسار قليلا (باستخدام هذا المخطط) و 240 درجة على التوالي سوف يعيده إلى الحق و يعود إلى نفس كمية فعالة "إلغاء" هذه المسارات 2 المساهمات إلى الانحراف من بداية المسار الموقف.

حتى الآن كل ما عليك القيام به لإنشاء "في عداد المفقودين نصف" من تخطيط واتخاذ المعروف المسارات علينا (و مع العلم في الزوايا المستقيمة يجب أن يكون) ، و "التدافع" لهم في أي أمر.

قد يكون هناك طريقة لا يجب أن تتطابق بالضبط نصف تخطيط مع "التكميلية" المسارات على الجانب الآخر ، ولكن هذا يتطلب المزيد من الرياضيات المعقدة و ربما ليس هناك ما يكفي من الوقت لحل هذا في الوقت الذي فضله نشط.وهناك أيضا فرصة أن ليس كل المسارات سوف تستخدم هذا الطريق وبعض طفيف منحنية المسار سيكون مطلوبا.يمكننا تجاهل هذه الملكية الخاصة لهذا السؤال.

أنا فعلا غير المتماثلة المسار لمعرفة ما إذا كان سيعمل ويبدو أنه فعل.وذلك باستخدام S على التوالي ، O على عكس منحنى ، و ج عن اتجاه عقارب الساعة منحنى ، بالإضافة إلى زاوية (درجة) نسبة إلى انطلاق المسار المستقيم ، حصلت التالية على النصف العلوي:

S0, O30, O60, S60, O90, C60, S60, O90, O120, 120, 120, O150, O180, O210, C180

على النصف السفلي من المسار حصلت على:

O210, O240, S240, C210, O240, S240, O270, O300, S300, S300, O330, O360, O390, C360, S360

في الواقع كانت الصورة مأخوذة من الجانب الخطأ حتى أعلى وأسفل انقلبت.المسار الأول وضعت كانت مباشرة بالقرب من الأزرق المهملات و يقترب المشاهد من الموافقة المسبقة عن علم و 2 المسار هو عكس منحنى.

enter image description here

يبدو أن هذه التقنية كثيرة حتى عدد من المنحنيات و حتى عدد المستقيمة ، بما في ذلك 44C و 26S الذي هو هدفي النهائي.هذا هو حقا مشجعة منذ إلكترونية الكمبيوتر ليس من الضروري حل هذه, لا يمكن أن يكون مجرد الاطفال بناء مجرد عن أي شكل نصف دائرة مع نصف المسارات (22C و 13S), ثم في "الصحيحة" تصميمها بحيث يتم 180 درجة ، ثم "مباراة" الجانب الآخر من الطريق ، ليس بالضرورة بشكل متناظر.

عليك أن تكون حذرا إذا كنت تريد إنشاء 180 درجة نصف تخطيط حيث يبدأ المسار وإنهاء المسار هي قريبة جدا معا.على سبيل المثال, شكل الجزء العلوي من علامة استفهام "?" (بدون نقطة) ولكن مواصلة العلوي منحنى لذلك يأتي المزيد والمزيد مباشرة من شأنها أن تكون قريبة جدا من المستقيم الذي هو فوق حيث كانت نقطة.ثم النصف السفلي ، فإنك لن تكون قادرة على القيام بالمزيد عكس عقارب الساعة منحنيات الحق بعيدا لأن هناك البعض المستقيمة هناك من "النصف العلوي".صورة من حلقة مغلقة تخطيط عملت لأنني لا "عنق الزجاجة" في "العليا" نصف ولكن بالطبع تلك هي ممكن كما وصفتها.

فإن "مشكلة" قطار تخطيط عند نصف الطريق يجعل نوعا من شكل الساعة الرملية مع ضيق الأوسط.في هذه الحالة لديك تقريبا إلى "المرآة" الجزء العلوي لأن بعض المنحنيات لا يمكن أن يتم منذ المسارات هي قريبة جدا من بعضها البعض.هنا هو مثال...

enter image description here

ملاحظة أخرى مثيرة للاهتمام هو أن 4 متعرج في مسارات منحنية تقريبا بديل بالضبط (بقدر المسافة الخطية امتدت) لمدة 5 المستقيمة.غير أن الكثير من هذه سوف تخلق فرقا كبيرا في الطول.كما جاء في تحديث القسم أعلاه ، 20 منحنيات متعرجة هو تقريبا مطابق (على المسافة الخطية) 24 المستقيمة.

enter image description here

باستخدام هذه التقنية, عملاق تخطيط يمكن أن تكون مصنوعة مع كل من 70 قطعة المسار.فإنه يبدأ مع 12C دائرة ثم على جانب واحد, أنا يمكن أن تضاف 24 المستقيمة (240 بوصة طويلة).على العكس من تخطيط (تقريبا تتناسب مع طول الجانب على التوالي), وأود أن استخدام 20 منحنيات متعرجة (أيضا حوالي 240 بوصة طويلة).هؤلاء يجب أن تقريبا خط منحنى طفيف ينبغي أن تجعل من العمل.باقي المسارات (2 مباشرة و 12 المنحني) يمكن بسهولة أن توضع للحفاظ على تخطيط "متوازن" (ومتصلة).

يفترض أن تبدأ في النقطة (0 ، 0) الذهاب مباشرة إلى اليمين.تحتاج إلى إضافة المسارات حتى تصل إلى النقطة (0, 0) مرة أخرى, هذه المرة مباشرة من الجهة اليسرى.هناك نوعان من المشاكل هنا:واحد هو الوصول إلى النقطة (0 ، 0) قادمة من اليسار بالضبط.والآخر هو أن لا تتداخل.

لتشكيل دائرة عكس اتجاه عقارب الساعة سوف تحتاج إلى 12 قطعة منحنية تحول اليسار.هذه شكل دقيق دائرة.مع 0 أو 24 أو 36 قطعة منحنية سيكون لديك الرقم ثمانية أو اثنين أو ثلاث دوائر ، لا يمكن أن يتم دون عبور.

و بالطبع يمكنك إضافة المسارات ، وهذه يجب أن تتبع قواعد معينة:يمكنك إضافة الأيسر المنحني ، على التوالي ، والحق منحني القطع في أزواج بدءا من زوايا x درجة و x+30 درجة ، حتى يعود إلى 0,0.وعدد من اليسار منحني القطع تتجاوز ال 12 الأولى يجب أن يطابق عدد من حق منحني القطع حتى القطع مباراة في الزاوية اليمنى في 0,0.

ذلك أن القطع التي يمكنك استخدامها.تحتاج إلى التحقق من أنه لا توجد معابر الواضح.

إذا كان أطوال صحيح تماما ثم أنه يمكن أن يكون على سبيل المثال مجموعة يمين/يسار/يمين/يسار يغطي نفس المسافة من أربع أو خمس المستقيمة ، وحتى بعض مجموعات أخرى قد يكون مسموح به.

وبالطبع المسارات هي تبقت التي قد تنتج العديد من الاحتمالات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى cs.stackexchange
scroll top