Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 73, 74, 75, 76, 77  След.
 Re: Как писать быстрые программы
Аватара пользователя
6-поточный счёт по D(96,14) закончил. И опять кортеж с одним простым выиграл по скорости нахождения.

Код:
6-поточный счёт

     Серия    Произв.     Счёт   2^      Счёт   Найдено     Время   Милсек/   Скорость
              простые    патт.        от 0 до   D(96,14)   секунд   паттерн   корт/сут

0-0-13-1-0   5!*3!*8!     7200   15      1e51      (104)   (87840)      305        102 Э
0-0-13-1-0   5!*3!*8!     7200   16      1e51      (104)   (81504)      283        110 Э
0-0-13-1-0   5!*3!*8!   288000   17      1e51       104     76106       264        118
0-0-13-1-0   5!*3!*8!     7200   18      1e51      (104)   (85248)      296        105 Э

0-0-14-0-0   5!*3!*9!     7200   16      1e53      (128)   (78624)      312        141 Э
0-0-14-0-0   5!*3!*9!   252000   17      1e53       128     76668       304        144
0-0-14-0-0   5!*3!*9!     7200   18      1e53      (128)   (83664)      332        132 Э

0-1-13-0-0   5!*3!*9!*1   7200   16      1e55      (100)   (54864)      254        157 Э
0-1-13-0-0   5!*3!*9!*1 216000   17      1e55       100     52435       243        165
0-1-13-0-0   5!*3!*9!*1   7200   18      1e55      (100)   (52920)      245        163 Э

1-0-13-0-0   5!3!9!1*1    7200   17      1e57      (118)   (57012)       56        179 Э
1-0-13-0-0   5!3!9!1*1 1008000   18      1e57       118     58040        58*       176
1-0-13-0-0   5!3!9!1*1    7200   19      1e57      (118)   (57456)       57        177 Э


* — было 54 для тех же условий

wrest в сообщении #1722960 писал(а):
на длине 14 скорость будет 23

Для однопоточного счёта для длины 13 для одной из серий скорость нахождения была где-то в 3 с небольшим раза меньше. Так что и для длины 14 разделим 176 на 3 с небольшим и получаем где-то 52-58. Грубо, но всё равно явно не 23.

 Re: Как писать быстрые программы
Yadryara в сообщении #1723332 писал(а):
Код:
Серия            2^      Комплектов       Счёт     Найдено     Время    Секунд /    Скорость
                          посчитано    от 0 до    D(96,13)    секунд    комплект   цеп/сутки

0-0-12-1-0-5!    15      3!*7!   60       1e46       (106)     29207+1%    81.13         310 Э

Что значит восклицательный знак в конце обозначения «Серия 0-0-12-1-0-5!» ?
Почему сумма в «Серия 0-0-12-1-0-5!» не равна 13 (длине цепочки)?

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1723718 писал(а):
Что значит восклицательный знак в конце обозначения «Серия 0-0-12-1-0-5!» ?

Факториал. Означает что 5! расстановок простых в квадратах можно сделать.

wrest в сообщении #1723718 писал(а):
Почему сумма в «Серия 0-0-12-1-0-5!» не равна 13 (длине цепочки)?

Потому что это старый способ записи. С недавних пор я переношу 5! правее, в соседний столбец. О чём недавно писал. А у 0-0-12-1-0 сумма как раз 13.

 Re: Как писать быстрые программы
Yadryara в сообщении #1723968 писал(а):
Решил попробовать другой алгоритм. Но вот Квен пока не смог мне написать корректно работающую функцию для ЕСМ.

Yadryara в сообщении #1723968 писал(а):
Или это опять надо в быстрые программы переезжать...

Я бы предложил (вам) оформить это как постановку задачи, техзадание.
Что нужно от функции, какие входные параметры, какой результат.
Для замера скорости нужен будет, очевидно, какой-то эталлонный входной набор данных. И эталонный результат.
Например, "эталонная" функция предвычисления массива из 10^5 чисел. Или просто файл с этими числами.
И "эталонная" функция (например numdiv или factorint).
Тогда можно будет понять ускорилось ли что-то или нет.

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1723975 писал(а):
Я бы предложил (вам) оформить это как постановку задачи, техзадание.

