Форум сайта python.su
568
new_optimistглупости это, нужно избавляться от рекурсии. Я уверен, что вы придумали неэффективный или логически неверный алгоритм. Нужно придумывать эффективный, а не насиловать железо и фантазировать.
Меня больше интересует не то, кто виноват, а что делать (как добавить питону памяти)
Офлайн
0
FishHookУже писал: По сути это та часть поиска компонент сильной связности, где нужно каждой вершине V_i приписать значение f_i при обходе графа. Если слова “компоненты сильной связности” Вам не очень понятны, то суть можно понять просто из кода, благо вся его суть в этих строчках (D_s_ - список дочерних элементов для s):
Рассказывайте, что за задача такая.
def DFSR(s): global D,t,raw,f raw.remove(s) for u in D[s]: if(u in raw): DFSR(u) t=t+1 f[s] = t def DFSLoop(): global raw while(len(raw)>0): DFSR(raw[0]) DFSLoop()
Офлайн
568
new_optimist
Вы меня простите, но я в этом разбираться не хочу, мне ваш код каким-то бредом представляется.
Вы уж будьте добры, опишите задачу так, как будто вы заказчик, а я исполнитель, и решать я её буду сам, без ваших “наработок”
Офлайн
0
FishHookЗадача звучит так: есть файл 08v2.txt, в который записан список вершин. В файл 08d2.txt записан словарь, где каждой вершине сопоставлен список ее прямых потомков (когда на графе идет стрелочка от вершины к вершине). Набор вершин v1,v2,…,vn образуют класс сильной связности, если из любой вершины этого множества можно по стрелочкам дойти до любой другой вершины этого множества (но если в это множество добавить новую вершину, то свойство связности уже будет утеряно). Задача в том, чтобы разбить исходное множество вершин на классы сильной связности и указать, сколько вершин попало в каждый класс.
опишите задачу так, как будто вы заказчик, а я исполнитель, и решать я её буду сам
Офлайн
568
Отлично, вы забыли файлы приложить.
Офлайн
0
FishHookhttp://double.vv.si/08p2.txt
Отлично, вы забыли файлы приложить
Офлайн
568
http://double.vv.si/08d2.txt
В этом файле 578 288 открывающих скобки и ни одной закрывающей.
Офлайн
0
FishHookВсе правильно, значения записаны командой pickle.dump(P, f).
http://double.vv.si/08d2.txtВ этом файле 578 288 открывающих скобки и ни одной закрывающей.
Офлайн
857
new_optimistpickle применяется для передачи внутренних данных программы на питоне внутрь другой программы на питоне через внешний ресурс.
Все правильно, значения записаны командой pickle.dump
Отредактировано py.user.next (Апрель 12, 2015 23:23:29)
Офлайн
0
py.user.nextДа, все так. Но мы же говорим о питоне. Кстати, исходный файл содержал только ребра графа и там было много вершин, в которые либо нет входящих стрелочек, либо нет исходящих. Такие вершины по определению сами являются классами связности и интереса не представляют.
pickle применяется для передачи внутренних данных программы на питоне внутрь другой программы на питоне через внешний ресурс.
Если же это внешние данные, они должны храниться в формате, доступном для любых программ на любых языках.
Офлайн