Չեմ հիշում որ նոր բան առաջարկած լինես, որը ճիշտ կաշխատի 5x6-ի վրա: Ուղղակի ասեցիր որ հեշտա էտ ուղղելը, իսկ թե ոնց` երևի մենակ դու գիտես:
Ամեն դեպքում, մի՞թե քեզ թվումա որ 5x6-ը տենց հատուկ սատանայական չափա, որի վրա ամեն ինչ սխալա աշխատում, ու էտ դեպքը առանձին քննարկելով մնացած ամեն ինչ ճիշտ կաշխատի: Կամ կարաս արդյոք բացատրես թե ինչ պատճառովա քո առաջարկած մեթոդը ճիշտ:
Պայմանները թերի են: Ես արդեն նշել եմ
պիտի ավելացվեն ուղղանկյան կողմերի հետ կապված պայմանները` տվյալ պարագայում 5+2+1<=5 (6) պայմանը չի բավարարվում:Քառակուսիների կողմերի երկարությունների գումարներիկ վրա էլ սահմանափակումներ են դրվում:
Պիտի լրացուցիչ լինեն առնվազն ևս 2 պայմաններ, օրինակ.
Sum(X(i) *i) <= 2*M
Sum(X(i) *i) <= 2*N
և դա բնական է, քանի որ իրար հարևան քառակուսիների կողմերի գումարը չի կարող գերազանցել ուղղանկյան կողմի երկարությունը:
Կրկնվում եմ, բայց էլի ասեմ, որ դասական գծային ամբողջաթիվ ծրագրավորման խնդիր է:
Դրանում պիտի լինի նպատակային ֆունկցիա` Sum(X(i) )->min
Ու պիտի լինեն սահմանափակումներ`
Sum(X(i) *i^2) = M*N
Sum(X(i) *i) <= 2*M
Sum(X(i) *i) <= 2*N
...
ավելի մանրամասն այստեղ
Լոխ մունք ենք, մնացածը` լոխ են...
Եթե ուշադիր կարդայիր գրածներս, կտեսնեիր որ ըստ իմ տեսակետի խնդիրը նորմալ լուծում չունի, այսինքն միակ բանը որ կարամ առաջարկեմ լրիվ դեպքերի քննարկումնա, որը երևի արդեն 10x10-ից հետո էլ համակարգչի վրա մի քանի վայրկյանում չի տեղավորվի: Իսկ որ նորմալ աշխատող լուծում գրեյիր, չէի ասի սխալա:
Մեծ թվերի համար ծրագրեր են աշխատացնում
Հնարավոր չե տալ մի բանաձև, որի միջոցով ցանկացած թվերի համար հաշվարկը կկատարվի: Բայց ալգորիթմը արդեն վաղուց գոյություն ունի: Կահույքի արտադրամասերում օգտագործվող ծրագիրերը նմանատիպ ալգորիթմենորվ են աշխատում:
Հ.Գ.
Երբեք չէի մտացել, որ նորմալ ու արագ լուծումները իրար համարժեք են![]()
Լոխ մունք ենք, մնացածը` լոխ են...
Քո տեսակետը սխալ է: Լրիվ դեպքերի քննարկում պետք չի:
Վաղուց արդեն կան գրված համապատասխան ծրագրեր, որոնք ունիվերսալ կերպով լուծում են ամբողջաթվային ծրագրավորման խնդիրները: Մնում է միայն ճիշտ նկարագրել նպատակային ֆունկցիան ու սահմանափակումները:
Եթե դու ի նկատի ունես, որ չկա մի այնպիսի ծրագիր, որին որպես մուտքայի տվյալներ տաս մենակ ուղղանկյան կողմերը, միգուցե ճիշտ ես: Բայց այդ ծրագիրը կարելի է գրել![]()
Լոխ մունք ենք, մնացածը` լոխ են...
Ես ամեն ինչ նշել եմ ծրագրով հաշվելու տեսանկյունից, մենք նախնադարում չենք ապրում:
Իսկ բանաձևի մասին խոսք չի գնացել ընդհանրապես:
Եթե դու պնդում ես որ գծային ծրագրավորման խնդիրը աշխատում է բավականին արագ, դեմ չեմ, բայց մյուս համանուն թեմայում գրածդ բանաձևերի համար համապատասխան գրառում եմ կատարել: Հարցը նրանումա որ դու խնդիրը չես բերել համարժեք գծային ծրագրավորման խնդրի:
Հնարավոր է, բայց սխալ է: 3x3-ը տրոհվում է 2x2+ 5x(1x1): Ոնց տեսնում ես պայմանը բավարարվում է
Ու դա ևս մեկ քայլն է դեպի ճիշտ լուծումը: Փաստացի 9 հատ 1 երկարության կողմով քառակուսիները չբավարարեցին պայմանին, հետևաբար չեն կարող հանդիսանալ օպտիմալ լուծում
Ու ասեմ, որ պայմանների քանակը մենակ այդ երկուսը չի, էլի կան![]()
Լոխ մունք ենք, մնացածը` լոխ են...
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