Ну вот вы сами написали что нужно взять факторизацию под контроль. Однако конкретизировать это непросто.

По мере роста частных, характерная величина частного (при kolfac[mes] = 2) при поиске D(192,11) уже оказалась где-то в районе 56-значных чисел.

И, чем чаще дело доходит до проверки по numdiv, в 10-й фильтрации, тем больше тратится времени на обсчёт всего комплекта. И разумеется, те комплекты, где есть находки, обычно проверяются ещё дольше.

Это понятно, это ожидаемо. Как именно быстро проверять дальше — пока непонятно. Понятно что допроверять опять не надо. То есть надо откладывать окончательную проверку ещё дальше, пока на 11-ю фильтрацию.

wrest в сообщении #1723975 писал(а):
Что нужно от функции, какие входные параметры, какой результат.

У меня есть параметр maxs2. Сейчас он равен $2^{19}-2$. И число cha уже гарантированно не имеет делителей меньше maxs2. Это уже проверено. То есть нужно как можно быстрее искать один-единственный делитель cha и не тратить времени на маленькие делители меньше maxs2.

Если не нашлось ни одного фактора между $2^{19}$ и, например $10^{12}$ — переходить к следующему числу cha.

wrest в сообщении #1723975 писал(а):
какие входные параметры

Ну вот 316 частных которые пришли на вход 10-й фильтрации:

(Оффтоп)

