Describe a Monte Carlo algorithm for the Triangle Packing problem

Book: Parameterized Algorithms by Marek Cygan (free to download legally)

Chapter about Multivariate polynomials on Page 353 (In the book not the pdf) Question 10.19:

Describe a Monte Carlo $2^{3k}n^{O(1)}$ – time polynomial-space algorithm for the Triangle Packing problem: given a graph $ G $ and a number $ k in N $, decide whether $ G $ contains
$ k $ disjoint triangles (subgraphs isomorphic to K3).

Hint 10.19 in Page 354: Use a similar approach as in the $2^{k}n^{O(1)}$ -time algorithm for $k$-path from this
chapter (Page 333).

I tried to solve the problem using the hint, but without success unfortunately, there are solutions to the book? I would be happy to get help if it can be solved even without official solutions of the book but it is important to solve it using the hint they brought in order to use the tools learned in the same chapter.

Thanks in advance.

algorithms – Do the following two CFGs describe the same language

Do the following two CFGs describe the same language

  1. S → aS | bS | ε
  2. S → aS | Sb | ε

Would the answer to this be no, because the order can’t be switched? bS and Sb are different. I’m a bit confused about how I would find out if they described the same language.

aws cli – Is there any rhyme or reason behind when to use list- and when to use describe- for the AWS CLI?

For the AWS CLI the right command is:

aws ec2 describe-key-pairs

But not:

aws ec2 describe-key-pairs

But there is:

aws ecs list-clusters

My current workflow is:

  1. Guess
  2. Get it wrong
  3. Change
  4. Get it wrong
  5. Look in the help
  6. Realize a made a typo like descrbe
  7. Go back to my first guess

But I wish I knew some reason to help choose between list-foo or describe-foo.

Is there a specific group of Adjectives that are used in Dungeons and Dragons to describe spells that get progressively better?

I know in Dungeons and Dragons there are a vast amount of Adjectives that describe spells that are documented (Minor, Major, Lesser, Greater) where specific words denote progressively better effects, but I’m having an issue finding a specific list of those adjectives. Does a list exist, or if a specific list doesn’t exist, is there a common link between spells and their adjectives / effectiveness?

I’m aware that the adjectives themselves originated in 2E, but the tradition seems to be carried to further editions of Dungeons and Dragons, and if there was some common link between the power of a spell and the adjective used to describe it, I’d very much like to know, as I think it would be useful to Dungeon Masters as a writing tool when designing their own spells and effects.

terminology – Is there a common industry term to describe moving a task down in priority to an undefined “later” time?

A note for the moderators: this question is looking for INDUSTRY terminology (like SCRUM, Spike, Big O, Visitor Patter, etc) terminology, not opinions about how I should speak.

Let’s say that in our ticketing system a task will involve doing A, B, C, and D.

While doing the task, I find that doing C will require too large an investment for now and is not very high priority.

I have been saying something like “Let’s do A, B, and D, but I think we should punt on C for now”.

I looked up “punt on” and it seems to mean only to “not do”, not to put off until later. At least that’s what the results in Google told me.

Am I using “punt on” wrong? Is there a better term for this?

terminology – Is there an INDUSTRY STANDARD term to describe moving a task down in priority to an undefined “later” time?

A note for the moderators: this question is looking INDUSTRY STANDARD (like SCRUM, Big O, Visitor Patter, etc) terminology, not opinions about how I should speak.

Let’s say that in our ticketing system a task will involve doing A, B, C, and D.

While doing the task, I find that doing C will require too large an investment for now and is not very high priority.

I have been saying something like “Let’s do A, B, and D, but I think we should punt on C for now”.

I looked up “punt on” and it seems to mean only to “not do”, not to put off until later. At least that’s what the results in Google told me.

Am I using “punt on” wrong? Is there a better term for this?

terminology – General term to describe the anti-pattern where the same concept is described in different ways?

Our codebase is old and very large. Over the years, many developers have worked on the code and frequently refered to the same concept inconsistently.

For example, we have a “number that uniquely identifies the study” or “Study ID”. This is refered to as studyNum, examId, Exam, StudyNo, StudyID, the odd StudyUID or just ID…the full list of variations, including variations in capitalisation, is tediously long! This makes searching difficult and the software harder to modify.

