What Does It All Mean?
If you look in the code that calculates the complexity, you will see that it tries to calculate some figure of merit based on the inputs and outputs of the various blocks in the flowgraph. It looks to be trying to mimic some metric based on the well known Cyclomatic Complexity Ratio that is sometimes used in Software Engineering. It is clearly not looking into the blocks and, for instance: calculating the number of taps a filter has, latency, memory usage, CPU time, or anything like that.
Since the ‘Complexity’ metric doesn’t get a lot of press or discussion on the web, it would seem to be a neat thing to try, but perhaps of limited usefulness.
A flowgraph isn’t like pure code. It isn’t like you can poorly code a flowgraph to have more inputs or outputs than you need, resulting in an overly complex solution. You will probably always land on the minimum number of IO ports to begin with.
That being said - if you want to impress your friends with the “Minimum Complexity” then have a look at the calculation code and have at it.
https://github.com/gnuradio/gnuradio/blob/main/grc/core/utils/flow_graph_complexity.py
Perhaps you can come up with a “Drinking Game” to see who can come up with the minimum complexity flowgraph to receive NASA signals from Earth as you “while away the months” on that trip to Mars or something. What else will you have to do, anyway?
Bonus
There is one post on the web about the history of the "Flowgraph Complexity" - you can read it below,
No comments:
Post a Comment