6349346225427224046223715959584637897883257612394925307
155233060224299275069065703752644171399528788600002940259
856627785511734165079590481074009130364404427984961283
1479282614192646282706654563230477908217771526600071429
5021765570675494960245924629380063765482344694787358705993
269581611819145630030625068477422048590133165513271546519
88670173229023948959395096413460248088741136700583562427
6551764744733133952986542542324194092090531604108946523
101695393917897657818535914142637518455427601323705323657
6085635371195722010797807464206364383870376141359465597
3594410681855599253584604615559858750368178310451681983
2424570367536912339242013362092142648758490670188639915429
189040672643639595320769306071296984118542514774732062013
478950828008632249988466429967691541687518279391245909
235591371795499395725222578553979523987782987038913331747
109325929681563840225859185012762115604895867392893266307
287084585153037253942454287091091063508149024788788384589
975871132983525707878667434913448071812071540514270417
152829535785947831359800966455329394771293707275501023
10148911367869991927108915874179299491158025771925594904393
280167854701454350437945985904158517748062379679617138281
79846780991107465154769571483533253374340590193560599371
1078046844801584737086467278007981295699602755516721237
400985729582444959039784819913295551050846044188191160697
2197574176131581202676455580227741586131266402952681547
32725064899995144599872450221804078718805097390863879081
102885326214881716226279572010270855830430258018807786813
13878322495433170236094251156611701102497645040805725673
104229110527046830771871730530510912412760832770271933593
1868581238094247043458424090929121248847997097407188281
3549732447414828911670100324463436716082393033409847203
881879777895956149376297188381066098111565404622874830861
70405606937800528019837982851877691198787901877278321581
26728855566429359693457158789302722273066126659680611026507
31920482284321778212749505921646530220011048369358230729
1169892816690244296356363320178195141830399522216312889849
10154389760892027446430415356182696077187962014964826447
4046675201871349315106877920031388079463533715361418257
432523436744795143430142825797157389163560681227831871
21303136603767677889661988393302393051989322502428498391401
32258084208145233872186226393561937956223079455906301041879
157704484560176151826271898697771807592163444950941391573
2281160252459764521062389731940515039792589314604619281
547279185946335561294987904248781141337102227836089357
6223922074932757459219491873710752793641384922242503547
17556703005145727529684242257239772217738947387723436399959
264658057292261069945979386464079713498579562046094680731
55604033518672051312108550535812918791757966401283013661
687391223872435274969876558789560314871326722695216699
25391237211411879966800488042351640299206471150952047449
26909862566007214038160845787306701816088721024163517200269
56021976793440317884493437646184373761456522270842704381
95695621454284263117796343434627370670131366235929863181
2251321849323056110659398792040714968210016342248548453
10348207999746557242339906675343506586325886905757274429
899817372161795877948214890016285687358134798963584043
20435903860030399545282906807265253400164635798265319091
622206774932860915010574297399604366291435569348286367291
375282718590512730337105046164998152084554029523776405403
943674563426344475202799538158632948755467325088215849
5837681075955656466725283909413936225410508118492952861
720371367960862053355012855391976452393662616447792977
441647269769329580033943039506476218301848923145342510883
4874123547361834895774565089446686941385025845143934611
450070050407631812392656581368482049377338639381746340783
2987051460583937710569944637351067503188016228663700652051
33455744036984336025883690887159631820237558860270423207
311888257335594147155982690604088917118514835699161326809
744039314308138809570151911784742760692530519691626876831
1119190269613555242933025959903080342994615665379278916247
19083901462910668813787605868759031141322322719856636809
90186352473490425303756783068650427402516599988422990319
241971363699938496544788689762195398723758077494345986149
6392609029841411812074299002571752062985710478739252602361
46813621821605422749494577340182952933906950687689714299
52742421702812411916204682659512330320963460093003065339
6350142708340142990503083437300435007043525695323288233
497832661830985888351898717796578944021983599654075443
8214058385964139261266259928409008518660686777281435616929
189026537165290611538258425926915537026438013970354372677
4767936726735648873389205733188201061803488129321944753
4821773824491518165224743461484502984488966765702796877
2644483858838079855991710803813614168895398991280978748403
209506311548541109163983613787654099730285631471394172831
5149152479085424204108195601124720436250810496033001369
913969655871155304147136121976297167489679839212068383
71015557943742117082985722138406326985771162467184143
43310720117453527144793649989281804464934846498126515583
52639529704884452363456587067781816608466077171141487527
244259861875584730302322685099351291228564971895950743397
9006853938765863104755839066311471121976857374068505399
72061599029771168550147578405461517329145944736448295217
471367733622933756381021866004049454351815900818485833
106901656181274672800427832657504517576629481250786840691
31552529960204213490613614283818574160213412673646637661
1396270632270009245540952022930217571945981378546650363
13249610396861992157598805440986719131366544798248754919
51014067928028816872886857101638176706182462570166500322147
7809838317620356018714348354859961518390710960410779629
6313164200925670390849093078585832504124249050980064609
434972432266216674046628927595120718096125357423704239
546965336999236687872633630665572896467421841085316313
54755583658701113671210273833618334515959567211831811576919
192330016910480215570624235500663321856483066194947659737
601439026476736788762242264500846719537260383261334764507
129355575958307101594439917130102228518413656938230829421
143334315734233380644966319259350451346046404893093155497
23998376755237844762832985175590720204062929436852081937
66591807872463853825767651654852944276336635405058224427
14867905709527622730513946730447025973480752081924523039
12214613339679037215143502744018917742203605819928785607
8906942773892236433918898787329924133659829417902001061
138581831140114923887988517819627183877864455698385417009
76636055791374375997027553194078124695185190217955759121
2198035447483323721352926473661069496480286518304075360103
583859212958260771506583809346240356987334210674886305397
13332259769685769805729123860156723477109225971288106471
6475405844413140377313634448529469502436214614658548191
90280181812806253885200197444923691157008514628108918871
5544076466794598613477571138842905194605259337283467821
1080932766502054082123423380285128503255342667531667538857
208305859908462109003062777182752529887636761911359837
35387648844260760900315422062195392188218926469729605689
162058071402721820976687221175598157094673114923633674323
217049353571251750103605909767176497869406468910277992591
2794513388715549946075973553397822146271644507725833637
249227222920716308686911657611941716611142830099738270849
18989231666078598655132526940578173287631011605747769037
153867846559275380963950746351787915094194569953859275917
111637988370054713058357983834832621492320360998333697603
171755610763447250875108905571315241599251382328364777907
4042477570311047378118660899467034095796415422602032579317
152794864610382188221733477024331882354507877487571619217
331333190786759464460332637271830608376504976520705249781
27185892521592250637372280553196890407178211267655070111
897425626767801737160533762529930517785115841434374388753
147456461445681206712831712062998111914912059275403589651
25167392740930323841605663718558901655226544924913201107
6043779669444738195605100789243203029778072854908431741
1148896658259770600413158351440634786363117912373382227103
570018176314238961124659638332295879812731332621544811649
54696464303665749343352208349627214135744873754168846294781
237036865650950215420309069360536056254357982898254774267
2361232761443367474864818946655939919232405802019776819
15210658781060971331514587094542251562479801147961185037
86242305543133364927463479632057595153415491742270421133
4594381712382013053856008097355616565081431300538747091
91865109591987521518708280484181636260687501297848254129
190057560387713978409587333319128715399765151564617855463
29222180566338162937497688846998890508201002090205707422177
1464833854797573517868622788790972210740687405993387599
7541639206855822956523224548347136359695944268868895934863
119825311367199662854681450286144927620897438057093841279
14067570439519444937699055980599816133206900799204549917
52739506064351024097522996977102997185596164537344769553
48005627086571372955064794008939471497173832763113763083
1366480996426681999199568787498888346387635815677444951
48177325045334947300944723067165117898462501280269453147
9113235916513717286926265954992954840801485634439810398931
1913984910569193681733301359150149615981735752815091803
4132223995248063600559495496570313798713835117698380623649
10666653426186355721670538658781998145850856205463396337
1324868080357439161686090496073648202876281009044251090541
536762800389670529628618803367651017606816616452925383
5691579516891469203383787455648269959269096992128776333
356655674984388136653342239363016503226579411595527335161
7747648154815579501722925020145079792779356547253457329
336615543517999531854144063269437362538350469478786027
9825197852465621232379438545519563952731716139574469418513
437582389404108627506048285566492620558548781791278242239
14823278250764209811882636739484250886206318790780981983
7246162514811574382837561036166454651339436713633224439
1472485494983210549782582251692727650837062651478988121
199129960201000447049296105342428506227354183714916089247
88654957343200166797242328538194343028116920997722200923
67485075236123416862534912228271276056800617497971450711
55852009610760972355852301294421433419097699944729241411
1314986433714822649293199027273651360118698169256771649
25326210590306378414290217455481159801647557277449956716789
648677781858814094579513244869045187653992278933565663133
149983481237742659456644171785707095139609913453709285631
8223966756551330549140235273629660775609764856147438107
20195304680839059744403135411282160443526988889596874037
2088706181764708980872952054468177641335768259796978313
544369506518859254888974540281905559729860370353624070131
23830039422245142882860060008051652199009072913413038503
49836511536344656070287232092339025255042327218057799
529904596963689740527460593845912055396316910790821269
3070941643512365391437144004173346025099258317718185553
45693802918457663532353170666545843653158814527935176477
31530338407755264997138413823378127549850453660764570737
497583255423247208876636105811348136286357947493443507
17330597309390999557836426388254818834931923822909853733
550515607086654931773183678677087617539666335416295737339
341358118274568952222872406344518855254346184773051188201
643166281402768311843596354737650773147994657390385559
24148925432634573196763136754090576178896835988651533646083
307891270936271777151354509638605284157130773048275902493
79531384261268686580808877631300855661958092216794214343
1848534855251272216156005114826205318847043000396734629401
2927775696284032305805447821782022026951672561562445799
3273779003260427073782969806982703054588201951011144801
92472075787529220058685333247227709647517504841855211503
7580063760410354951188945685157247764861514496105141435363
347094565643842421826093442664233198711964776463587969
121586336822363775598223299653521858358184317059821368029
65277909569189788393511695722476923424309435237520630719
667620337799505157136140995363094809005617939372729433143
2513584764036337828933621021508956559909734724183796819161
1809611420724801138717166740962741562210567440381123486789
9458867386358956558423486317729545159513148726971271533
2652558433070569445739374102679363838457505305596553839
4254294928900398581069503563479121693991074283030235917877
720139721261872698704669908538971133273845809497557133
38630477143577036939356806094151616244514948599609457657
17555554272255299161509856815473945272841610842216953301
4105510445255763361549458242055924626541201597220674294677
294193609365801100232928270610647048822110117666119574239
190643464081874532660021247223594164801264364039080994849
1175873476408094496276467328147481997535854918478570187
4349196734187405883973013885946480687257635768768955103
1803443893422977219172825104667388038689683963712631564919
26414762743261378188035090627205864388089663218322307283
521677380558277442256716045563636257921911632928166331
3261292592427777812731312008121705585735590556090203166049
373202947573703564735526764182183980866702479225258523
318370494634531043025655512551402516631508991012917099249
13131736510281051576267291917846357444236815568192304943787
33074432695864618339191336572874902319788063320695198674983
4070580983333798585225193584873520661427154977657413190431
778045166960293740163524961960318239789653818709518267
677681428847688985422251678634750021487804200030458123
150714936270755496077039162831175356245149716892507659219
85932024647818700505631511951373306363357620907944914423
112028125016202030436650817880050528041555938218416583991
403002849957891009299723619790528227701510983326572781337
131070210491147653943487875217794513753903767920517454113
23544548296147266132329851289173131385470955066686750943
21546074579005783465111681241916700995454599602055497262217
41182261359076078362426721912640458127441941237471825697
422344617324805515828862331750170476259018093134279628873
1193374493803399546487426238019058209044380856298934027
301579214662627876004384576154052218980110753014872327
8328704422405127227021120613150339965088306769274468201
1947429678485047644280103375621258094545718318937338193
289625416666864853049064726719342705966535154189088213401
587509680707525988386864048886595309173204546985403326549
140742544347271121195245978046686964052992007577915085671
29807751952205518597409492556529249966532161275074713681
3505173425252616963590724991236160534376188834319579693
8805522853686065217069264091769877654875951298416381539
1960317044610461462056924936596694245451905495990802056811
4660968531335305142339458394430698652770924236679929961
5246584036132081013127158682870286074987091063685603
47149441737093982143948186085407773328848553473557511813
537482671543287396931098095014233196950120758021990172259
1984722243039166065008335373098488836974937955134234423
11704537586632397137246919733882934526055586141070050007
1028940130059179231692147537221683768153741937416099563567
1598074966754679658926154600426702621643797178988428540557
340354292025334570480921138999423947276923749176543225451
18258059927475318137593715273442505326625450821766074493
105582312279605626477480172660370208947955433362361033369
16680979194257911463480015004580642479196310205085201229
3694411708903099595656626204728515521954172610366319251
23711418319640361114565540226161492038844706978300268313
617690339187210090075770867048677339523642521289608189
30577683151973955931830148306058206762045473915861022933
15008824753751978336056538605950683411981352892351656947
228404351891384886972436632006930971356071239845527251

 Re: Как писать быстрые программы
