2014 dxdy logo

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

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




 
 Мaple.Графы
Сообщение29.05.2011, 22:48 
Помогите!!!
http://vuz.exponenta.ru/PDF/book/biparthtml.html - в этой книге в 26 программе у меня показывает ошибку на слово in, в чем проблема?


Программа 26
Код:
> restart: with(networks):with(LinearAlgebra):
Процедура поиска матрицы паросочетания
>
> BipartCard:=proc(A)
> global B;
> local i,j,X,Y,nxt,Usl,else1,C,C1,R,j1,nj,nf1,
> nof1r,is1c,cnv1;
Процедура  подсчета 1 в строке х
>
> nof1r:=proc(x) local i,j;
>  i:=0: for j to n do
>         if B[x,j]=1 then  i:=i+1 fi:
>        od: i;
> end proc:
Процедура поиска помеченного столбца без 1
>
> is1c:=(x)->not is(1 in convert(Column(B,x),set)) and R[x]<>0:             в этой строчке ошибка!!!!!
Процедура преобразование в матрицу
>
> cnv1:=(x)->convert(x,Matrix):
> X:={[math]$1..n}: Y:={$[/math]1..n}:
> for i to n do
>   for j to n do
>    if A[i,j]=0  then B[i,j]:=`*`: fi;
>    if i in X and j in Y and A[i,j]=1  then B[i,j]:=A[i,j]:
>    X:=X minus {i}: Y:=Y minus {j}: fi:
>   od;
> od:
> nxt:=true:
> while nxt do
> C:=[seq(0,i=1..n)]:
> R:=[seq(0,i=1..n)]:
> Usl:=true;
Первоначальные метки строк
>
> while Usl do
>    for i to n do
>     if nof1r(i)=0 then C[i]:=`*`; fi;
>    od;
Метки столбцов
>
>   for i to n do
>    if C[i]<>0 then
>      for j to n do
>       if B[i,j]=0 and R[j]=0 then R[j]:=i; fi;
>      od;
>    fi;
>   od;
> C1:=C;
Метки строк
> for j to n do
>  if R[j]<>0 then
>    for i to n do
>     if B[i,j]=1 and C[i]=0 then C[i]:=j; fi;     
>    od;
>  fi;
> od:
Проверка зацикливания
>
> Usl:=not Equal(cnv1(C),cnv1(C1));
> od:
> nxt:=false:
Поиск помеченного столбца без 1
>
> for j to n do 
>    if is1c(j) then nxt:=true: j1:=j; fi;
> od;
> if nxt then
>  j:=j1;
> i:=0; nj:=0; else1:=true;
>  while else1 do
>  i:=i+1:
>  while B[i,j1]<>0 do i:=i+1; od;  #Поиск 0 по столбцу
>       B[i,j1]:=1; # Вместо 0                     
>       nf1:=nof1r(i);
>       # В новой строке находим другую 1
>       while nf1=2 do 
>         j:=1: while B[i,j]<>1 or j=j1 do j:=j+1; od;
>         nj:=R[j];   
>         if nj=0 # Если столбец без метки   
>           then
>            B[i,j1]:=0;# Вместо ошибочной 1
>            nf1:=1;# Для выхода из цикла
>           else
>            B[nj,j]:=1; # Перенесли 1 по адресу из столбца j 
>            B[i,j]:=0;  # Вместо 1
>            nf1:=nof1r(nj);
>            i:=nj; else1:=false;
>         fi;
>       od;     
>  od;
> fi;#if nxt
> od:
> B:=subs(`*`=0,B);
> end proc:

> save BipartCard, "C:\\bipart.m";

 
 
 
 Re: Мaple.Графы
Сообщение29.05.2011, 23:02 
Аватара пользователя
 i  Приведите код, в котором Вы получаете ошибку. Неча заставлять людей листать какие-то пэдээфы.
Приведите сообщение об ошибке. Используйте кнопку Изображение для редактирования своего сообщения.

Тема перемещена из "Помогите решить (М)" в карантин.
Как исправите - пишите сюда, чтобы тему перевели в соответствующий раздел.

 
 
 
 Re: Мaple.Графы
Сообщение30.05.2011, 13:28 
Аватара пользователя
AKM в сообщении #451827 писал(а):
Как исправите - пишите сюда, чтобы тему перевели в соответствующий раздел
Вам оставалось сообщить модераторам о сделанных исправлениях. А не заводить дублирующую тему. Правила форума почитывайте.

Возвращено.

 
 
 
 Re: Мaple.Графы
Сообщение30.05.2011, 14:12 
Аватара пользователя
 i  Перемещено в раздел "Околонаучный софт"

 
 
 
 Re: Мaple.Графы
Сообщение30.05.2011, 14:44 
Исправлено: написала саму программу и выделила строку с ошибкой

 
 
 
 Re: Мaple.Графы
Сообщение31.05.2011, 08:31 
Еще напишите точный текст сообщения об ошибке

 
 
 
 Re: Мaple.Графы
Сообщение31.05.2011, 11:45 
> is1c:=(x)->not is(1 in convert(Column(B,x),set)) and R[x]<>0:
В этой строке выводит ошибку: Error, reserved word `in` unexpected. Как ее исправить?

 
 
 
 Re: Мaple.Графы
Сообщение31.05.2011, 11:53 
Странно, у меня такой ошибки не выдает

 
 
 
 Re: Мaple.Графы
Сообщение31.05.2011, 11:57 
Все работает??? Может это зависит от версии Maple??

-- Вт май 31, 2011 13:31:19 --

Может вы мне скинете свою версию???

 
 
 
 Re: Мaple.Графы
Сообщение31.05.2011, 14:19 
Не все работает а работает именно ета строка..ето значит, что синтаксических ошибок в ней нет.. Скорее всего дело в том что выражение convert(Column(B,x),set) для конкретного B не опеределено, по разным причинам, и не является множеством. Протестируйте внимательно что такое B

 
 
 
 Re: Мaple.Графы
Сообщение03.06.2011, 20:32 
Кстати, книжка "Графы в Maple" устарела, не успев выйти.
Дело в том, что примерно то же время в Maple появился пакет "GraphTheory", существенно превосходящий по своим возможностям пакет "networks".
Подавляющее большинство задач, решение которых рассмотрено в книжке на базе networks, с помощью нового пакета решаются вызовом одной функции.

 
 
 [ Сообщений: 11 ] 


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