LINUX.ORG.RU
ФорумTalks

Небольшой тест

 


0

1

Есть однонаправленный граф. Направления показаны стрелками. Сколько существует путей из точки a в точку f? Желательно посчитать самому.

a → b, a → c, a → d
b → d, b → e, b → f
c → d, c → e, c → f
d → e, d → f
e → f
f → (нет исходящих)

Граф картинкой: https://ibb.co/RT5zLGYj

P.S. Потом напишу, что ответили нейронные сети.



Последнее исправление: AnonymUser (всего исправлений: 2)

Насколько я понимаю, прямых путей нету, только с пересадками, например:

a → b, b → f;
a → b, b → e, e → f;
a → b, b → d, d → e, e → f;
a → c, c → f;
a → d, d → f;
a → d, d → e, e → f;
yars068 ★★★★★
()

Сколько

Всё уже посчитано до нас, как вариант, через матрицу смежности © (1gb.ru).

Желательно посчитать самому.

Раз, два, три, … много! :)

quickquest ★★★★★
()

Зачем тест, что выяснить хотел, зачем нам на это отвечать, что обсуждать?..

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

CrX ★★★★★
()

У меня тоже получилось 10. Спросил дипсик, он написал кучу фигни, которую лень проверять, но ответил тоже 10.

knovich ★★
()

Потом это когда?
Думаю, пора уже. Почти два часа народ маринуешь. А то сейчас как начнём что попало в теме обсуждать и всем будет на тебя пофиг.

imul ★★★★★
()
Ответ на: комментарий от quickquest

через матрицу смежности

Вроде накалькулировалося:

sage: g = DiGraph({'a': ['b', 'c', 'd'], 'b': ['d', 'e', 'f'], 'c': ['d', 'e', 'f'], 'd': ['e', 'f'], 'e': ['f']})
sage: m = g.adjacency_matrix()
sage: i = 0
sage: while m^i != 0:
....:     n = (m^i)[0, 5]
....:     print(f"{n} walks of length {i}")
....:     i += 1
....: 
0 walks of length 0
0 walks of length 1
3 walks of length 2
5 walks of length 3
2 walks of length 4

ratvier ★★
()
Ответ на: комментарий от imul

Т.е. тоже 8. Я пробежался глазками по всем путям слева направо, у меня тоже 8 вышло.

UPD. А что ответили нейронные сети, вообще до лампочки.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от dimgel

Утраиваю
Уж полночь близится, а Германа всё нет. Нехорошо так делать.

imul ★★★★★
()
Ответ на: комментарий от ratvier

Я просто сложил 0+0+3+5+2. Или я не понял вопроса?

imul ★★★★★
()
Ответ на: комментарий от imul

Правильный ответ. Все же 10.

Две сети с первой попытки не справились и насчитали 6.

https://deepai.org/chat#be19bde4-e216-420a-8752-00a4bd333b04

https://alice.yandex.ru/?share=77357c70-66b3-a367-662e-afdce4e1959f

P.S. Код на php в бэш стиле находит тоже 10.

<?php
/*Поиск всех путей на ориентированном графе из точки а в точку f
на основе упорядочивания массивов и элементов массива по возрастанию
и алафавиту с использованием "переменных переменных".
Легко доработать до поиска кратчайшего пути. */
$a=array('b','c','d');
$b=array('d','e','f');
$c=array('d','e','f');
$d=array('e','f');
$e=array('f');
$f=array();
$x=array('a','b','d','e','f');
print_r ( $x );
print "\n";
$j=count($x)-1;
while($j !=0) {

	$key = array_search($x[$j], ${$x[$j-1]});
//if (${$x[$j-1]}[$key+1] != '') {
if (isset(${$x[$j-1]}[$key + 1])) {
	$x=array_slice($x, 0, $j);
	array_push($x, ${$x[$j-1]}[$key+1]);
	$z=$x[count($x)-1];
	$z=${$z}[0];
while (1) {
;
	if ($x[count($x)-1]=='f') {	array_push($x, $z);  break ;}
	array_push($x, $z);
	$z=${$z}[0];
	}
	$j=count($x);
	print_r ( $x );
	echo "\n";
		}
$j--;
}
?>
AnonymUser
() автор топика

Не надо картинок, надо dot формат, поддерживаемый через graphviz. Т.е. твоё сообщение должно быть вида:

Digraph G {
    layout=fdp;#вариант движка когда форма непонятная, там разные движки есть подбери нужную
    A -> B; A -> C; A -> D;
    B -> D; B -> E; B -> F;
    C -> D; C -> E; C -> F;
    D -> E; D -> F;
    E -> F;
}

А челики сами смогут dot -Tpng graph.dot -o graph.png.

PS

@maxcom смотрю у нас dot синтаксис поддерживается, а в списке языков в описании маркдауна его нет. Или что это за магия, но подсветка правильная. Внесите ясность в описание разметки маркдаун, видимо там какая-то большая библиотека работает, которая умеет в больший набор синтаксисов, чем приведён тут (linux.org.ru). И это, у нас то ссылки в скобках указывают на домент, то не указывают. here. Как я заметил для кириллицы будет домен показан, а для английского нет.