Yadryara в сообщении #1723976 писал(а):
Если не нашлось ни одного фактора между $2^{19]$ и, например $10^{12}$ — переходить к следующему числу cha.

А если нашлось?

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1723979 писал(а):
А если нашлось?

А если нашлось, смотрим на новое частное. И если оно вдруг составное — выбрасываем цепочку по перебору.

Пример.

Частное:
72061599029771168550147578405461517329145944736448295217

Фактор: 1119227

Новое частное:
64385150670749694700134627207404322205545385106371
Оно простое.


Другой пример.

Частное:
23998376755237844762832985175590720204062929436852081937

Фактор: 927531383

Новое частное:
25873385197617453298432474899440378508532826039
Оно составное. Перебор.

 Re: Как писать быстрые программы
Yadryara
Хорошо. Теперь у нас есть эталонный набор входных данных (270 чисел).
Есть требование к функции - вернуть делитель, если он меньше 10^12 и вернуть "не найдено" (или ноль, например) если такой делитель не найден.
Теперь надо определиться, ожидаем ли мы что найдутся все 113 чисел с наииеньшим делителем меньшим 10^12 или допускается найти не все. То есть нужен критерий как оценивать результат.
Ну например, за 22 секунды нашлось 100 чисел с делителями меньше 10^12 и ещё 24 числа с делителями больше 10^12 -- как учесть в "рейтинге" такой результат?

 Re: Как писать быстрые программы