Is there a general software engineering term for this inconsistency/term creepage and the maintenance challenges that result?

(PS: Along with normal development work, I’m applying “Clean Code” (aka Robert Martin) principles to slowly tidy these up!)

guidelines – How to document or describe an ethically designed user interface or interaction pattern?

An article written by a company involved in developing software used in research talks about the concept of “ethically designed algorithms” which can be administered by an organisation that is akin to the “FDA of Algorithms” (Andrew Tutt, 2016).

The principles of ethically designed algorithms, as described in the article, embodies the following elements:

Responsibility

Make available externally visible avenues of redress for adverse
individual or societal effects of an algorithmic decision system, and
designate an internal role for the person who is responsible for the
timely remedy of such issues.

Explainability

Ensure that algorithmic decisions as well as any data driving those
decisions can be explained to end-users and other stakeholders in
non-technical terms.

Accuracy

Identify, log, and articulate sources of error and uncertainty
throughout the algorithm and its data sources so that expected and
worst case implications can be understood and inform mitigation
procedures.

Auditability

Enable interested third parties to probe, understand, and review the
behavior of the algorithm through disclosure of information that
enables monitoring, checking, or criticism, including through
provision of detailed documentation, technically suitable APIs, and
permissive terms of use.

Fairness

Ensure that algorithmic decisions do not create discriminatory or
unjust impacts when comparing across different demographics (e.g.
race, sex, etc).

Is there anything similar that has been developed for research in similar fields (e.g. Psychology or Medical Research) that is suitable for adaptation to UX design? Or does something like this already exist and is used?

UPDATE: with the updates to WCAG guidelines to make it more user friendly (especially in WCAG 3.0), are there also ways to include them as part of an accessibility audit/criteria? Is it possible to adopt a similar style or format for ethical design practices (if not include them as part of accessibility or inclusive design practices).

formal languages – Let $Sigma = {a, b}$ and $L = {aa, bb}$. Use set notation to describe $overline L$

Let $Sigma = {a, b}$ and $L = {aa, bb}$. Use set notation to describe $overline L$.

This is exercise 6 (page 28) from “An Introduction to Formal Languages and Automata” by Peter Linz. The author provides the following answer: $overline L = {lambda, a, b, ab, ba} cup { w in {a, b}^+ : |w|geq 3}$. Mine on the other hand is the following: $overline L = Sigma^* – L = {w in Sigma^* : w neq aa, w neq bb}$. Is my answer wrong? Thanks in advance.

ct.category theory – How do we describe the right adjoint?

I am interested in the category-theoretic description of trees (and operads?) and have started a course of study that will allow me to engage with these two (1, 2) manuscripts of Joachim Kock.

An essential prerequisite to the early portions of the manuscript involves an understanding of a pair of adjoint functors. The left adjoint is the change of basis functor $g^{ast}: mathbf{Set}_{/A} rightarrow mathbf{Set}_{/B}$ associated with the change of basis between sets $g: B rightarrow A$. I find it very easy to reason about the image of a bundle under the change of basis functor. This functor takes a bundle $f: X rightarrow A$ to the pullback of $f$ by $g$, which I can easily interpret in $mathbf{Set}_{/B}$ as the fibered product with the canonical projection $h: X times_{A} B rightarrow B$ given by $h: (x, b) mapsto b$.

Kock utilizes the right adjoint, which I have read is called the dependent product:
$$
(g^* dashv prod_g)
colon
mathbf{Set}_{/B}
stackrel{overset{g^* }{leftarrow}}{underset{prod_g}{to}}
mathbf{Set}_{/A}
,.
$$

I am trying to understand this functor, but am finding it very difficult. Are there any set-theoretic descriptions of the image of a bundle $f: X rightarrow B$ under $prod_g$ that would help me in this context?

Although I’ve only had a little exposure to it, the process of re-describing adjoint functors in the “internal language of their categories” (I hesitate to use this phrase here– I have seen it used in the literature of toposes and do not know its formal definition– perhaps I’ll just call this process reifying?) has proven very difficult for me. Are there any mental algorithms that offer any help? Are there a set of useful exercises I can undertake to develop the skill? Are there theorems I can study that will provide insight into the process?

It has struck me in the course of mulling over the problem that I would also like to know whether category-theorists even bother with reifying their constructions. Does this process have a name? Is it done often?