peregrine ★★★★★
()
Ответ на: комментарий от peregrine

Как я заметил для кириллицы будет домен показан, а для английского нет.

Дело не в алфавите, а в количестве символов. Если меньше четырёх, то добавляется домен в скобках, а то есть «уникумы», которые любят ссылки делать в виде © или ., просто чтобы подгадить.

Или что это за магия, но подсветка правильная.

Комментарий никак цветом не выделен, хотя в других языках серенький вроде. А ты какой язык указал? Прям dot?

А так вообще: https://github.com/maxcom/lorsource/blob/5ebeac480d52ef52e29a8ea674190257766c4981/src/main/java/ru/org/linux/util/bbcode/tags/CodeTag.java#L64

CrX ★★★★★
()
Последнее исправление: CrX (всего исправлений: 4)
Ответ на: комментарий от CrX

Всё-равно это как-то неясно или неправильно ИМХО. Я могу и вот так извратиться: .ㅤㅤㅤㅤ

Да просто dot написал

PS

Digraph G {
    //такой комментарий тоже комментарий
    layout=fdp;#вариант движка когда форма непонятная, там разные движки есть подбери нужную
    A -> B; A -> C; A -> D;
    B -> D; B -> E; B -> F;
    C -> D; C -> E; C -> F;
    D -> E; D -> F;
    E -> F;
    /*а это многострочный
      комментарий
    */
}

Угу а тут едет. Значит не dot а что-то другое срабатывает. Но как? Неужели d по первой букве? Имхо ворнинг надо тогда, сравнивать что после трёх апострофов до перевода строки стоит.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 6)
Ответ на: комментарий от dataman

Зато выяснилось про подсветку для dot. А если сразу тему под нож, так бы и жили в неведении.

imul ★★★★★
()
Ответ на: комментарий от nerfur

и какие 10?

a → b → f
a → b → e → f
a → b → d → f
a → b → d → e → f

a → c → f
a → c → e → f
a → c → d → f
a → c → d → e → f

a → d → f
a → d → e → f
goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 1)
Ответ на: комментарий от dataman

А зачем ты вообще пролоббировал Офтопик-лист, п. 27 и не пользуешься им?

Ну формально тут вроде «решите мой рандомный тест», да и в ответе со ссылками на LLM помимо них есть и свой(?) php-код.

CrX ★★★★★
()

Вот так можно определить :)

MATCH p = (start:Node {id: 'a'})-[*]->(end:Node {id: 'f'})
RETURN count(p) AS total_paths

cypher от Gemini

P.S. Что можно почитать по всяким neo4j и графам? И стоит ли 🤔…

necromant ★★★
()

Запустил локально qwen2.5:7 - посчитал, выдал 8. Спросил, а может ещё? Насчитал 14.

deepseek-r1:8b - очень долго рассуждал, проверял, можно сказать, реально увлёкся задачей и всегда выдавал 10. Но так и не смог остановиться и я его притормозил после 3500 токенов. А если бы не остановил, он бы дальше так и рассуждал без конца? По ходу выдал - «10 путей, но сейчас похоже на 10.»

llama3.2:latest - вообще фигню выдавал от 1 до 6, путая языки: «Мы можем использовать Breadth-First Search (БREADТФ) или Depth-First Search (ДП). В этом случае мы будем использовать БРЕДТФ.»

WerNA ★★★★★
()

Есть однонаправленный граф.

Напраления показаны стрелками.

Сколько существует путей из точки a в точку f?

клод с ходу ответил

10 путей.

  Считаю количество путей до f из каждой вершины (от конца к началу):

  - f → 1 (сам в себе)
  - e → f: 1
  - d → e(1) + f(1) = 2
  - c → d(2) + e(1) + f(1) = 4
  - b → d(2) + e(1) + f(1) = 4
  - a → b(4) + c(4) + d(2) = 10

  Ответ: 10.
ergo ★★★★
()

А 10 лет назад мы тут так слоников рисовали.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от WerNA

А всего лишь надо было упорядочить граф по алфавиту. Ренейминг. И задача на поиск всех путей и даже на поиск кратчайшего пути становится довольно простой. Правда, только на однонаправннном графе, такого типа. На других не знаю…

Вывод:

Т.е. пока человек и код человека побеждает нейронные сети.

P.S. Следите за нашим шоу.:)

Вспомнил, как нейронная сеть от Гугла перевела мне число из 10ричной системы в 16ричную с ошибкой в одном знаке.

AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 2)

я как-то попросил алису от Яндекса нарисовать полносвязный граф из 8-ми узлов, после того потрясения больше я у неё ничего не прошу :-)

MKuznetsov ★★★★★
()
Ответ на: комментарий от AnonymUser

Языковая модель занимается моделированием языка? Продолжайте наблюдение, мы с Вами свяжемся

Gary ★★★★★
()
Ответ на: комментарий от Gary

Вы про что?

Какая связь?! Думаю, что с Вами тоже свяжутся….

