Solving shortest path problem with Dijkstra’s algorithm for n negative-weight edges and no negative-weight cycle

Although many texts state Dijkstra’s algorithm does not work for negative-weight edges, the modification of Dijkstra’s algorithm can. Here is the algorithm to solve a single negative-weight edge without negative-weight edges.

Let $ d_s(v)$ be the shortest distance from source vertex s to vertex v.
Suppose the negative edge $ e$ is $ (u, v)$
First, remove the negative edge $ e$ , and run Dijkstra from the source vertex s.
Then, check if $ d_s(u) + w(u, v) \leq d_s(v)$ . If not, we are done. If yes, then run Dijkstra from $ v$ , with the negative edge still removed.
Then, $ \forall t \in V $ , $ d(t) = min(d_s(t), d_s(u) + w(u, v) + d_v(t))$

Given the above algorithm, I want to modify the above algorithm again to solve n negative-weight edges and no negative weight cycle. Any hint?

How does the Fetch-Decode-Execute-Reset (FDER) cycle work?

How is this different to the Fetch-decode-execute (FDE) cycle?

I have an understanding of the FDE cycle and how the CPU works, although I came across a FDER cycle, when reading about the CPU scheduling and the the methodology regarding process swapping using process control blocks.

There was limited information on the actual workings of the FDER cycle – which I will appreciate if you can help me with?

I presume it sort of resets the registers, although I am not sure?

Thank you for your help.

Reference: A/AS Level Computer Science for OCR (p43) – used for self-study.

Cycle detection with Mathematica

Suppose we have a recurrent process. And we know for sure that it is cyclical. That it has a period.

How do I find this period using Wolfram Mathematica?

An example process is provided here.

I am using code like this:

iteratedStates[init_]: = NestWhileList[process[#]&, init, Unequal, All];  period[init_]: = With[{data = iteratedStates[init]},     First@Differences@Flatten@Position[data, Last@data]     ]; 

It is not effective. I tried to implement various algorithms but their implementations were even slower ((

UPD. Yes, there is FindTransientRepeat
But here what we have:

data = ContinuedFraction[(Sqrt[12] + 2)/7, 10004]; Timing[Length@Last@FindTransientRepeat[data, 2]] {0.0624004, 6} Timing[First@Differences@Flatten@Position[data, Last@data]] {0.0156001, 6} 

I need store all data. So NestWhileList is needed. And it seems that my implementation is good enough

Odd cycle transversal

Suppose we have a graph $ G$ with $ n$ vertices. Say LP a linear programming problem where there is a variable for each vertex of $ G$ , each variable can take value $ ≥0$ , for each odd cycle of $ G$ we add to LP the constraint $ x_a+x_b+x_c+…+x_i≥1$ where $ x_a,x_b,x_c,…,x_i$ are the verteces of the cycle. The objective function of LP is $ \min \sum\limits_{1}^{n}{x_i}$ .

We say $ S$ an optimal solution of LP. Can we say that each vertex, whose variable takes a value $ >0$ in $ S$ , is a vertex of at least a minimum odd cycle transversal of $ G$ ?

In a single cycle datapath, do decode and operand fetch occur simultaneously?

After instruction has been fetched, does it go to control unit and register file at the same time or one after the other? For example if the control unit and register read both have 80ps delay, and we’re calculating the total delay for a cycle, would we take their delay as 80ns(if they occur simultaneously) or if they happen one after the other so in that case delay of decode and operand fetch would be 160ns. Which one is correct?

Negative cycle detection using bellamn ford and its correctness

I recently started studying algorithms on my own using corman and mit algo videos in youtube. I am going thru bellman ford.

enter image description here

I have 2 doubts in correctness of algorithm

1) why are we relaxing (num of vertices – 1) times all the edges. Why not some finite number of times till earlier values and new values remain same.

2) Second for loop(lines 5,6,7 in algo image) is for detecting negative edge cycle. THen i have gone through this correctness. I have seen a theorem that if there is a negative edge cycle reachable from source s then we can find an edge uv such that d(v)>d(u)+w(u,v) [I understood the proof by contradiction(if summing all vertices of negative edge cycle results in sum of all weights along negative cycle positive which means contradiction as it must be negative – page 2 of https://web.stanford.edu/class/archive/cs/cs161/cs161.1168/lecture14.pdf]

But i am not able to visualise such an edge if i have some negative edge cycle from source vertes s. Please help me how such edge exists?

Exit a deadlock cycle

deadlock cycle

Suppose i have the following resource allocation graph with a deadlock cycle, i see why it is a deadlock cycle, what i don’t get is how to recover from this cycle

i’m thinking about aborting a process, any process here will lead to non-deadlock situation, but doesn’t that cause the other process to not execute and hence the program won’t execute as we’re expecting it to be, i think this is a correct answer, but is there another way to do such that all processes will eventually run ?