Простите, а зафига искусственно ограничивать величину делителя, если он реально найден?!
Ограничивать можно порог до которого ищутся делители, но если что-то найдено, то выбрасывать его только потому что он больше порога - глупость.

 Re: Как писать быстрые программы
Dmitriy40 в сообщении #1723995 писал(а):
Простите, а зафига искусственно ограничивать величину делителя, если он реально найден?!

Ограничивать надо как-то величину искомых делителей, но учитывать надо все какие нашлись, конечно.
Тут же смысл по-прежнему всё тот же -- ускорить отсев.
Вот у нас есть 270 чисел, и если я правильно понял, каждое должно быть pq, иначе в отсев.
Задача - максимально быстро их проверить/отсеять.
Предлагается увеличить скорость проверки за счёт выбора некоего параметра B1 в алгоритме факторизации ECM, отвечающего за максимальное значение делителя, "ожидаемого" алгоритмом.

-- добавлено через 6 минут --

Dmitriy40 в сообщении #1723995 писал(а):
Ограничивать можно порог до которого ищутся делители, но если что-то найдено, то выбрасывать его только потому что он больше порога - глупость.

Я задавал вопрос по "качеству" процедуры.
Вот допустим, полная факторизация 270 чисел (numdiv или ещё как) занимает 120 секунд.
А нахождение одного делителя у 130 чисел при применении "управляемого" ECM занимает 30 секунд, это хорошее ускорение или нет? После функции останется 130 чисел нефакторизованных, полная факторизация которых займёт примерно 130/2=70 секунд, плюс 30 уже потраченных = 100 секунд на все числа. Против 120 секунд без ускорения.
Я вот об этих критериях, как-то надо их оцифровать.

