2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Мaple.Графы
Сообщение29.05.2011, 22:48 


27/03/11
12
Помогите!!!
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 
Заблокирован по собственному желанию
Аватара пользователя


18/05/09
3612
 i  Приведите код, в котором Вы получаете ошибку. Неча заставлять людей листать какие-то пэдээфы.
Приведите сообщение об ошибке. Используйте кнопку Изображение для редактирования своего сообщения.

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

 Профиль  
                  
 
 Re: Мaple.Графы
Сообщение30.05.2011, 13:28 
Заблокирован по собственному желанию
Аватара пользователя


18/05/09
3612
AKM в сообщении #451827 писал(а):
Как исправите - пишите сюда, чтобы тему перевели в соответствующий раздел
Вам оставалось сообщить модераторам о сделанных исправлениях. А не заводить дублирующую тему. Правила форума почитывайте.

Возвращено.

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


29/07/05
8248
Москва
 i  Перемещено в раздел "Околонаучный софт"

 Профиль  
                  
 
 Re: Мaple.Графы
Сообщение30.05.2011, 14:44 


27/03/11
12
Исправлено: написала саму программу и выделила строку с ошибкой

 Профиль  
                  
 
 Re: Мaple.Графы
Сообщение31.05.2011, 08:31 


25/08/05
645
Україна
Еще напишите точный текст сообщения об ошибке

 Профиль  
                  
 
 Re: Мaple.Графы
Сообщение31.05.2011, 11:45 


27/03/11
12
> 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 


25/08/05
645
Україна
Странно, у меня такой ошибки не выдает

 Профиль  
                  
 
 Re: Мaple.Графы
Сообщение31.05.2011, 11:57 


27/03/11
12
Все работает??? Может это зависит от версии Maple??

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

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

 Профиль  
                  
 
 Re: Мaple.Графы
Сообщение31.05.2011, 14:19 


25/08/05
645
Україна
Не все работает а работает именно ета строка..ето значит, что синтаксических ошибок в ней нет.. Скорее всего дело в том что выражение convert(Column(B,x),set) для конкретного B не опеределено, по разным причинам, и не является множеством. Протестируйте внимательно что такое B

 Профиль  
                  
 
 Re: Мaple.Графы
Сообщение03.06.2011, 20:32 
Заслуженный участник


27/06/08
4063
Волгоград
Кстати, книжка "Графы в Maple" устарела, не успев выйти.
Дело в том, что примерно то же время в Maple появился пакет "GraphTheory", существенно превосходящий по своим возможностям пакет "networks".
Подавляющее большинство задач, решение которых рассмотрено в книжке на базе networks, с помощью нового пакета решаются вызовом одной функции.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group