AnonymUser
() автор топика
Ответ на: комментарий от MKuznetsov

Я просил Алису нарисовать круг с числами от 1 до 31 внутри с края, для календаря. Тоже глубокий шок на грани травмы.

AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 2)
Ответ на: комментарий от imul

Раз человек решил за 1 шаг, а сеть за два, то роботы пока не победили человеков :)

AnonymUser
() автор топика
Ответ на: комментарий от AnonymUser

abdef abdf abef abf acdef acdf acef acf adef adf

Ай блин, рёбра be и cf глазками не заметил.

dimgel ★★★★★
()
Ответ на: комментарий от CrX

есть «уникумы», которые любят ссылки делать в виде © или ., просто чтобы подгадить.

А я всегда считал, что, в частности, © – это вполне нормально, т.е., указание на источник. А вот с точкой – это уже перебор – рекомендую любителям оставлять такие ссылки попробовать в этот пиксель попасть.

yars068 ★★★★★
()
Ответ на: комментарий от AnonymUser

C утра посидел и убрал «переменные переменных», чтобы было понятно, что в коде происходит, а то как-то аж не по себе (давно этот код писал):

<?php
/*Поиск всех путей на ориентированном графе из точки а в точку f
на основе упорядочивания массивов и элементов массива по возрастанию
и алафавиту с использованием "переменных переменных".
Легко доработать до поиска кратчайшего пути.
* В это версии переменные переменных заменены поиском след. вершины*/

$a=array('b','c','d');
$b=array('d','e','f');
$c=array('d','e','f');
$d=array('e','f');
$e=array('f');
$f=array();
$x=array('a','b','d','e','f');
print_r ( $x );
print "\n";
$j=count($x)-1;
while($j !=0) {

				if ($x[$j-1] =='a')
			 $ar=$a;
			 	if ($x[$j-1] =='b')
			 $ar=$b;
			 	if ($x[$j-1] =='c')
			 $ar=$c;
			 	if ($x[$j-1] =='d')
			 $ar=$d;
			 	 if ($x[$j-1] =='e')
			 $ar=$e;
			 	 if ($x[$j-1] =='f')
			 $ar=$f;

	$key = array_search($x[$j], $ar);
//if (${$x[$j-1]}[$key+1] != '') {

if (isset($ar[$key + 1])) {
	$x=array_slice($x, 0, $j);
	array_push($x, $ar[$key + 1]);
	//$z=$x[count($x)-1];

             if ($x[count($x)-1] =='a')
			 $z=$a[0];
			 	if ($x[count($x)-1] =='b')
			 $z=$b[0];
			 	if ($x[count($x)-1] =='c')
			 $z=$c[0];
			 	if ($x[count($x)-1] =='d')
			 $z=$d[0];
			 	 if ($x[count($x)-1]=='e')
			 $z=$e[0];
			 	 if ($x[count($x)-1] =='f')
			 $z=$f[0];


while (1) {

	if ($x[count($x)-1]=='f') {	array_push($x, $z);  break ;}
	array_push($x, $z);

             if ($x[count($x)-1] =='a')
			 $z=$a[0];
			 	if ($x[count($x)-1] =='b')
			 $z=$b[0];
			 	if ($x[count($x)-1] =='c')
			 $z=$c[0];
			 	if ($x[count($x)-1] =='d')
			 $z=$d[0];
			 	 if ($x[count($x)-1]=='e')
			 $z=$e[0];
			 	 if ($x[count($x)-1] =='f')
			 $z=$f[0];
	}
	$j=count($x);
	print_r ( $x );

		}
$j--;
}
?>


AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 1)
Ответ на: комментарий от quickquest

http://www.e-maxx-ru.1gb.ru/algo/fixed_length_paths

<stream:stream xmlns:stream='http://etherx.jabber.org/streams' version='1.0'><stream:error xmlns:stream='http://etherx.jabber.org/streams'><xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/><text xmlns='urn:ietf:params:xml:ns:xmpp-streams'>syntax error</text></stream:error></stream:stream>
question4 ★★★★★
()
Ответ на: комментарий от ratvier

На вики достаточно подробное описание: https://ru.wikipedia.org/wiki/Матрица_смежности#Степени_матрицы

Спасибо. Меня интересовало представление этого решения. Как принято обмениваться матрицами через сеть, проще говоря :)

question4 ★★★★★
()
Ответ на: комментарий от question4

«Инженер три часа просидел на лекции математика, посвящённой многомерным пространствам. В конце он, очень огорченный, подошёл к лектору и сказал:
— Извините, я хотел бы хоть немножко представить себе предмет вашей лекции. Но я не могу вообразить сферу в девятимерном пространстве!
— Это же очень просто, — ответил ему математик, — вообразите сферу в N-мерном пространстве, а затем положите N равным девяти.»

Матрица - это просто частный случай тензора.

ratvier ★★
()
Ответ на: комментарий от ratvier

А тензор вообще вектор. А вектор - это матрица, А матрица - это вектор. А вектор - это палка с направлением относительно чего-то.

AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)