Для протокола, полная факторизация этих 270 чисел у меня на планшете 260 секунд.
Нахождение делителя у 135 чисел при помощи "кастомного" вызова встроенной ECM - 35 секунд.
Вроде экономия неплохая.

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1723994 писал(а):
Теперь у нас есть эталонный набор входных данных (270 чисел).

А действительно. Видимо движок отрезал нижние — не помещались в 20000 символов.

Ну вот и надо сравнить какой будет отсев и какова скорость по сравнению с numdiv или с factor. Кстати, компилятор/трянслятор, видимо, не понимает команды factor с параметром и делает обычный полный фактор.

wrest в сообщении #1723996 писал(а):
Я задавал вопрос по "качеству" процедуры.

Главным критерием я считаю скорость нахождения кортежей.

Какие-то быстро отсеять не удастся — значит отсеются на следующем этапе. Всё по тому же принципу: вовремя переходить к следующему числу, не зацикливаться сильно на одном, если не получается.

wrest в сообщении #1723994 писал(а):
Ну например, за 22 секунды нашлось 100 чисел с делителями меньше 10^12 и ещё 24 числа с делителями больше 10^12 -- как учесть в "рейтинге" такой результат?

Пока не вижу другого способа кроме как посчитать результат как количество найденных непрерывных кортежей в единицу времени.

Так же как с алгоритмом Полларда, который в виде функции. Вот был оптимум в районе 30 тысяч проверок по одному c, так пока и остаётся. Хотя, возможно, давно надо корректировать было. Или отказаться вообще от него. Много параметров же, сложно уследить.

Почему и задача до сих пор интересна.

-- добавлено через 6 минут --

wrest в сообщении #1723996 писал(а):
Нахождение делителя у 135 чисел при помощи "кастомного" вызова встроенной ECM - 35 секунд.

А кто говорил что надо выражаться ясно ? :-)

 Re: Как писать быстрые программы
Yadryara в сообщении #1723999 писал(а):
Пока не вижу другого способа кроме как посчитать результат как количество найденных непрерывных кортежей в единицу времени.

Вы делаете гоночный автомобиль. Конечно, главный критерий это чтобы проехать быстрее остальных. Но тому кто для вас делает скажем обтекатели или оперение, этот критерий мало о чем говорит.

-- добавлено через 2 минуты --

Yadryara в сообщении #1723999 писал(а):
А кто говорил что надо выражаться ясно ?

