stevensonmt
When you use the :digraph module and want to get a list of all edges, one would expect to see a list of vertex pairs, ideally with the “emanate from” / “incident to” order consistent. So something like [{:a, :b}, {:b, :c}, {:c, :b}] for a graph with vertices [:a, :b, :c] where :a has an edge incident to :b and :b and :c have a bidirectional edge. Instead you might see something inscrutable like [[:"$e" | 0], [:"$e" | 1], [:"$e" | 2]]. How are you supposed to interpret that list?
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
Hey guys,
I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly
Do you guys have any suggestions what is the best prac...
New
Kia ora,
We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
Hello!
Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app.
I creat...
New
I’ve followed the Phoenix LiveView file upload code here Uploads — Phoenix LiveView v1.0.0-rc.7 and so far everything works just fine wit...
New
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
Other Trending Topics
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
There are three potential reasons for members of this forum to have a look at https://vutuv.de
You are tired or annoyed of LinkedIn.
Yo...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #phoenix_html
- #iex
- #elixirconf-us
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 8- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
al2o3cr
Definitely an odd design choice - you could get something closer to what you’re looking for by mapping
:digraph.edgeover the output of:digraph.edges, but that’s a lot of round-trips to ETS to get what could have been one call to:ets.selecthttps://github.com/erlang/otp/blob/e78684732252a5b2b33de90adaf8f7ff80eb5a3c/lib/stdlib/src/digraph.erl#L307-L334
bjorng
Alternatively, you could specify you our own edge names when creating the edges. As long as there is only a single edge in each direction between each pair of vertices, the following should work:
stevensonmt
So that’s brilliant. I’m curious why that’s not the default behavior of
add_edge/3though? Implicitly naming an edge with{from, to}has to be more intuitive than whatever[:"$e" | N]is meant to convey.I also think it’s difficult to understand that this is possible from the docs for
add_edge/5because theedge()type is not documented. It’s also confusing to have edge “names” differ from edge “labels” and not document the “names” anywhere.jhogberg
The default edge names aren’t meant to convey anything: not giving them a name implies that you don’t care what they’re called.
The funny-looking names were most likely chosen because they’re more compact in memory and are unlikely to clash with user-named edges.
stevensonmt
Submitted pull request to hopefully clarify docs a bit.
bjorng
Using the
{from, to}naming scheme will not work in general, because the:digraphmodule supports having any number of distinct edges between each pair of vertices.stevensonmt
What is the utility of that feature? Is it to allow using labels to sort of classify connections in different schemas or something? Something like a graph of cars that includes vertices
Could have edges
{v1, v2} label: :toyota, {v1, v3} label: :yellow, {v3, v4} label: :yellow, {v3, v4} label: :ford?bjorng
I don’t know the original motivation for that feature, but one algorithm that needs it is Karger’s algorithm.