PavlovskyЦитата:
Может я где то пропустил. Опишите, плиз, свой алгоритм перебора.
 Сортирую линии, затем последовательно заполняю числами с проверкой на простоту. Набор простых чисел меня не интересовал (я его не использовал). Это позволяет быстро выходить на 

 простых линий. При 

 я использовал случайное перемешивание 

 и повторял поиск. 
Предварительно я собирался сей простой алгоритм использовать только для знакомства с ситуацией, но так и "застрял". При фиксированной схеме и заданном распределении 

 уже при 

 идет полный перебор за несколько секунд-минут. При 

 любая случайная схема сразу дает решение, только при 

 иногда можно наблюдать небольшое замедление процесса. При этом я еще не дошел до чисто технической оптимизации алгоритма.
Даже сортировку линий оставил упрощенную, хотя один раз попробовал иную - время работы резко увеличилось (при 

). Вот, используемый вес линий:
Код:
function ves(l:integer):longint;
const p:array[1..4] of integer=(27000,900,30,1);
var k:integer;v:longint;
begin
  v:=0;
  case line[l,1] of
    0:for k:=0 to n-1 do v:=v+p[met[line[l,0],k]];
    1:for k:=0 to n-1 do v:=v+p[met[k,line[l,0]]];
    2:for k:=0 to n-1 do v:=v+p[met[(line[l,0]+k)mod n,k]];
    3:for k:=0 to n-1 do v:=v+p[met[(n+line[l,0]-k)mod n,k]];
  end;
  ves:=v;
end;
Возможно, динамическая сортировка была бы лучше - не знаю.
Пока нахожусь в полной растерянности, нужно все переписывать заново.