Яснее будет когда вы до формулируете тз. Пока ещё не всё сделали. Нет "эталонной" функции, относительно которой мерить (и методики - что меняем, как считаем).

-- добавлено через 25 секунд --

Yadryara в сообщении #1723999 писал(а):
А кто говорил что надо выражаться ясно ?

Яснее будет когда вы до формулируете тз. Пока ещё не всё сделали. Нет "эталонной" функции, относительно которой мерить (и методики - что меняем, как считаем).

-- добавлено через 3 минуты --

Yadryara в сообщении #1723999 писал(а):
Главным критерием я считаю скорость нахождения кортежей.

Функция, которая находит один делитель или не находит ни одного, не ищет кортежи...

 Re: Как писать быстрые программы
Yadryara в сообщении #1723999 писал(а):
Пока не вижу другого способа кроме как посчитать результат как количество найденных непрерывных кортежей в единицу времени.
А я вот вижу: проверить все заданные 270 чисел за минимальное время.
Не потеряв при этом заданный список решений (да, его тоже надо включать в ТЗ, иначе функция check(n)=return(0) "проверит" их все очень быстро). Подразумеваемая оговорка "не потеряв ничего" не катит - может ради скорости можно потерять решения например с высшими степенями или ещё какие-то.
Кроме оговорки "не потеряв список решений" желательна оговорка "выдать как можно меньше ложноположительных решений" (т.е. кроме предыдущего списка точных решений и ещё какие-то кандидаты). "Как можно меньше" - конечно не формально, но тут можно сравнивать с размером списка точных решений, чтобы ложноположительных было не больше скажем 20% от точных. Эта величина зависит от следующих проверок и потому не может быть зафиксирована раз и навсегда для данного этапа проверок, но можно ограничить каким-то эмпирическими величинами.

wrest в сообщении #1724004 писал(а):
Вы делаете гоночный автомобиль. Конечно, главный критерий это чтобы проехать быстрее остальных. Но тому кто для вас делает скажем обтекатели или оперение, этот критерий мало о чем говорит.
+1.

 Re: Как писать быстрые программы
Аватара пользователя
wrest в сообщении #1724004 писал(а):
Нет "эталонной" функции, относительно которой мерить

Вроде как раз есть. Если количество делителей для любого из 270 приведённых чисел (numdiv(cha)) не равно 4, то цепочка выкидывается.

wrest в сообщении #1724004 писал(а):
Вы делаете гоночный автомобиль. Конечно, главный критерий это чтобы проехать быстрее остальных.

Вот видите, уже есть не только понимание, но и согласие между нами. Разве что слово "остальных" необязательное.

wrest в сообщении #1724004 писал(а):
Но тому кто для вас делает скажем обтекатели или оперение, этот критерий мало о чем говорит.

И что? Мне нужен обтекатель, который будет давать бо́льшую итоговую скорость на трассе, чем тот обтекатель с которым я ездил до этого.

Мастера, дайте мне антикрыло, я покатаюсь с ним и посмотрю удалось ли повысить скорость. Затеи изменю настройки и покатаюсь снова и снова.

 Re: Как писать быстрые программы
Аватара пользователя
Мне, кстати, больше нравится грибная аналогия. Но можно соединить её с гоночной.

Гонщик решил посоревноваться в скоростном сборе грибов. И давай прямо на машине колесить по перелескам. Если видел гриб, старался времени не терять, хватал на ходу.

И уже через 10 минут привёз судье три гриба.

— Тоже конечно урожай. Но три гриба мало, надо для более надёжной оценки скорости нахождения хотя бы сотню собрать. Ну ладно, пусть будет хоть какой-то ориентир — ожидаемая средняя скорость 432 гриба в сутки.

За дело взялся дед Мазай. Пешком пошёл, по старинке, с корзинкой, заглядывал чуть ли не под каждый куст. Через 3 часа принёс судье 100 грибов.

— Поздравляю, ты лидер по средней скорости — 800 грибов в сутки.

 [ Сообщений: 1147 ]  На страницу Пред.  1 ... 73, 74, 75, 76, 77  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group