Получив на вход примерно такое описание:
Цитата:
имеется три вершины: A, B, C, и две дуги: AB и AC.
... программа должна выдать что-то вроде этого:
Знающие люди сразу спросят: \"dot/neato?\" Ага, они самые (см.
Швейцарский нож, или Визуализация графов). Не, а действительно, пуркуа бы и не па?..
Так как в задачах такого рода можно споткнуться или слишком закопаться даже в выборе форматов входных и выходных данных, то
опять предлагаю на выбор:
Входные данные:
- Текстовый файл. В каждой строке -- два слова разделённых пробелом (-ами). Каждое слово определяет название вершины. Каждая строчка определяет дугу графа -- соединение двух вершин. Само собой, что одинаковые слова в разных строчках обозначают одни и те же вершины. По желанию, можно учитывать порядок расположения вершин -- если граф ориентирован.
- Какой-нибудь из существующих форматов которым можно задать графы/отношения: dot (GraphViz), например. Это если вам будет не лень писать парсер.
- RDF или XML
- другой вариант
Выходные данные:
- SVG-файл, как у true-grue и chess\'а в предыдущей задаче.
- Графический файл, его можно рисовать например через ~yz/prog/ged/ged.f (я правда, сам не проверял, работает ли сейчас нормально эта наработка).
- Картинка в GUI. Можно через или через ~pi/lib/wincon/graph.f (тема на форуме) или через ~profit/misc/basicdraw.f (тема на форуме) (второе получится только, если сможете достаточно допечь меня, чтобы я принялся за рисование линий и текста в картинке). Конечно, собственноручную отрисовку своими силами никто не запрещает.
- Доработайте Node Editor и внедрите это дополнительной функцией (для безработных и холостых форт-суперменов с бесконечным запасом жизни и энтузиазма [активируется командами \"forthgod mode on\" или \"chuckmoore mode on\" в консоли мозга]).
- другой вариант
Если студент может без ознакомления с теорией за две недели может написать более-менее работающий вариант -- то почему у вас не получится?.. Я правда, тогда так и не доработал до конца физическо-механистический вариант, то есть представление графа как развесистой ветки \"клюквы\" где \"ягоды\" (вершины графа) взаимно отталкиваются, а \"веточки\" (дуги) -- ограничено эластичны. В итоге -- получил в общем случае колебательную систему, которую за ограниченное время до сдачи так и не \"успокоил\" до конца.
Ориентированный или неориентированный граф -- решайте сами, но, насколько я помню, орграф визуализировать проще (где там мои конспекты по теории графов?..